Browse Source

优化IsMatch性能

陈国伟 3 years ago
parent
commit
82e51ab358

+ 3 - 3
FastGithub.Configuration/FastGithubConfig.cs

@@ -28,7 +28,7 @@ namespace FastGithub.Configuration
         {
             this.logger = logger;
             var opt = options.CurrentValue;
-             
+
             this.domainConfigs = ConvertDomainConfigs(opt.DomainConfigs);
             this.domainConfigCache = new ConcurrentDictionary<string, DomainConfig?>();
 
@@ -42,7 +42,7 @@ namespace FastGithub.Configuration
         private void Update(FastGithubOptions options)
         {
             try
-            { 
+            {
                 this.domainConfigs = ConvertDomainConfigs(options.DomainConfigs);
                 this.domainConfigCache = new ConcurrentDictionary<string, DomainConfig?>();
             }
@@ -74,7 +74,7 @@ namespace FastGithub.Configuration
         /// <returns></returns>
         public bool IsMatch(string domain)
         {
-            return this.domainConfigs.Keys.Any(item => item.IsMatch(domain));
+            return this.TryGetDomainConfig(domain, out _);
         }
 
         /// <summary>

+ 1 - 1
FastGithub.HttpServer/HttpProxyMiddleware.cs

@@ -105,7 +105,7 @@ namespace FastGithub.HttpServer
                 return new IPEndPoint(address, targetPort);
             }
 
-            if (this.fastGithubConfig.TryGetDomainConfig(targetHost, out _) == false)
+            if (this.fastGithubConfig.IsMatch(targetHost) == false)
             {
                 return new DnsEndPoint(targetHost, targetPort);
             }

+ 1 - 1
FastGithub/AppHostedService.cs

@@ -23,7 +23,7 @@ namespace FastGithub
 
         public Task StopAsync(CancellationToken cancellationToken)
         {
-            this.logger.LogInformation($"{nameof(FastGithub)}停止运行");
+            this.logger.LogInformation($"{nameof(FastGithub)}停止运行");
             return Task.CompletedTask;
         }
     }

+ 8 - 0
FastGithub/Startup.cs

@@ -4,6 +4,7 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Options;
 using System;
+using System.Threading.Tasks;
 
 namespace FastGithub
 {
@@ -59,6 +60,13 @@ namespace FastGithub
             {
                 appBuilder.UseRequestLogging();
                 appBuilder.UseHttpReverseProxy();
+
+                appBuilder.UseRouting();
+                appBuilder.UseEndpoints(endpoint => endpoint.MapFallback(context =>
+                {
+                    context.Response.Redirect("https://github.com/dotnetcore/FastGithub");
+                    return Task.CompletedTask;
+                }));
             });
         }
     }