using System.Diagnostics.CodeAnalysis; using System.Net; namespace FastGithub.Configuration { /// /// dns配置 /// public record DnsConfig { /// /// IP地址 /// [AllowNull] public string IPAddress { get; init; } /// /// 端口 /// public int Port { get; init; } = 53; /// /// 转换为IPEndPoint /// /// /// public IPEndPoint ToIPEndPoint() { if (System.Net.IPAddress.TryParse(this.IPAddress, out var address) == false) { throw new FastGithubException($"无效的ip:{this.IPAddress}"); } if (this.Port == 53 && LocalMachine.ContainsIPAddress(address)) { throw new FastGithubException($"配置的dns值不能指向{nameof(FastGithub)}自身:{this.IPAddress}:{this.Port}"); } return new IPEndPoint(address, this.Port); } } }