Properly handle subnets in KnownProxies

This commit is contained in:
Shadowghost 2022-07-20 09:48:20 +02:00
parent 64ffd5fd95
commit 34d8e531e0

View file

@ -182,7 +182,7 @@ namespace Jellyfin.Server.Extensions
}
/// <summary>
/// Extension method for adding the jellyfin API to the service collection.
/// Extension method for adding the Jellyfin API to the service collection.
/// </summary>
/// <param name="serviceCollection">The service collection.</param>
/// <param name="pluginAssemblies">An IEnumerable containing all plugin assemblies with API controllers.</param>
@ -335,7 +335,7 @@ namespace Jellyfin.Server.Extensions
}
/// <summary>
/// Sets up the proxy configuration based on the addresses in <paramref name="allowedProxies"/>.
/// Sets up the proxy configuration based on the addresses/subnets in <paramref name="allowedProxies"/>.
/// </summary>
/// <param name="config">The <see cref="NetworkConfiguration"/> containing the config settings.</param>
/// <param name="allowedProxies">The string array to parse.</param>
@ -348,6 +348,13 @@ namespace Jellyfin.Server.Extensions
{
AddIpAddress(config, options, addr, addr.AddressFamily == AddressFamily.InterNetwork ? 32 : 128);
}
else if (NetworkExtensions.TryParseSubnets(new[] { allowedProxies[i] }, out var subnets))
{
for (var j = 0; j < subnets.Count; j++)
{
AddIpAddress(config, options, subnets[j].Prefix, subnets[j].PrefixLength);
}
}
else if (NetworkExtensions.TryParseHost(allowedProxies[i], out var host))
{
foreach (var address in host)