🐛 Fix known proxies
This commit is contained in:
45
DysonNetwork.Shared/Http/KnownProxiesConfiguration.cs
Normal file
45
DysonNetwork.Shared/Http/KnownProxiesConfiguration.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using System.Net;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using IPNetwork = Microsoft.AspNetCore.HttpOverrides.IPNetwork;
|
||||
|
||||
namespace DysonNetwork.Shared.Http;
|
||||
|
||||
public static class KnownProxiesConfiguration
|
||||
{
|
||||
public static WebApplication ConfigureForwardedHeaders(this WebApplication app, IConfiguration configuration)
|
||||
{
|
||||
var knownProxiesSection = configuration.GetSection("KnownProxies");
|
||||
var forwardedHeadersOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All };
|
||||
|
||||
if (knownProxiesSection.Exists())
|
||||
{
|
||||
var proxyAddresses = knownProxiesSection.Get<string[]>();
|
||||
if (proxyAddresses != null)
|
||||
{
|
||||
foreach (var proxy in proxyAddresses)
|
||||
{
|
||||
if (IPAddress.TryParse(proxy, out var ipAddress))
|
||||
{
|
||||
forwardedHeadersOptions.KnownProxies.Add(ipAddress);
|
||||
}
|
||||
else if (IPNetwork.TryParse(proxy, out var ipNetwork))
|
||||
{
|
||||
forwardedHeadersOptions.KnownNetworks.Add(ipNetwork);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (forwardedHeadersOptions.KnownProxies.Count == 0 && forwardedHeadersOptions.KnownNetworks.Count == 0)
|
||||
{
|
||||
forwardedHeadersOptions.KnownProxies.Add(IPAddress.Any);
|
||||
forwardedHeadersOptions.KnownProxies.Add(IPAddress.IPv6Any);
|
||||
}
|
||||
|
||||
app.UseForwardedHeaders(forwardedHeadersOptions);
|
||||
|
||||
return app;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user