FastGithub/FastGithub.Configuration/DnsConfig.cs
2021-07-30 00:13:57 +08:00

48 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Diagnostics.CodeAnalysis;
using System.Net;
namespace FastGithub.Configuration
{
/// <summary>
/// dns配置
/// </summary>
public class DnsConfig
{
/// <summary>
/// IP地址
/// </summary>
[AllowNull]
public string IPAddress { get; set; }
/// <summary>
/// 端口
/// </summary>
public int Port { get; set; } = 53;
/// <summary>
/// 转换为IPEndPoint
/// </summary>
/// <returns></returns>
/// <exception cref="FastGithubException"></exception>
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);
}
public override string ToString()
{
return $"{this.IPAddress}:{this.Port}";
}
}
}