Apply review suggestions and fix build

This commit is contained in:
Shadowghost 2022-07-20 11:47:48 +02:00
parent 2043a33f81
commit a492082f4e
4 changed files with 19 additions and 21 deletions

View File

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

View File

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

View File

@ -13,6 +13,10 @@ namespace MediaBrowser.Common.Net
/// </summary> /// </summary>
public static class NetworkExtensions 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> /// <summary>
/// Returns true if the IPAddress contains an IP6 Local link address. /// Returns true if the IPAddress contains an IP6 Local link address.
/// </summary> /// </summary>
@ -227,12 +231,8 @@ namespace MediaBrowser.Common.Net
if (hosts.Length <= 2) 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 // Is hostname or hostname:port
if (Regex.IsMatch(hosts[0], pattern)) if (_fqdnRegex.IsMatch(hosts[0]))
{ {
try try
{ {

View File

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