Sfoglia il codice sorgente

Add WanAddress to SystemInfo

Luke Pulverenti 11 anni fa
parent
commit
f856e166ff

+ 6 - 0
MediaBrowser.Model/System/SystemInfo.cs

@@ -110,6 +110,12 @@ namespace MediaBrowser.Model.System
         /// <value>The HTTP server port number.</value>
         public int HttpServerPortNumber { get; set; }
 
+        /// <summary>
+        /// Gets or sets the wan address.
+        /// </summary>
+        /// <value>The wan address.</value>
+        public string WanAddress { get; set; }
+
         /// <summary>
         /// Initializes a new instance of the <see cref="SystemInfo" /> class.
         /// </summary>

+ 10 - 0
MediaBrowser.Server.Implementations/Persistence/SqliteChapterRepository.cs

@@ -32,6 +32,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
             _logger = logManager.GetLogger(GetType().Name);
         }
 
+        private SqliteShrinkMemoryTimer _shrinkMemoryTimer;
+        
         /// <summary>
         /// Opens the connection to the database
         /// </summary>
@@ -52,6 +54,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
             _connection.RunQueries(queries, _logger);
 
             PrepareStatements();
+
+            _shrinkMemoryTimer = new SqliteShrinkMemoryTimer(_connection, _writeLock, _logger);
         }
 
         /// <summary>
@@ -282,6 +286,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 {
                     lock (_disposeLock)
                     {
+                        if (_shrinkMemoryTimer != null)
+                        {
+                            _shrinkMemoryTimer.Dispose();
+                            _shrinkMemoryTimer = null;
+                        }
+
                         if (_connection != null)
                         {
                             if (_connection.IsOpen())

+ 10 - 0
MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs

@@ -25,6 +25,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
             _logger = logManager.GetLogger(GetType().Name);
         }
 
+        private SqliteShrinkMemoryTimer _shrinkMemoryTimer;
+        
         /// <summary>
         /// Opens the connection to the database
         /// </summary>
@@ -50,6 +52,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
             _connection.RunQueries(queries, _logger);
 
             PrepareStatements();
+
+            _shrinkMemoryTimer = new SqliteShrinkMemoryTimer(_connection, _writeLock, _logger);
         }
 
         private static readonly string[] SaveColumns =
@@ -240,6 +244,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 {
                     lock (_disposeLock)
                     {
+                        if (_shrinkMemoryTimer != null)
+                        {
+                            _shrinkMemoryTimer.Dispose();
+                            _shrinkMemoryTimer = null;
+                        }
+
                         if (_connection != null)
                         {
                             if (_connection.IsOpen())

+ 3 - 2
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -28,7 +28,6 @@ using MediaBrowser.Controller.Session;
 using MediaBrowser.Controller.Sorting;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.MediaInfo;
-using MediaBrowser.Model.Serialization;
 using MediaBrowser.Model.System;
 using MediaBrowser.Model.Updates;
 using MediaBrowser.Providers;
@@ -49,6 +48,7 @@ using MediaBrowser.Server.Implementations.Providers;
 using MediaBrowser.Server.Implementations.ServerManager;
 using MediaBrowser.Server.Implementations.Session;
 using MediaBrowser.Server.Implementations.WebSocket;
+using MediaBrowser.ServerApplication.EntryPoints;
 using MediaBrowser.ServerApplication.FFMpeg;
 using MediaBrowser.ServerApplication.IO;
 using MediaBrowser.ServerApplication.Native;
@@ -616,7 +616,8 @@ namespace MediaBrowser.ServerApplication
                 HttpServerPortNumber = ServerConfigurationManager.Configuration.HttpServerPortNumber,
                 OperatingSystem = Environment.OSVersion.ToString(),
                 CanSelfRestart = CanSelfRestart,
-                CanSelfUpdate = CanSelfUpdate
+                CanSelfUpdate = CanSelfUpdate,
+                WanAddress = WanAddressEntryPoint.WanAddress
             };
         }
 

+ 56 - 0
MediaBrowser.ServerApplication/EntryPoints/WanAddressEntryPoint.cs

@@ -0,0 +1,56 @@
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Plugins;
+using System;
+using System.IO;
+using System.Threading;
+
+namespace MediaBrowser.ServerApplication.EntryPoints
+{
+    public class WanAddressEntryPoint : IServerEntryPoint
+    {
+        public static string WanAddress;
+        private Timer _timer;
+        private readonly IHttpClient _httpClient;
+
+        public WanAddressEntryPoint(IHttpClient httpClient)
+        {
+            _httpClient = httpClient;
+        }
+
+        public void Run()
+        {
+            _timer = new Timer(TimerCallback, null, TimeSpan.FromMinutes(1), TimeSpan.FromHours(24));
+        }
+
+        private async void TimerCallback(object state)
+        {
+            try
+            {
+                using (var stream = await _httpClient.Get(new HttpRequestOptions
+                {
+                    Url = "http://bot.whatismyipaddress.com/"
+
+                }).ConfigureAwait(false))
+                {
+                    using (var reader = new StreamReader(stream))
+                    {
+                        WanAddress = await reader.ReadToEndAsync().ConfigureAwait(false);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                var b = true;
+            }
+        }
+
+        public void Dispose()
+        {
+            if (_timer != null)
+            {
+                _timer.Dispose();
+                _timer = null;
+            }
+        }
+    }
+}

+ 1 - 0
MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj

@@ -162,6 +162,7 @@
     </Compile>
     <Compile Include="EntryPoints\ResourceEntryPoint.cs" />
     <Compile Include="EntryPoints\StartupWizard.cs" />
+    <Compile Include="EntryPoints\WanAddressEntryPoint.cs" />
     <Compile Include="FFMpeg\FFMpegDownloadInfo.cs" />
     <Compile Include="FFMpeg\FFMpegInfo.cs" />
     <Compile Include="IO\FileSystemFactory.cs" />