diff --git a/Directory.Build.props b/Directory.Build.props index 794a16d..16339cb 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,6 +6,7 @@ https://github.com/dotnetcore/FastGithub win-x64 net5.0;net6.0 + true 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 diff --git a/FastGithub.ReverseProxy/RequestLoggingMilldeware.cs b/FastGithub.ReverseProxy/RequestLoggingMilldeware.cs index e838031..38423d2 100644 --- a/FastGithub.ReverseProxy/RequestLoggingMilldeware.cs +++ b/FastGithub.ReverseProxy/RequestLoggingMilldeware.cs @@ -10,15 +10,15 @@ namespace FastGithub.ReverseProxy /// /// 请求日志中间件 /// - sealed class RequestLoggingMilldeware + sealed class RequestLoggingMiddleware { - private readonly ILogger logger; + private readonly ILogger logger; /// /// 请求日志中间件 /// /// - public RequestLoggingMilldeware(ILogger logger) + public RequestLoggingMiddleware(ILogger logger) { this.logger = logger; } @@ -31,8 +31,7 @@ namespace FastGithub.ReverseProxy /// public async Task InvokeAsync(HttpContext context, RequestDelegate next) { - var stopwatch = new Stopwatch(); - stopwatch.Start(); + var stopwatch = Stopwatch.StartNew(); try { diff --git a/FastGithub.ReverseProxy/ReverseProxyApplicationBuilderExtensions.cs b/FastGithub.ReverseProxy/ReverseProxyApplicationBuilderExtensions.cs index be7febd..8fcad59 100644 --- a/FastGithub.ReverseProxy/ReverseProxyApplicationBuilderExtensions.cs +++ b/FastGithub.ReverseProxy/ReverseProxyApplicationBuilderExtensions.cs @@ -16,8 +16,8 @@ namespace FastGithub /// public static IApplicationBuilder UseRequestLogging(this IApplicationBuilder app) { - var middlware = app.ApplicationServices.GetRequiredService(); - return app.Use(next => context => middlware.InvokeAsync(context, next)); + var middleware = app.ApplicationServices.GetRequiredService(); + return app.Use(next => context => middleware.InvokeAsync(context, next)); } /// diff --git a/FastGithub.ReverseProxy/ReverseProxyServiceCollectionExtensions.cs b/FastGithub.ReverseProxy/ReverseProxyServiceCollectionExtensions.cs index 1e1bddd..ea7bb81 100644 --- a/FastGithub.ReverseProxy/ReverseProxyServiceCollectionExtensions.cs +++ b/FastGithub.ReverseProxy/ReverseProxyServiceCollectionExtensions.cs @@ -19,7 +19,7 @@ namespace FastGithub .AddMemoryCache() .AddHttpForwarder() .AddSingleton() - .AddSingleton() + .AddSingleton() .AddSingleton(); } } diff --git a/FastGithub/Views/_ViewStart.cshtml b/FastGithub/Views/_ViewStart.cshtml index a5f1004..5f28270 100644 --- a/FastGithub/Views/_ViewStart.cshtml +++ b/FastGithub/Views/_ViewStart.cshtml @@ -1,3 +1 @@ -@{ - Layout = "_Layout"; -} + \ No newline at end of file