类型重命名
This commit is contained in:
parent
0f94f118ca
commit
81f6afdf8b
@ -13,28 +13,28 @@ namespace FastGithub.Dns
|
||||
/// <summary>
|
||||
/// dns后台服务
|
||||
/// </summary>
|
||||
sealed class DnsHostedService : BackgroundService
|
||||
sealed class DnsOverUdpHostedService : BackgroundService
|
||||
{
|
||||
private readonly DnsServer dnsServer;
|
||||
private readonly IEnumerable<IDnsValidator> dnsValidators;
|
||||
private readonly DnsOverUdpServer dnsOverUdpServer;
|
||||
private readonly IEnumerable<IConflictValidator> conflictValidators;
|
||||
private readonly IOptionsMonitor<FastGithubOptions> options;
|
||||
private readonly ILogger<DnsHostedService> logger;
|
||||
private readonly ILogger<DnsOverUdpHostedService> logger;
|
||||
|
||||
/// <summary>
|
||||
/// dns后台服务
|
||||
/// </summary>
|
||||
/// <param name="dnsServer"></param>
|
||||
/// <param name="dnsValidators"></param>
|
||||
/// <param name="dnsOverUdpServer"></param>
|
||||
/// <param name="conflictValidators"></param>
|
||||
/// <param name="options"></param>
|
||||
/// <param name="logger"></param>
|
||||
public DnsHostedService(
|
||||
DnsServer dnsServer,
|
||||
IEnumerable<IDnsValidator> dnsValidators,
|
||||
public DnsOverUdpHostedService(
|
||||
DnsOverUdpServer dnsOverUdpServer,
|
||||
IEnumerable<IConflictValidator> conflictValidators,
|
||||
IOptionsMonitor<FastGithubOptions> options,
|
||||
ILogger<DnsHostedService> logger)
|
||||
ILogger<DnsOverUdpHostedService> logger)
|
||||
{
|
||||
this.dnsServer = dnsServer;
|
||||
this.dnsValidators = dnsValidators;
|
||||
this.dnsOverUdpServer = dnsOverUdpServer;
|
||||
this.conflictValidators = conflictValidators;
|
||||
this.options = options;
|
||||
this.logger = logger;
|
||||
|
||||
@ -54,14 +54,14 @@ namespace FastGithub.Dns
|
||||
/// <returns></returns>
|
||||
public override async Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var port = this.options.CurrentValue.Listen.DnsPort;
|
||||
this.dnsServer.Bind(IPAddress.Any, port);
|
||||
var dnsPort = this.options.CurrentValue.Listen.DnsPort;
|
||||
this.dnsOverUdpServer.Bind(IPAddress.Any, dnsPort);
|
||||
this.logger.LogInformation("DNS服务启动成功");
|
||||
|
||||
const int DNS_PORT = 53;
|
||||
if (port != DNS_PORT)
|
||||
if (dnsPort != DNS_PORT)
|
||||
{
|
||||
this.logger.LogWarning($"由于使用了非标准DNS端口{port},你需要将{nameof(FastGithub)}设置为标准DNS的上游");
|
||||
this.logger.LogWarning($"由于使用了非标准DNS端口{dnsPort},你需要将{nameof(FastGithub)}设置为标准DNS的上游");
|
||||
}
|
||||
else if (OperatingSystem.IsWindows())
|
||||
{
|
||||
@ -85,7 +85,7 @@ namespace FastGithub.Dns
|
||||
this.logger.LogWarning($"不支持自动设置本机DNS,请手工添加{IPAddress.Loopback}做为连接网络的DNS的第一条记录");
|
||||
}
|
||||
|
||||
foreach (var item in this.dnsValidators)
|
||||
foreach (var item in this.conflictValidators)
|
||||
{
|
||||
await item.ValidateAsync();
|
||||
}
|
||||
@ -100,7 +100,7 @@ namespace FastGithub.Dns
|
||||
/// <returns></returns>
|
||||
protected override Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
return this.dnsServer.ListenAsync(stoppingToken);
|
||||
return this.dnsOverUdpServer.ListenAsync(stoppingToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -110,7 +110,7 @@ namespace FastGithub.Dns
|
||||
/// <returns></returns>
|
||||
public override Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
this.dnsServer.Dispose();
|
||||
this.dnsOverUdpServer.Dispose();
|
||||
this.logger.LogInformation("DNS服务已停止");
|
||||
|
||||
if (OperatingSystem.IsWindows())
|
||||
@ -12,10 +12,10 @@ namespace FastGithub.Dns
|
||||
/// <summary>
|
||||
/// dns服务器
|
||||
/// </summary>
|
||||
sealed class DnsServer : IDisposable
|
||||
sealed class DnsOverUdpServer : IDisposable
|
||||
{
|
||||
private readonly RequestResolver requestResolver;
|
||||
private readonly ILogger<DnsServer> logger;
|
||||
private readonly ILogger<DnsOverUdpServer> logger;
|
||||
private readonly Socket socket = new(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||
private readonly byte[] buffer = new byte[ushort.MaxValue];
|
||||
|
||||
@ -24,9 +24,9 @@ namespace FastGithub.Dns
|
||||
/// </summary>
|
||||
/// <param name="requestResolver"></param>
|
||||
/// <param name="logger"></param>
|
||||
public DnsServer(
|
||||
public DnsOverUdpServer(
|
||||
RequestResolver requestResolver,
|
||||
ILogger<DnsServer> logger)
|
||||
ILogger<DnsOverUdpServer> logger)
|
||||
{
|
||||
this.requestResolver = requestResolver;
|
||||
this.logger = logger;
|
||||
@ -10,28 +10,28 @@ using System.Threading.Tasks;
|
||||
namespace FastGithub.Dns
|
||||
{
|
||||
/// <summary>
|
||||
/// host文件配置验证器
|
||||
/// host文件冲突验证器
|
||||
/// </summary>
|
||||
sealed class HostsValidator : IDnsValidator
|
||||
sealed class HostsConflictValidator : IConflictValidator
|
||||
{
|
||||
private readonly FastGithubConfig fastGithubConfig;
|
||||
private readonly ILogger<HostsValidator> logger;
|
||||
private readonly ILogger<HostsConflictValidator> logger;
|
||||
|
||||
/// <summary>
|
||||
/// host文件配置验证器
|
||||
/// host文件冲突验证器
|
||||
/// </summary>
|
||||
/// <param name="fastGithubConfig"></param>
|
||||
/// <param name="logger"></param>
|
||||
public HostsValidator(
|
||||
public HostsConflictValidator(
|
||||
FastGithubConfig fastGithubConfig,
|
||||
ILogger<HostsValidator> logger)
|
||||
ILogger<HostsConflictValidator> logger)
|
||||
{
|
||||
this.fastGithubConfig = fastGithubConfig;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 验证host文件的域名解析配置
|
||||
/// 验证冲突
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task ValidateAsync()
|
||||
@ -3,12 +3,12 @@
|
||||
namespace FastGithub.Dns
|
||||
{
|
||||
/// <summary>
|
||||
/// Dns验证器
|
||||
/// Dns冲突验证器
|
||||
/// </summary>
|
||||
interface IDnsValidator
|
||||
interface IConflictValidator
|
||||
{
|
||||
/// <summary>
|
||||
/// 验证
|
||||
/// 验证冲突
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task ValidateAsync();
|
||||
@ -8,23 +8,23 @@ using System.Threading.Tasks;
|
||||
namespace FastGithub.Dns
|
||||
{
|
||||
/// <summary>
|
||||
/// 代理验证
|
||||
/// 代理冲突验证
|
||||
/// </summary>
|
||||
sealed class ProxyValidtor : IDnsValidator
|
||||
sealed class ProxyConflictValidtor : IConflictValidator
|
||||
{
|
||||
private readonly IOptions<FastGithubOptions> options;
|
||||
private readonly ILogger<ProxyValidtor> logger;
|
||||
private readonly ILogger<ProxyConflictValidtor> logger;
|
||||
|
||||
public ProxyValidtor(
|
||||
public ProxyConflictValidtor(
|
||||
IOptions<FastGithubOptions> options,
|
||||
ILogger<ProxyValidtor> logger)
|
||||
ILogger<ProxyConflictValidtor> logger)
|
||||
{
|
||||
this.options = options;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 验证是否使用了代理
|
||||
/// 验证冲突
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Task ValidateAsync()
|
||||
@ -17,11 +17,11 @@ namespace FastGithub
|
||||
public static IServiceCollection AddDnsServer(this IServiceCollection services)
|
||||
{
|
||||
services.TryAddSingleton<RequestResolver>();
|
||||
services.TryAddSingleton<DnsServer>();
|
||||
services.TryAddSingleton<DnsOverUdpServer>();
|
||||
services.TryAddSingleton<DnsOverHttpsMiddleware>();
|
||||
services.AddSingleton<IDnsValidator, HostsValidator>();
|
||||
services.AddSingleton<IDnsValidator, ProxyValidtor>();
|
||||
return services.AddHostedService<DnsHostedService>();
|
||||
services.AddSingleton<IConflictValidator, HostsConflictValidator>();
|
||||
services.AddSingleton<IConflictValidator, ProxyConflictValidtor>();
|
||||
return services.AddHostedService<DnsOverUdpHostedService>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,18 +8,18 @@ using System.Threading.Tasks;
|
||||
namespace FastGithub.ReverseProxy
|
||||
{
|
||||
/// <summary>
|
||||
/// github的ssh处理者
|
||||
/// github的ssh代理处理者
|
||||
/// </summary>
|
||||
sealed class GithubSshHandler : ConnectionHandler
|
||||
sealed class GithubSshProxyHandler : ConnectionHandler
|
||||
{
|
||||
private readonly IDomainResolver domainResolver;
|
||||
private readonly DnsEndPoint githubSshEndPoint = new("ssh.github.com", 443);
|
||||
|
||||
/// <summary>
|
||||
/// github的ssh处理者
|
||||
/// github的ssh代理处理者
|
||||
/// </summary>
|
||||
/// <param name="domainResolver"></param>
|
||||
public GithubSshHandler(IDomainResolver domainResolver)
|
||||
public GithubSshProxyHandler(IDomainResolver domainResolver)
|
||||
{
|
||||
this.domainResolver = domainResolver;
|
||||
}
|
||||
@ -82,7 +82,7 @@ namespace FastGithub
|
||||
}
|
||||
else
|
||||
{
|
||||
kestrel.Listen(IPAddress.Any, sshPort, listen => listen.UseConnectionHandler<GithubSshHandler>());
|
||||
kestrel.Listen(IPAddress.Any, sshPort, listen => listen.UseConnectionHandler<GithubSshProxyHandler>());
|
||||
logger.LogInformation("已监听github的ssh代理");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user