mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-31 04:48:27 +01:00
Use new IPNetwork.TryParse function
This commit is contained in:
@@ -197,46 +197,29 @@ public static partial class NetworkUtils
|
||||
/// <returns><c>True</c> if parsing was successful.</returns>
|
||||
public static bool TryParseToSubnet(ReadOnlySpan<char> value, [NotNullWhen(true)] out IPNetwork? result, bool negated = false)
|
||||
{
|
||||
var splitString = value.Trim().Split('/');
|
||||
if (splitString.MoveNext())
|
||||
value = value.Trim();
|
||||
if (value.Contains('/'))
|
||||
{
|
||||
var ipBlock = splitString.Current;
|
||||
var address = IPAddress.None;
|
||||
if (negated && ipBlock.StartsWith("!") && IPAddress.TryParse(ipBlock[1..], out var tmpAddress))
|
||||
if (negated && value.StartsWith("!") && IPNetwork.TryParse(value[1..], out result))
|
||||
{
|
||||
address = tmpAddress;
|
||||
return true;
|
||||
}
|
||||
else if (!negated && IPAddress.TryParse(ipBlock, out tmpAddress))
|
||||
else if (!negated && IPNetwork.TryParse(value, out result))
|
||||
{
|
||||
address = tmpAddress;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (address != IPAddress.None)
|
||||
}
|
||||
else if (IPAddress.TryParse(value, out var address))
|
||||
{
|
||||
if (address.AddressFamily == AddressFamily.InterNetwork)
|
||||
{
|
||||
if (splitString.MoveNext())
|
||||
{
|
||||
var subnetBlock = splitString.Current;
|
||||
if (int.TryParse(subnetBlock, out var netmask))
|
||||
{
|
||||
result = new IPNetwork(address, netmask);
|
||||
return true;
|
||||
}
|
||||
else if (IPAddress.TryParse(subnetBlock, out var netmaskAddress))
|
||||
{
|
||||
result = new IPNetwork(address, NetworkUtils.MaskToCidr(netmaskAddress));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (address.AddressFamily == AddressFamily.InterNetwork)
|
||||
{
|
||||
result = address.Equals(IPAddress.Any) ? NetworkConstants.IPv4Any : new IPNetwork(address, NetworkConstants.MinimumIPv4PrefixSize);
|
||||
return true;
|
||||
}
|
||||
else if (address.AddressFamily == AddressFamily.InterNetworkV6)
|
||||
{
|
||||
result = address.Equals(IPAddress.IPv6Any) ? NetworkConstants.IPv6Any : new IPNetwork(address, NetworkConstants.MinimumIPv6PrefixSize);
|
||||
return true;
|
||||
}
|
||||
result = address.Equals(IPAddress.Any) ? NetworkConstants.IPv4Any : new IPNetwork(address, NetworkConstants.MinimumIPv4PrefixSize);
|
||||
return true;
|
||||
}
|
||||
else if (address.AddressFamily == AddressFamily.InterNetworkV6)
|
||||
{
|
||||
result = address.Equals(IPAddress.IPv6Any) ? NetworkConstants.IPv6Any : new IPNetwork(address, NetworkConstants.MinimumIPv6PrefixSize);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user