using FastGithub.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; using System.Net.Http; using System.Threading.Tasks; namespace FastGithub.Dns { /// /// 代理冲突验证 /// sealed class ProxyConflictValidtor : IConflictValidator { private readonly IOptions options; private readonly ILogger logger; public ProxyConflictValidtor( IOptions options, ILogger logger) { this.options = options; this.logger = logger; } /// /// 验证冲突 /// /// public Task ValidateAsync() { try { this.ValidateSystemProxy(); } catch (Exception) { } return Task.CompletedTask; } /// /// 验证代理 /// private void ValidateSystemProxy() { var systemProxy = HttpClient.DefaultProxy; if (systemProxy == null) { return; } foreach (var domain in this.options.Value.DomainConfigs.Keys) { var destination = new Uri($"https://{domain.Replace('*', 'a')}"); var proxyServer = systemProxy.GetProxy(destination); if (proxyServer != null) { this.logger.LogError($"由于系统配置了{proxyServer}代理{domain},{nameof(FastGithub)}无法加速相关域名"); } } } } }