using DNS.Server; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.Threading; using System.Threading.Tasks; namespace FastGithub.Dns { /// /// dns后台服务 /// sealed class DnsHostedService : IHostedService { private readonly DnsServer dnsServer; private readonly ILogger logger; /// /// dns后台服务 /// /// /// /// public DnsHostedService( GithubRequestResolver githubRequestResolver, IOptions options, ILogger logger) { this.dnsServer = new DnsServer(githubRequestResolver, options.Value.UpStream); this.logger = logger; } /// /// 启动dns服务 /// /// /// public Task StartAsync(CancellationToken cancellationToken) { this.dnsServer.Listen(); this.logger.LogInformation("dns服务启用成功"); return Task.CompletedTask; } /// /// 停止dns服务 /// /// /// public Task StopAsync(CancellationToken cancellationToken) { this.dnsServer.Dispose(); this.logger.LogInformation("dns服务已终止"); return Task.CompletedTask; } } }