From 94a69c8a8bfbb9c99f93bc6057a23b74f9c41ac8 Mon Sep 17 00:00:00 2001 From: Cody Robibero Date: Sun, 3 Apr 2022 16:38:04 -0600 Subject: [PATCH] Merge pull request #7549 from cvium/fix_isinlocalnetwork (cherry picked from commit bdb85aeecf10feae62ec615c8d80f1b517b8a5d6) Signed-off-by: crobibero --- Jellyfin.Networking/Manager/NetworkManager.cs | 43 ++++++------------- MediaBrowser.Common/Net/IPObject.cs | 29 +------------ 2 files changed, 15 insertions(+), 57 deletions(-) diff --git a/Jellyfin.Networking/Manager/NetworkManager.cs b/Jellyfin.Networking/Manager/NetworkManager.cs index b16dc53903..4b7b87814c 100644 --- a/Jellyfin.Networking/Manager/NetworkManager.cs +++ b/Jellyfin.Networking/Manager/NetworkManager.cs @@ -463,6 +463,18 @@ namespace Jellyfin.Networking.Manager /// public bool IsInLocalNetwork(IPObject address) + { + return IsInLocalNetwork(address.Address); + } + + /// + public bool IsInLocalNetwork(string address) + { + return IPHost.TryParse(address, out IPHost ipHost) && IsInLocalNetwork(ipHost); + } + + /// + public bool IsInLocalNetwork(IPAddress address) { if (address == null) { @@ -481,36 +493,7 @@ namespace Jellyfin.Networking.Manager } // As private addresses can be redefined by Configuration.LocalNetworkAddresses - return address.IsLoopback() || (_lanSubnets.ContainsAddress(address) && !_excludedSubnets.ContainsAddress(address)); - } - - /// - public bool IsInLocalNetwork(string address) - { - if (IPHost.TryParse(address, out IPHost ep)) - { - return _lanSubnets.ContainsAddress(ep) && !_excludedSubnets.ContainsAddress(ep); - } - - return false; - } - - /// - public bool IsInLocalNetwork(IPAddress address) - { - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } - - // See conversation at https://github.com/jellyfin/jellyfin/pull/3515. - if (TrustAllIP6Interfaces && address.AddressFamily == AddressFamily.InterNetworkV6) - { - return true; - } - - // As private addresses can be redefined by Configuration.LocalNetworkAddresses - return _lanSubnets.ContainsAddress(address) && !_excludedSubnets.ContainsAddress(address); + return IPAddress.IsLoopback(address) || (_lanSubnets.ContainsAddress(address) && !_excludedSubnets.ContainsAddress(address)); } /// diff --git a/MediaBrowser.Common/Net/IPObject.cs b/MediaBrowser.Common/Net/IPObject.cs index bd5368882e..3a5187bc3d 100644 --- a/MediaBrowser.Common/Net/IPObject.cs +++ b/MediaBrowser.Common/Net/IPObject.cs @@ -65,7 +65,7 @@ namespace MediaBrowser.Common.Net address = address.MapToIPv4(); } - if (IsLoopback(address)) + if (IPAddress.IsLoopback(address)) { return (address, prefixLength); } @@ -102,31 +102,6 @@ namespace MediaBrowser.Common.Net return (new IPAddress(addressBytes), prefixLength); } - /// - /// Tests to see if the ip address is a Loopback address. - /// - /// Value to test. - /// True if it is. - public static bool IsLoopback(IPAddress address) - { - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } - - if (!address.Equals(IPAddress.None)) - { - if (address.IsIPv4MappedToIPv6) - { - address = address.MapToIPv4(); - } - - return address.Equals(IPAddress.Loopback) || address.Equals(IPAddress.IPv6Loopback); - } - - return false; - } - /// /// Tests to see if the ip address is an IP6 address. /// @@ -295,7 +270,7 @@ namespace MediaBrowser.Common.Net /// True if it is. public virtual bool IsLoopback() { - return IsLoopback(Address); + return IPAddress.IsLoopback(Address); } ///