소스 검색

Properly handle subnets in KnownProxies

Shadowghost 2 년 전
부모
커밋
34d8e531e0
1개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  1. 9 2
      Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs

+ 9 - 2
Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs

@@ -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)