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)}无法加速相关域名");
}
}
}
}
}