66 lines
1.7 KiB
C#
66 lines
1.7 KiB
C#
using System;
|
|
using System.Net;
|
|
|
|
namespace FastGithub.Configuration
|
|
{
|
|
/// <summary>
|
|
/// 域名配置
|
|
/// </summary>
|
|
public record DomainConfig
|
|
{
|
|
/// <summary>
|
|
/// 是否发送SNI
|
|
/// </summary>
|
|
public bool TlsSni { get; init; }
|
|
|
|
/// <summary>
|
|
/// 自定义SNI值的表达式
|
|
/// </summary>
|
|
public string? TlsSniPattern { get; init; }
|
|
|
|
/// <summary>
|
|
/// 是否忽略服务器证书域名不匹配
|
|
/// 当不发送SNI时服务器可能发回域名不匹配的证书
|
|
/// </summary>
|
|
public bool TlsIgnoreNameMismatch { get; init; }
|
|
|
|
/// <summary>
|
|
/// 使用的ip地址
|
|
/// </summary>
|
|
public IPAddress? IPAddress { get; init; }
|
|
|
|
/// <summary>
|
|
/// 请求超时时长
|
|
/// </summary>
|
|
public TimeSpan? Timeout { get; init; }
|
|
|
|
/// <summary>
|
|
/// 目的地
|
|
/// 格式为相对或绝对uri
|
|
/// </summary>
|
|
public Uri? Destination { get; init; }
|
|
|
|
/// <summary>
|
|
/// 自定义响应
|
|
/// </summary>
|
|
public ResponseConfig? Response { get; init; }
|
|
|
|
/// <summary>
|
|
/// 获取TlsSniPattern
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public TlsSniPattern GetTlsSniPattern()
|
|
{
|
|
if (this.TlsSni == false)
|
|
{
|
|
return Configuration.TlsSniPattern.None;
|
|
}
|
|
if (string.IsNullOrEmpty(this.TlsSniPattern))
|
|
{
|
|
return Configuration.TlsSniPattern.Domain;
|
|
}
|
|
return new TlsSniPattern(this.TlsSniPattern);
|
|
}
|
|
}
|
|
}
|