From 1b40882dc351e576407e60928ce13b03f63e7767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Fri, 13 Aug 2021 09:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E5=8F=91=E6=AD=BB=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E6=A3=80=E6=B5=8B(#27)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.DomainResolve/DomainResolver.cs | 6 ------ FastGithub.Http/HttpClient.cs | 24 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/FastGithub.DomainResolve/DomainResolver.cs b/FastGithub.DomainResolve/DomainResolver.cs index 2dd894f..ee1d2a5 100644 --- a/FastGithub.DomainResolve/DomainResolver.cs +++ b/FastGithub.DomainResolve/DomainResolver.cs @@ -97,12 +97,6 @@ namespace FastGithub.DomainResolve throw new FastGithubException($"dns{dns}解析不到{domain}的ip"); } - // 不允许域名解析指向FastGithub自身造成消息死循环 - if (LocalMachine.ContainsIPAddress(address) == true) - { - throw new FastGithubException($"dns{dns}被污染,解析{domain}为{address}"); - } - this.logger.LogInformation($"[{domain}->{address}]"); return address; } diff --git a/FastGithub.Http/HttpClient.cs b/FastGithub.Http/HttpClient.cs index 2ff0389..910fb19 100644 --- a/FastGithub.Http/HttpClient.cs +++ b/FastGithub.Http/HttpClient.cs @@ -1,6 +1,9 @@ using FastGithub.Configuration; using FastGithub.DomainResolve; using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; namespace FastGithub.Http { @@ -9,6 +12,11 @@ namespace FastGithub.Http /// public class HttpClient : HttpMessageInvoker { + /// + /// 插入的UserAgent标记 + /// + private readonly static ProductInfoHeaderValue userAgent = new(new ProductHeaderValue(nameof(FastGithub), "1.0")); + /// /// http客户端 /// @@ -28,5 +36,21 @@ namespace FastGithub.Http : base(handler, disposeHandler) { } + + /// + /// 发送请求 + /// + /// + /// + /// + public override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + if (request.Headers.UserAgent.Contains(userAgent)) + { + throw new FastGithubException($"由于{request.RequestUri}实际指向了{nameof(FastGithub)}自身,{nameof(FastGithub)}已中断本次转发"); + } + request.Headers.UserAgent.Add(userAgent); + return base.SendAsync(request, cancellationToken); + } } } \ No newline at end of file