Explorar o código

Apply review suggestions and fix build

Shadowghost %!s(int64=2) %!d(string=hai) anos
pai
achega
a492082f4e

+ 5 - 0
Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs

@@ -372,6 +372,11 @@ namespace Jellyfin.Server.Extensions
                 return;
             }
 
+            if (addr.IsIPv4MappedToIPv6)
+            {
+                addr = addr.MapToIPv4();
+            }
+
             if (prefixLength == 32)
             {
                 options.KnownProxies.Add(addr);

+ 5 - 12
MediaBrowser.Common/Net/IPData.cs

@@ -14,13 +14,12 @@ namespace MediaBrowser.Common.Net
         /// </summary>
         /// <param name="address">An <see cref="IPAddress"/>.</param>
         /// <param name="subnet">The <see cref="IPNetwork"/>.</param>
-        public IPData(
-            IPAddress address,
-            IPNetwork? subnet)
+        /// <param name="name">The object's name.</param>
+        public IPData(IPAddress address, IPNetwork? subnet, string name)
         {
             Address = address;
             Subnet = subnet ?? (address.AddressFamily == AddressFamily.InterNetwork ? new IPNetwork(address, 32) : new IPNetwork(address, 128));
-            Name = string.Empty;
+            Name = name;
         }
 
         /// <summary>
@@ -28,15 +27,9 @@ namespace MediaBrowser.Common.Net
         /// </summary>
         /// <param name="address">An <see cref="IPAddress"/>.</param>
         /// <param name="subnet">The <see cref="IPNetwork"/>.</param>
-        /// <param name="name">The object's name.</param>
-        public IPData(
-            IPAddress address,
-            IPNetwork? subnet,
-            string name)
+        public IPData(IPAddress address, IPNetwork? subnet)
+            : this(address, subnet, string.Empty)
         {
-            Address = address;
-            Subnet = subnet ?? (address.AddressFamily == AddressFamily.InterNetwork ? new IPNetwork(address, 32) : new IPNetwork(address, 128));
-            Name = name;
         }
 
         /// <summary>

+ 5 - 5
MediaBrowser.Common/Net/NetworkExtensions.cs

@@ -13,6 +13,10 @@ namespace MediaBrowser.Common.Net
     /// </summary>
     public static class NetworkExtensions
     {
+        // Use regular expression as CheckHostName isn't RFC5892 compliant.
+        // Modified from gSkinner's expression at https://stackoverflow.com/questions/11809631/fully-qualified-domain-name-validation
+        private static readonly Regex _fqdnRegex = new Regex(@"(?im)^(?!:\/\/)(?=.{1,255}$)((.{1,63}\.){0,127}(?![0-9]*$)[a-z0-9-]+\.?)(:(\d){1,5}){0,1}$");
+
         /// <summary>
         /// Returns true if the IPAddress contains an IP6 Local link address.
         /// </summary>
@@ -227,12 +231,8 @@ namespace MediaBrowser.Common.Net
 
             if (hosts.Length <= 2)
             {
-                // Use regular expression as CheckHostName isn't RFC5892 compliant.
-                // Modified from gSkinner's expression at https://stackoverflow.com/questions/11809631/fully-qualified-domain-name-validation
-                string pattern = @"(?im)^(?!:\/\/)(?=.{1,255}$)((.{1,63}\.){0,127}(?![0-9]*$)[a-z0-9-]+\.?)(:(\d){1,5}){0,1}$";
-
                 // Is hostname or hostname:port
-                if (Regex.IsMatch(hosts[0], pattern))
+                if (_fqdnRegex.IsMatch(hosts[0]))
                 {
                     try
                     {

+ 4 - 4
tests/Jellyfin.Server.Tests/ParseNetworkTests.cs

@@ -21,9 +21,9 @@ namespace Jellyfin.Server.Tests
             data.Add(
                 true,
                 true,
-                new string[] { "192.168.t", "127.0.0.1", "1234.1232.12.1234" },
-                new IPAddress[] { IPAddress.Loopback.MapToIPv6() },
-                Array.Empty<IPNetwork>());
+                new string[] { "192.168.t", "127.0.0.1", "::1", "1234.1232.12.1234" },
+                new IPAddress[] { IPAddress.Loopback, },
+                new IPNetwork[] { new IPNetwork(IPAddress.IPv6Loopback, 128) });
 
             data.Add(
                 true,
@@ -64,7 +64,7 @@ namespace Jellyfin.Server.Tests
                 true,
                 true,
                 new string[] { "localhost" },
-                new IPAddress[] { IPAddress.Loopback.MapToIPv6() },
+                new IPAddress[] { IPAddress.Loopback },
                 new IPNetwork[] { new IPNetwork(IPAddress.IPv6Loopback, 128) });
             return data;
         }