FastGithub/FastGithub.Scanner/GithubDnsFlushService.cs
2021-06-24 13:53:02 +08:00

48 lines
1.6 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 Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
namespace FastGithub.Scanner
{
[Service(ServiceLifetime.Singleton)]
sealed class GithubDnsFlushService
{
private readonly ILogger<GithubDnsFlushService> logger;
private readonly IOptionsMonitor<GithubLookupFactoryOptions> options;
[SupportedOSPlatform("windows")]
[DllImport("dnsapi.dll", EntryPoint = "DnsFlushResolverCacheEntry_A", CharSet = CharSet.Ansi)]
private static extern int DnsFlushResolverCacheEntry(string hostName);
public GithubDnsFlushService(
ILogger<GithubDnsFlushService> logger,
IOptionsMonitor<GithubLookupFactoryOptions> options)
{
this.logger = logger;
this.options = options;
}
public void FlushGithubResolverCache()
{
if (OperatingSystem.IsWindows())
{
try
{
foreach (var domain in this.options.CurrentValue.Domains)
{
DnsFlushResolverCacheEntry(domain);
}
this.logger.LogInformation($"刷新本机相关域名的dns缓存成功");
}
catch (Exception ex)
{
this.logger.LogWarning($"刷新本机相关域名的dns缓存失败{ex.Message}");
}
}
}
}
}