Kaynağa Gözat

Merge pull request #305 from flemse/show-wan-ip

Re-adds wan ip on dashboard
Joshua M. Boniface 6 yıl önce
ebeveyn
işleme
7889c9d355

+ 1 - 0
CONTRIBUTORS.md

@@ -4,6 +4,7 @@
  - [nvllsvm](https://github.com/nvllsvm)
  - [JustAMan](https://github.com/JustAMan)
  - [dcrdev](https://github.com/dcrdev)
+ - [flemse](https://github.com/flemse)
 
 # Emby Contributors
 

+ 30 - 5
Emby.Server.Implementations/ApplicationHost.cs

@@ -1962,6 +1962,7 @@ namespace Emby.Server.Implementations
         public async Task<SystemInfo> GetSystemInfo(CancellationToken cancellationToken)
         {
             var localAddress = await GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
+            var wanAddress = await GetWanApiUrl(cancellationToken).ConfigureAwait(false);
 
             return new SystemInfo
             {
@@ -1984,8 +1985,7 @@ namespace Emby.Server.Implementations
                 CanSelfRestart = CanSelfRestart,
                 CanSelfUpdate = CanSelfUpdate,
                 CanLaunchWebBrowser = CanLaunchWebBrowser,
-                // TODO - remove WanAddress
-                WanAddress = "0.0.0.0",
+                WanAddress = wanAddress,
                 HasUpdateAvailable = HasUpdateAvailable,
                 SupportsAutoRunAtStartup = SupportsAutoRunAtStartup,
                 TranscodingTempPath = ApplicationPaths.TranscodingTempPath,
@@ -2012,14 +2012,13 @@ namespace Emby.Server.Implementations
         public async Task<PublicSystemInfo> GetPublicSystemInfo(CancellationToken cancellationToken)
         {
             var localAddress = await GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
-
+            var wanAddress = await GetWanApiUrl(cancellationToken).ConfigureAwait(false);
             return new PublicSystemInfo
             {
                 Version = ApplicationVersion.ToString(),
                 Id = SystemId,
                 OperatingSystem = EnvironmentInfo.OperatingSystem.ToString(),
-                // TODO - remove WanAddress
-                WanAddress = "0.0.0.0",
+                WanAddress = wanAddress,
                 ServerName = FriendlyName,
                 LocalAddress = localAddress
             };
@@ -2060,6 +2059,32 @@ namespace Emby.Server.Implementations
             return null;
         }
 
+        public async Task<string> GetWanApiUrl(CancellationToken cancellationToken)
+        {
+            var url = "http://ipv4.icanhazip.com";
+            try
+            {
+                using (var response = await HttpClient.Get(new HttpRequestOptions
+                {
+                    Url = url,
+                    LogErrorResponseBody = false,
+                    LogErrors = false,
+                    LogRequest = false,
+                    TimeoutMs = 10000,
+                    BufferContent = false,
+                    CancellationToken = cancellationToken
+                }))
+                {
+                    return GetLocalApiUrl(response.ReadToEnd().Trim());
+                }
+            }
+            catch(Exception ex)
+            {
+                Logger.ErrorException("Error getting WAN Ip address information", ex);
+            }
+            return null;
+        }
+
         public string GetLocalApiUrl(IpAddressInfo ipAddress)
         {
             if (ipAddress.AddressFamily == IpAddressFamily.InterNetworkV6)