using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Runtime.Versioning; using System.Threading; using System.Threading.Tasks; namespace FastGithub.Dns { /// /// dns投毒后台服务 /// [SupportedOSPlatform("windows")] sealed class DnsDnsPoisoningHostedService : BackgroundService { private readonly DnsPoisoningServer dnsPoisoningServer; private readonly IEnumerable conflictValidators; /// /// dns后台服务 /// /// /// public DnsDnsPoisoningHostedService( DnsPoisoningServer dnsPoisoningServer, IEnumerable conflictValidators) { this.dnsPoisoningServer = dnsPoisoningServer; this.conflictValidators = conflictValidators; } /// /// dns后台 /// /// /// protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await Task.Yield(); if (OperatingSystem.IsWindows()) { foreach (var item in this.conflictValidators) { await item.ValidateAsync(); } this.dnsPoisoningServer.DnsPoisoning(stoppingToken); } } } }