diff options
| author | JPVenson <github@jpb.email> | 2024-10-26 10:31:01 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2024-10-26 10:31:01 +0000 |
| commit | 1e7acec01799e3cfe6fd2a8630dbd8f6e3338251 (patch) | |
| tree | f2b6c9461b6c506f0684690bfa35c0b3c41b8b9e /src | |
| parent | 3ceb8337e7c98fef47bd68753fbdf3b6ab9ecf5a (diff) | |
Added Setup overlay app to communicate status of startup
Diffstat (limited to 'src')
| -rw-r--r-- | src/Jellyfin.Networking/Manager/NetworkManager.cs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/Jellyfin.Networking/Manager/NetworkManager.cs b/src/Jellyfin.Networking/Manager/NetworkManager.cs index 5a13cc417..7a22dd852 100644 --- a/src/Jellyfin.Networking/Manager/NetworkManager.cs +++ b/src/Jellyfin.Networking/Manager/NetworkManager.cs @@ -922,6 +922,19 @@ public class NetworkManager : INetworkManager, IDisposable /// <inheritdoc/> public bool IsInLocalNetwork(IPAddress address) { + return NetworkManager.IsInLocalNetwork(address, TrustAllIPv6Interfaces, _lanSubnets, _excludedSubnets); + } + + /// <summary> + /// Checks a ip address to match any lansubnet given but not to be in any excluded subnet. + /// </summary> + /// <param name="address">The IP address to checl.</param> + /// <param name="trustAllIpv6">Whenever all IPV6 subnet address shall be permitted.</param> + /// <param name="lanSubnets">The list of subnets to permit.</param> + /// <param name="excludedSubnets">The list of subnets to never permit.</param> + /// <returns>The check if the given IP address is in any provided subnet.</returns> + public static bool IsInLocalNetwork(IPAddress address, bool trustAllIpv6, IReadOnlyList<IPNetwork> lanSubnets, IReadOnlyList<IPNetwork> excludedSubnets) + { ArgumentNullException.ThrowIfNull(address); // Map IPv6 mapped IPv4 back to IPv4 (happens if Kestrel runs in dual-socket mode) @@ -930,23 +943,23 @@ public class NetworkManager : INetworkManager, IDisposable address = address.MapToIPv4(); } - if ((TrustAllIPv6Interfaces && address.AddressFamily == AddressFamily.InterNetworkV6) + if ((trustAllIpv6 && address.AddressFamily == AddressFamily.InterNetworkV6) || IPAddress.IsLoopback(address)) { return true; } // As private addresses can be redefined by Configuration.LocalNetworkAddresses - return CheckIfLanAndNotExcluded(address); + return CheckIfLanAndNotExcluded(address, lanSubnets, excludedSubnets); } - private bool CheckIfLanAndNotExcluded(IPAddress address) + private static bool CheckIfLanAndNotExcluded(IPAddress address, IReadOnlyList<IPNetwork> lanSubnets, IReadOnlyList<IPNetwork> excludedSubnets) { - foreach (var lanSubnet in _lanSubnets) + foreach (var lanSubnet in lanSubnets) { if (lanSubnet.Contains(address)) { - foreach (var excludedSubnet in _excludedSubnets) + foreach (var excludedSubnet in excludedSubnets) { if (excludedSubnet.Contains(address)) { |
