修复循环代理的问题
This commit is contained in:
parent
e2bd4dac50
commit
e060dbe57b
@ -68,13 +68,16 @@ namespace FastGithub
|
||||
{
|
||||
return listenOptions.UseHttps(https =>
|
||||
{
|
||||
const string defaultDomain = "github.com";
|
||||
var certs = new ConcurrentDictionary<string, X509Certificate2>();
|
||||
https.ServerCertificateSelector = (ctx, domain) => certs.GetOrAdd(domain ?? defaultDomain, CreateCert);
|
||||
https.ServerCertificateSelector = (ctx, domain) => certs.GetOrAdd(domain, CreateCert);
|
||||
});
|
||||
|
||||
X509Certificate2 CreateCert(string domain)
|
||||
{
|
||||
if (domain == string.Empty)
|
||||
{
|
||||
domain = "github.com";
|
||||
}
|
||||
var domains = new[] { domain };
|
||||
var validFrom = DateTime.Today.AddYears(-1);
|
||||
var validTo = DateTime.Today.AddYears(10);
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
using FastGithub.ReverseProxy;
|
||||
using FastGithub.Scanner;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Yarp.ReverseProxy.Forwarder;
|
||||
|
||||
namespace FastGithub
|
||||
@ -19,15 +24,22 @@ namespace FastGithub
|
||||
{
|
||||
var httpForwarder = app.ApplicationServices.GetRequiredService<IHttpForwarder>();
|
||||
var httpClientFactory = app.ApplicationServices.GetRequiredService<NoneSniHttpClientFactory>();
|
||||
var options = app.ApplicationServices.GetRequiredService<IOptionsMonitor<GithubLookupFactoryOptions>>();
|
||||
|
||||
app.Use(next => async context =>
|
||||
{
|
||||
var hostString = context.Request.Host;
|
||||
var port = hostString.Port ?? 443;
|
||||
var destinationPrefix = $"http://{hostString.Host}:{port}/";
|
||||
|
||||
var httpClient = httpClientFactory.CreateHttpClient();
|
||||
await httpForwarder.SendAsync(context, destinationPrefix, httpClient);
|
||||
var host = context.Request.Host.Host;
|
||||
if (options.CurrentValue.Domains.Contains(host) == false)
|
||||
{
|
||||
await context.Response.WriteAsJsonAsync(new { message = $"不支持以{host}访问" });
|
||||
}
|
||||
else
|
||||
{
|
||||
var port = context.Request.Host.Port ?? 443;
|
||||
var destinationPrefix = $"http://{host}:{port}/";
|
||||
var httpClient = httpClientFactory.CreateHttpClient();
|
||||
await httpForwarder.SendAsync(context, destinationPrefix, httpClient);
|
||||
}
|
||||
});
|
||||
|
||||
return app;
|
||||
|
||||
@ -6,7 +6,7 @@ namespace FastGithub.Scanner
|
||||
/// 域名
|
||||
/// </summary>
|
||||
[Options("Lookup")]
|
||||
sealed class GithubLookupFactoryOptions
|
||||
public class GithubLookupFactoryOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 反查的域名
|
||||
|
||||
Loading…
Reference in New Issue
Block a user