aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJPVenson <github@jpb.email>2024-10-26 10:31:01 +0000
committerJPVenson <github@jpb.email>2024-10-26 10:31:01 +0000
commit1e7acec01799e3cfe6fd2a8630dbd8f6e3338251 (patch)
treef2b6c9461b6c506f0684690bfa35c0b3c41b8b9e /src
parent3ceb8337e7c98fef47bd68753fbdf3b6ab9ecf5a (diff)
Added Setup overlay app to communicate status of startup
Diffstat (limited to 'src')
-rw-r--r--src/Jellyfin.Networking/Manager/NetworkManager.cs23
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))
{