2
0

DomainConfig.cs 1.7 KB

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