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)); } } }