diff options
13 files changed, 81 insertions, 16 deletions
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 506774b4a..e2ef4864d 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -172,6 +172,12 @@ namespace MediaBrowser.Common.Implementations public abstract string Name { get; } /// <summary> + /// Gets a value indicating whether this instance is running as service. + /// </summary> + /// <value><c>true</c> if this instance is running as service; otherwise, <c>false</c>.</value> + public abstract bool IsRunningAsService { get; } + + /// <summary> /// Initializes a new instance of the <see cref="BaseApplicationHost{TApplicationPathsType}"/> class. /// </summary> protected BaseApplicationHost(TApplicationPathsType applicationPaths, ILogManager logManager) diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/StatisticsTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/StatisticsTask.cs index 46f3fd4a9..9c0fe165d 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/StatisticsTask.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/StatisticsTask.cs @@ -1,6 +1,4 @@ -using System.Reflection; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Net; +using MediaBrowser.Common.Net; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Model.Logging; using System; @@ -74,7 +72,16 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks progress.Report(0); var mac = NetworkManager.GetMacAddress(); - var data = new Dictionary<string, string> { { "feature", ApplicationHost.Name }, { "mac", mac }, { "ver", ApplicationHost.ApplicationVersion.ToString() }, { "platform", Environment.OSVersion.VersionString } }; + + var data = new Dictionary<string, string> + { + { "feature", ApplicationHost.Name }, + { "mac", mac }, + { "ver", ApplicationHost.ApplicationVersion.ToString() }, + { "platform", Environment.OSVersion.VersionString }, + { "isservice", ApplicationHost.IsRunningAsService.ToString().ToLower()} + }; + await HttpClient.Post(Constants.Constants.MbAdminUrl + "service/registration/ping", data, CancellationToken.None).ConfigureAwait(false); progress.Report(100); @@ -86,7 +93,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks /// <value>The name.</value> public string Name { - get { return "Collect stats"; } + get { return "Collect anonymous usage stats"; } } /// <summary> diff --git a/MediaBrowser.Common/IApplicationHost.cs b/MediaBrowser.Common/IApplicationHost.cs index 8cd1252c7..3d5f3c96f 100644 --- a/MediaBrowser.Common/IApplicationHost.cs +++ b/MediaBrowser.Common/IApplicationHost.cs @@ -25,6 +25,12 @@ namespace MediaBrowser.Common event EventHandler<GenericEventArgs<Version>> ApplicationUpdated; /// <summary> + /// Gets a value indicating whether this instance is running as service. + /// </summary> + /// <value><c>true</c> if this instance is running as service; otherwise, <c>false</c>.</value> + bool IsRunningAsService { get; } + + /// <summary> /// Gets or sets a value indicating whether this instance has pending kernel reload. /// </summary> /// <value><c>true</c> if this instance has pending kernel reload; otherwise, <c>false</c>.</value> diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index dbbe5ce01..a4e885337 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -159,7 +159,8 @@ namespace MediaBrowser.Controller.Entities.Movies try { - folder = ResolveArgs.GetFileSystemEntryByName("specials"); + folder = ResolveArgs.GetFileSystemEntryByName("extras") ?? + ResolveArgs.GetFileSystemEntryByName("specials"); } catch (IOException ex) { diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 923c5ab74..4e981fa3e 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -227,6 +227,8 @@ namespace MediaBrowser.Model.Configuration public TvFileOrganizationOptions TvFileOrganizationOptions { get; set; } public LiveTvOptions LiveTvOptions { get; set; } + public bool EnableRealtimeMonitor { get; set; } + /// <summary> /// Initializes a new instance of the <see cref="ServerConfiguration" /> class. /// </summary> @@ -294,6 +296,8 @@ namespace MediaBrowser.Model.Configuration LiveTvOptions = new LiveTvOptions(); TvFileOrganizationOptions = new TvFileOrganizationOptions(); + + EnableRealtimeMonitor = true; } } diff --git a/MediaBrowser.Model/System/SystemInfo.cs b/MediaBrowser.Model/System/SystemInfo.cs index 3082e80b6..24707b29b 100644 --- a/MediaBrowser.Model/System/SystemInfo.cs +++ b/MediaBrowser.Model/System/SystemInfo.cs @@ -19,7 +19,13 @@ namespace MediaBrowser.Model.System /// </summary> /// <value>The operating sytem.</value> public string OperatingSystem { get; set; } - + + /// <summary> + /// Gets or sets a value indicating whether this instance is running as service. + /// </summary> + /// <value><c>true</c> if this instance is running as service; otherwise, <c>false</c>.</value> + public bool IsRunningAsService { get; set; } + /// <summary> /// Gets or sets the mac address. /// </summary> diff --git a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs index 24f21e339..85b45cf2c 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs @@ -79,9 +79,15 @@ namespace MediaBrowser.Server.Implementations.FileOrganization foreach (var path in watchLocations) { - if (options.LeftOverFileExtensionsToDelete.Length > 0) + var deleteExtensions = options.LeftOverFileExtensionsToDelete + .Select(i => i.Trim().TrimStart('.')) + .Where(i => !string.IsNullOrEmpty(i)) + .Select(i => "." + i) + .ToList(); + + if (deleteExtensions.Count > 0) { - DeleteLeftOverFiles(path, options.LeftOverFileExtensionsToDelete); + DeleteLeftOverFiles(path, deleteExtensions); } if (options.DeleteEmptyFolders) diff --git a/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs b/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs index cbb2c5642..7ae740508 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs @@ -18,7 +18,9 @@ namespace MediaBrowser.Server.Implementations.HttpServer { var log = new StringBuilder(); - log.AppendLine("Ip: " + request.RemoteEndPoint + ". Headers: " + string.Join(",", request.Headers.AllKeys.Select(k => k + "=" + request.Headers[k]))); + var headers = string.Join(",", request.Headers.AllKeys.Where(i => !string.Equals(i, "cookie", StringComparison.OrdinalIgnoreCase) && !string.Equals(i, "Referer", StringComparison.OrdinalIgnoreCase)).Select(k => k + "=" + request.Headers[k])); + + log.AppendLine("Ip: " + request.RemoteEndPoint + ". Headers: " + headers); var type = request.IsWebSocketRequest ? "Web Socket" : "HTTP " + request.HttpMethod; diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs index 0716a3d83..58141902e 100644 --- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs +++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs @@ -130,14 +130,27 @@ namespace MediaBrowser.Server.Implementations.IO /// <param name="e">The <see cref="PowerModeChangedEventArgs"/> instance containing the event data.</param> void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) { + Restart(); + } + + private void Restart() + { Stop(); Start(); } + public void Start() + { + if (ConfigurationManager.Configuration.EnableRealtimeMonitor) + { + StartInternal(); + } + } + /// <summary> /// Starts this instance. /// </summary> - public void Start() + private void StartInternal() { LibraryManager.ItemAdded += LibraryManager_ItemAdded; LibraryManager.ItemRemoved += LibraryManager_ItemRemoved; @@ -359,7 +372,7 @@ namespace MediaBrowser.Server.Implementations.IO { throw new ArgumentNullException("path"); } - + var filename = Path.GetFileName(path); // Ignore certain files diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 4b15ca8d0..0609e80ef 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -179,10 +179,16 @@ namespace MediaBrowser.ServerApplication /// </summary> /// <param name="applicationPaths">The application paths.</param> /// <param name="logManager">The log manager.</param> - public ApplicationHost(ServerApplicationPaths applicationPaths, ILogManager logManager) + public ApplicationHost(ServerApplicationPaths applicationPaths, ILogManager logManager, bool isRunningAsService) : base(applicationPaths, logManager) { + _isRunningAsService = isRunningAsService; + } + private readonly bool _isRunningAsService; + public override bool IsRunningAsService + { + get { return _isRunningAsService; } } /// <summary> @@ -431,7 +437,7 @@ namespace MediaBrowser.ServerApplication await ItemRepository.Initialize().ConfigureAwait(false); await ProviderRepository.Initialize().ConfigureAwait(false); - + ((LibraryManager)LibraryManager).ItemRepository = ItemRepository; } @@ -687,7 +693,8 @@ namespace MediaBrowser.ServerApplication WanAddress = GetWanAddress(), HasUpdateAvailable = _hasUpdateAvailable, SupportsAutoRunAtStartup = SupportsAutoRunAtStartup, - TranscodingTempPath = ApplicationPaths.TranscodingTempPath + TranscodingTempPath = ApplicationPaths.TranscodingTempPath, + IsRunningAsService = IsRunningAsService }; } diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 302136321..f34c3921d 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -212,7 +212,7 @@ namespace MediaBrowser.ServerApplication SystemEvents.SessionEnding += SystemEvents_SessionEnding; SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; - _appHost = new ApplicationHost(appPaths, logManager); + _appHost = new ApplicationHost(appPaths, logManager, runService); _app = new App(_appHost, _appHost.LogManager.GetLogger("App"), runService); diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index ef1504ed5..c308e7656 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -495,6 +495,7 @@ namespace MediaBrowser.WebDashboard.Api "itemdetailpage.js", "itemgallery.js", "itemlistpage.js", + "librarypathmapping.js", "librarysettings.js", "livetvchannel.js", "livetvchannels.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index f1cc75864..3a72d469a 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -175,6 +175,9 @@ <Content Include="dashboard-ui\autoorganizelog.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\librarypathmapping.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\livetvchannel.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -436,6 +439,9 @@ <Content Include="dashboard-ui\scripts\librarymenu.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\scripts\librarypathmapping.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\scripts\livetvchannel.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
|
