diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-11-20 13:02:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-20 13:02:59 -0500 |
| commit | 8f78652398ad4e9e9af53a1bd065afe4b9d9260e (patch) | |
| tree | 32bc4144212d7f6ee3941c9c2471b56ab9c5d3e2 /Emby.Server.Implementations/Networking | |
| parent | 7d15b140cfe4f761e03f661f82cf946f327863f5 (diff) | |
| parent | 71ff88284be60fb39a7389e0c4990c94f2207ed4 (diff) | |
Merge pull request #3032 from MediaBrowser/beta
Beta
Diffstat (limited to 'Emby.Server.Implementations/Networking')
| -rw-r--r-- | Emby.Server.Implementations/Networking/NetworkManager.cs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs index 72d0154aa..fbdb5c128 100644 --- a/Emby.Server.Implementations/Networking/NetworkManager.cs +++ b/Emby.Server.Implementations/Networking/NetworkManager.cs @@ -59,7 +59,13 @@ namespace Emby.Server.Implementations.Networking list.AddRange(GetLocalIpAddressesFallback().Result); } - return list.Where(FilterIpAddress).DistinctBy(i => i.ToString()); + var listClone = list.ToList(); + + return list + .OrderBy(i => i.AddressFamily == AddressFamily.InterNetwork ? 0 : 1) + .ThenBy(i => listClone.IndexOf(i)) + .Where(FilterIpAddress) + .DistinctBy(i => i.ToString()); } private bool FilterIpAddress(IPAddress address) @@ -106,16 +112,16 @@ namespace Emby.Server.Implementations.Networking endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) || endpoint.StartsWith("192.168", StringComparison.OrdinalIgnoreCase) || endpoint.StartsWith("169.", StringComparison.OrdinalIgnoreCase) || - endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || + //endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || IsInPrivateAddressSpaceAndLocalSubnet(endpoint); } public bool IsInPrivateAddressSpaceAndLocalSubnet(string endpoint) { - var endpointFirstPart = endpoint.Split('.')[0]; - if (endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase)) { + var endpointFirstPart = endpoint.Split('.')[0]; + var subnets = GetSubnets(endpointFirstPart); foreach (var subnet_Match in subnets) @@ -217,7 +223,7 @@ namespace Emby.Server.Implementations.Networking } else if (address.AddressFamily == AddressFamily.InterNetworkV6) { - lengthMatch = 10; + lengthMatch = 9; if (IsInPrivateAddressSpace(endpoint)) { return true; @@ -317,7 +323,7 @@ namespace Emby.Server.Implementations.Networking return ipProperties.UnicastAddresses //.Where(i => i.IsDnsEligible) .Select(i => i.Address) - .Where(i => i.AddressFamily == AddressFamily.InterNetwork) + .Where(i => i.AddressFamily == AddressFamily.InterNetwork || i.AddressFamily == AddressFamily.InterNetworkV6) .ToList(); } catch (Exception ex) @@ -337,7 +343,7 @@ namespace Emby.Server.Implementations.Networking // Reverse them because the last one is usually the correct one // It's not fool-proof so ultimately the consumer will have to examine them and decide return host.AddressList - .Where(i => i.AddressFamily == AddressFamily.InterNetwork) + .Where(i => i.AddressFamily == AddressFamily.InterNetwork || i.AddressFamily == AddressFamily.InterNetworkV6) .Reverse(); } |
