aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
diff options
context:
space:
mode:
authortikuf <admin@nyalindee.com>2014-04-16 10:14:20 +1000
committertikuf <admin@nyalindee.com>2014-04-16 10:14:20 +1000
commit13196544c2ca525068e34d23bd98da551943bbca (patch)
treead9894c55a3f3078c15b7622f424b950524b4e2b /MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
parentf9eede391b2de2ce80e75d8345aade14f70f1b9d (diff)
parentab5f8ed13679dbe1763cafc599a8f566a36a4a14 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs')
-rw-r--r--MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs41
1 files changed, 40 insertions, 1 deletions
diff --git a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
index ac6b9290e..e15c32518 100644
--- a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
+++ b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs
@@ -16,6 +16,44 @@ namespace MediaBrowser.Common.Implementations.Networking
/// <returns>IPAddress.</returns>
public IEnumerable<string> GetLocalIpAddresses()
{
+ var list = GetIPsDefault().Where(i => !IPAddress.IsLoopback(i)).Select(i => i.ToString()).ToList();
+
+ if (list.Count > 0)
+ {
+ return list;
+ }
+
+ return GetLocalIpAddressesFallback();
+ }
+
+ private IEnumerable<IPAddress> GetIPsDefault()
+ {
+ foreach (var adapter in NetworkInterface.GetAllNetworkInterfaces())
+ {
+ var props = adapter.GetIPProperties();
+ var gateways = from ga in props.GatewayAddresses
+ where !ga.Address.Equals(IPAddress.Any)
+ select true;
+
+ if (!gateways.Any())
+ {
+ continue;
+ }
+
+ foreach (var uni in props.UnicastAddresses)
+ {
+ var address = uni.Address;
+ if (address.AddressFamily != AddressFamily.InterNetwork)
+ {
+ continue;
+ }
+ yield return address;
+ }
+ }
+ }
+
+ private IEnumerable<string> GetLocalIpAddressesFallback()
+ {
var host = Dns.GetHostEntry(Dns.GetHostName());
// Reverse them because the last one is usually the correct one
@@ -25,7 +63,7 @@ namespace MediaBrowser.Common.Implementations.Networking
.Select(i => i.ToString())
.Reverse();
}
-
+
/// <summary>
/// Gets a random port number that is currently available
/// </summary>
@@ -50,6 +88,7 @@ namespace MediaBrowser.Common.Implementations.Networking
.Select(i => BitConverter.ToString(i.GetPhysicalAddress().GetAddressBytes()))
.FirstOrDefault();
}
+
/// <summary>
/// Parses the specified endpointstring.
/// </summary>