DomainConfig.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. namespace FastGithub.Configuration
  3. {
  4. /// <summary>
  5. /// 域名配置
  6. /// </summary>
  7. public record DomainConfig
  8. {
  9. /// <summary>
  10. /// 是否发送SNI
  11. /// </summary>
  12. public bool TlsSni { get; init; }
  13. /// <summary>
  14. /// 自定义SNI值的表达式
  15. /// </summary>
  16. public string? TlsSniPattern { get; init; }
  17. /// <summary>
  18. /// 是否忽略服务器证书域名不匹配
  19. /// 当不发送SNI时服务器可能发回域名不匹配的证书
  20. /// </summary>
  21. public bool TlsIgnoreNameMismatch { get; init; }
  22. /// <summary>
  23. /// 使用的ip地址
  24. /// </summary>
  25. public string? IPAddress { get; init; }
  26. /// <summary>
  27. /// 请求超时时长
  28. /// </summary>
  29. public TimeSpan? Timeout { get; init; }
  30. /// <summary>
  31. /// 目的地
  32. /// 格式为相对或绝对uri
  33. /// </summary>
  34. public Uri? Destination { get; init; }
  35. /// <summary>
  36. /// 自定义响应
  37. /// </summary>
  38. public ResponseConfig? Response { get; init; }
  39. /// <summary>
  40. /// 获取TlsSniPattern
  41. /// </summary>
  42. /// <returns></returns>
  43. public TlsSniPattern GetTlsSniPattern()
  44. {
  45. if (this.TlsSni == false)
  46. {
  47. return Configuration.TlsSniPattern.None;
  48. }
  49. if (string.IsNullOrEmpty(this.TlsSniPattern))
  50. {
  51. return Configuration.TlsSniPattern.Domain;
  52. }
  53. return new TlsSniPattern(this.TlsSniPattern);
  54. }
  55. }
  56. }