diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-08-15 13:03:08 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-08-15 13:03:08 -0400 |
| commit | e2219020883bc36d9a8ba152db1b25b639ec3b45 (patch) | |
| tree | ad6dd95bcf78f601e412a4437e6a5d6c30a44cb3 /MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs | |
| parent | 0a0f8abe5fca48c3b32d192c54c16f5efddb63fc (diff) | |
fix mono build
Diffstat (limited to 'MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs')
| -rw-r--r-- | MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs index e15c32518..96eb5e2f1 100644 --- a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs +++ b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs @@ -26,6 +26,46 @@ namespace MediaBrowser.Common.Implementations.Networking return GetLocalIpAddressesFallback(); } + public bool IsInLocalNetwork(string endpoint) + { + if (string.IsNullOrWhiteSpace(endpoint)) + { + throw new ArgumentNullException("endpoint"); + } + + IPAddress address; + if (!IPAddress.TryParse(endpoint, out address)) + { + return true; + } + + const int lengthMatch = 4; + + if (endpoint.Length >= lengthMatch) + { + var prefix = endpoint.Substring(0, lengthMatch); + + if (GetLocalIpAddresses() + .Any(i => i.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))) + { + return true; + } + } + + // Private address space: + // http://en.wikipedia.org/wiki/Private_network + + return + + // If url was requested with computer name, we may see this + endpoint.IndexOf("::", StringComparison.OrdinalIgnoreCase) != -1 || + + endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("192.", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("172.", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("169.", StringComparison.OrdinalIgnoreCase); + } + private IEnumerable<IPAddress> GetIPsDefault() { foreach (var adapter in NetworkInterface.GetAllNetworkInterfaces()) |
