Jelajahi Sumber

cli: add option to disable network change detection (#11253)

gnattu 8 bulan lalu
induk
melakukan
987dbe98c8

+ 2 - 1
Emby.Server.Implementations/ConfigurationOptions.cs

@@ -20,7 +20,8 @@ namespace Emby.Server.Implementations
             { PlaylistsAllowDuplicatesKey, bool.FalseString },
             { BindToUnixSocketKey, bool.FalseString },
             { SqliteCacheSizeKey, "20000" },
-            { FfmpegSkipValidationKey, bool.FalseString }
+            { FfmpegSkipValidationKey, bool.FalseString },
+            { DetectNetworkChangeKey, bool.TrueString }
         };
     }
 }

+ 11 - 0
Jellyfin.Server/StartupOptions.cs

@@ -67,6 +67,12 @@ namespace Jellyfin.Server
         [Option("published-server-url", Required = false, HelpText = "Jellyfin Server URL to publish via auto discover process")]
         public string? PublishedServerUrl { get; set; }
 
+        /// <summary>
+        /// Gets or sets a value indicating whether the server should not detect network status change.
+        /// </summary>
+        [Option("nonetchange", Required = false, HelpText = "Indicates that the server should not detect network status change.")]
+        public bool NoDetectNetworkChange { get; set; }
+
         /// <summary>
         /// Gets the command line options as a dictionary that can be used in the .NET configuration system.
         /// </summary>
@@ -90,6 +96,11 @@ namespace Jellyfin.Server
                 config.Add(FfmpegPathKey, FFmpegPath);
             }
 
+            if (NoDetectNetworkChange)
+            {
+                config.Add(DetectNetworkChangeKey, bool.FalseString);
+            }
+
             return config;
         }
     }

+ 5 - 0
MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs

@@ -69,6 +69,11 @@ namespace MediaBrowser.Controller.Extensions
         /// </summary>
         public const string SqliteCacheSizeKey = "sqlite:cacheSize";
 
+        /// <summary>
+        /// The key for a setting that indicates whether the application should detect network status change.
+        /// </summary>
+        public const string DetectNetworkChangeKey = "DetectNetworkChange";
+
         /// <summary>
         /// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>.
         /// </summary>

+ 7 - 2
src/Jellyfin.Networking/Manager/NetworkManager.cs

@@ -97,10 +97,15 @@ public class NetworkManager : INetworkManager, IDisposable
         _networkEventLock = new object();
         _remoteAddressFilter = new List<IPNetwork>();
 
+        _ = bool.TryParse(startupConfig[DetectNetworkChangeKey], out var detectNetworkChange);
+
         UpdateSettings(_configurationManager.GetNetworkConfiguration());
 
-        NetworkChange.NetworkAddressChanged += OnNetworkAddressChanged;
-        NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
+        if (detectNetworkChange)
+        {
+            NetworkChange.NetworkAddressChanged += OnNetworkAddressChanged;
+            NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
+        }
 
         _configurationManager.NamedConfigurationUpdated += ConfigurationUpdated;
     }