From 33eb6ff6b0a2ddcff3962bb07d834a4c3888da61 Mon Sep 17 00:00:00 2001 From: xljiulang <366193849@qq.com> Date: Sun, 18 Jul 2021 01:53:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=94=99=E8=AF=AF=E5=93=8D?= =?UTF-8?q?=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.ReverseProxy/DomainResolver.cs | 6 ++++-- FastGithub.ReverseProxy/NoSniHttpClientHanlder.cs | 10 +++++----- FastGithub.ReverseProxy/ReverseProxyMiddleware.cs | 13 ++++++++++--- FastGithub.ReverseProxy/SniHttpClientHanlder.cs | 4 ++-- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/FastGithub.ReverseProxy/DomainResolver.cs b/FastGithub.ReverseProxy/DomainResolver.cs index 448dd57..49de55e 100644 --- a/FastGithub.ReverseProxy/DomainResolver.cs +++ b/FastGithub.ReverseProxy/DomainResolver.cs @@ -35,6 +35,7 @@ namespace FastGithub.ReverseProxy /// /// /// + /// public async Task ResolveAsync(string domain, CancellationToken cancellationToken) { // 缓存以避免做不必要的并发查询 @@ -53,6 +54,7 @@ namespace FastGithub.ReverseProxy /// /// /// + /// private async Task LookupAsync(string domain, CancellationToken cancellationToken) { try @@ -70,7 +72,7 @@ namespace FastGithub.ReverseProxy // 如果解析到的ip为本机ip,会产生反向代理请求死循环 if (address.Equals(IPAddress.Loopback)) { - throw new FastGithubException($"dns({dns}):解析{domain}被干扰为{address}"); + throw new FastGithubException($"dns({dns})被污染:解析{domain}为{address}"); } return address; } @@ -81,7 +83,7 @@ namespace FastGithub.ReverseProxy catch (Exception ex) { var dns = this.fastGithubConfig.PureDns; - throw new FastGithubException($"dns({dns}):{ex.Message}", ex); + throw new FastGithubException($"dns({dns})服务器异常:{ex.Message}", ex); } } } diff --git a/FastGithub.ReverseProxy/NoSniHttpClientHanlder.cs b/FastGithub.ReverseProxy/NoSniHttpClientHanlder.cs index b6a1dab..7a8c898 100644 --- a/FastGithub.ReverseProxy/NoSniHttpClientHanlder.cs +++ b/FastGithub.ReverseProxy/NoSniHttpClientHanlder.cs @@ -13,18 +13,18 @@ namespace FastGithub.ReverseProxy /// class NoSniHttpClientHanlder : DelegatingHandler { - private readonly DomainResolver trustedDomainResolver; + private readonly DomainResolver domainResolver; private readonly ILogger logger; /// /// 不发送NoSni的HttpClientHandler /// - /// + /// public NoSniHttpClientHanlder( - DomainResolver trustedDomainResolver, + DomainResolver domainResolver, ILogger logger) { - this.trustedDomainResolver = trustedDomainResolver; + this.domainResolver = domainResolver; this.logger = logger; this.InnerHandler = CreateNoneSniHttpHandler(); } @@ -73,7 +73,7 @@ namespace FastGithub.ReverseProxy var uri = request.RequestUri; if (uri != null && uri.HostNameType == UriHostNameType.Dns) { - var address = await this.trustedDomainResolver.ResolveAsync(uri.Host, cancellationToken); + var address = await this.domainResolver.ResolveAsync(uri.Host, cancellationToken); this.logger.LogInformation($"[{address}--NoSni->{uri.Host}]"); var builder = new UriBuilder(uri) diff --git a/FastGithub.ReverseProxy/ReverseProxyMiddleware.cs b/FastGithub.ReverseProxy/ReverseProxyMiddleware.cs index 6e52e51..467c28a 100644 --- a/FastGithub.ReverseProxy/ReverseProxyMiddleware.cs +++ b/FastGithub.ReverseProxy/ReverseProxyMiddleware.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; using System; using System.Net.Http; using System.Threading.Tasks; @@ -15,17 +16,20 @@ namespace FastGithub.ReverseProxy private readonly SniHttpClientHanlder sniHttpClientHanlder; private readonly NoSniHttpClientHanlder noSniHttpClientHanlder; private readonly FastGithubConfig fastGithubConfig; + private readonly ILogger logger; public ReverseProxyMiddleware( IHttpForwarder httpForwarder, SniHttpClientHanlder sniHttpClientHanlder, NoSniHttpClientHanlder noSniHttpClientHanlder, - FastGithubConfig fastGithubConfig) + FastGithubConfig fastGithubConfig, + ILogger logger) { this.httpForwarder = httpForwarder; this.sniHttpClientHanlder = sniHttpClientHanlder; this.noSniHttpClientHanlder = noSniHttpClientHanlder; this.fastGithubConfig = fastGithubConfig; + this.logger = logger; } /// @@ -63,7 +67,7 @@ namespace FastGithub.ReverseProxy /// /// /// - private static string GetDestinationPrefix(string host, Uri? destination) + private string GetDestinationPrefix(string host, Uri? destination) { var defaultValue = $"https://{host}/"; if (destination == null) @@ -72,7 +76,10 @@ namespace FastGithub.ReverseProxy } var baseUri = new Uri(defaultValue); - return new Uri(baseUri, destination).ToString(); + var result = new Uri(baseUri, destination).ToString(); + this.logger.LogInformation($"[{defaultValue}->{result}]"); + + return result; } /// diff --git a/FastGithub.ReverseProxy/SniHttpClientHanlder.cs b/FastGithub.ReverseProxy/SniHttpClientHanlder.cs index c909a5f..9893a22 100644 --- a/FastGithub.ReverseProxy/SniHttpClientHanlder.cs +++ b/FastGithub.ReverseProxy/SniHttpClientHanlder.cs @@ -12,7 +12,7 @@ namespace FastGithub.ReverseProxy class SniHttpClientHanlder : DelegatingHandler { private readonly DomainResolver domainResolver; - private readonly ILogger logger; + private readonly ILogger logger; /// /// 携带Sni的HttpClientHandler @@ -20,7 +20,7 @@ namespace FastGithub.ReverseProxy /// public SniHttpClientHanlder( DomainResolver domainResolver, - ILogger logger) + ILogger logger) { this.domainResolver = domainResolver; this.logger = logger;