2
0
陈国伟 4 жил өмнө
parent
commit
1b40882dc3

+ 0 - 6
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;
         }

+ 24 - 0
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
     /// </summary>
     public class HttpClient : HttpMessageInvoker
     {
+        /// <summary>
+        /// 插入的UserAgent标记
+        /// </summary>
+        private readonly static ProductInfoHeaderValue userAgent = new(new ProductHeaderValue(nameof(FastGithub), "1.0"));
+
         /// <summary>
         /// http客户端
         /// </summary>
@@ -28,5 +36,21 @@ namespace FastGithub.Http
             : base(handler, disposeHandler)
         {
         }
+
+        /// <summary>
+        /// 发送请求
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public override Task<HttpResponseMessage> 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);
+        }
     }
 }