25 lines
757 B
C#
25 lines
757 B
C#
using System.Net;
|
|
using Microsoft.AspNetCore.HttpOverrides;
|
|
|
|
namespace FinalFactory.Rendezvous.Server.Abuse;
|
|
|
|
internal static class TrustedProxyForwarding
|
|
{
|
|
public static bool IsEnabled(AbuseProtectionOptions options) =>
|
|
options.TrustedProxyAddresses is { Length: > 0 };
|
|
|
|
public static void Configure(
|
|
ForwardedHeadersOptions forwarded,
|
|
AbuseProtectionOptions abuse)
|
|
{
|
|
forwarded.ForwardedHeaders = ForwardedHeaders.XForwardedFor;
|
|
forwarded.ForwardLimit = 1;
|
|
forwarded.KnownProxies.Clear();
|
|
forwarded.KnownIPNetworks.Clear();
|
|
foreach (string address in abuse.TrustedProxyAddresses ?? [])
|
|
{
|
|
forwarded.KnownProxies.Add(IPAddress.Parse(address));
|
|
}
|
|
}
|
|
}
|