From 13274348e9e2162eca84dc8f20c4d80ade29e8bf Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 17 Dec 2014 00:30:31 -0500 Subject: sync updates --- .../MediaBrowser.Common.Implementations.csproj | 1 + MediaBrowser.Common.Implementations/Security/MbAdmin.cs | 13 +++++++++++++ .../Security/PluginSecurityManager.cs | 6 ++---- .../Updates/InstallationManager.cs | 7 +++---- 4 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 MediaBrowser.Common.Implementations/Security/MbAdmin.cs (limited to 'MediaBrowser.Common.Implementations') diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj index 58ffb93bc..42a402940 100644 --- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj +++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj @@ -95,6 +95,7 @@ + diff --git a/MediaBrowser.Common.Implementations/Security/MbAdmin.cs b/MediaBrowser.Common.Implementations/Security/MbAdmin.cs new file mode 100644 index 000000000..9171e9e13 --- /dev/null +++ b/MediaBrowser.Common.Implementations/Security/MbAdmin.cs @@ -0,0 +1,13 @@ + +namespace MediaBrowser.Common.Implementations.Security +{ + public class MbAdmin + { + public const string HttpUrl = "https://www.mb3admin.com/admin/"; + + /// + /// Leaving as http for now until we get it squared away + /// + public const string HttpsUrl = "http://www.mb3admin.com/admin/"; + } +} diff --git a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs index dfdf61016..3e81e839f 100644 --- a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs +++ b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs @@ -17,9 +17,7 @@ namespace MediaBrowser.Common.Implementations.Security /// public class PluginSecurityManager : ISecurityManager { - private const string MbAdminUrl = "https://www.mb3admin.com/admin/"; - - private const string MBValidateUrl = MbAdminUrl + "service/registration/validate"; + private const string MBValidateUrl = MbAdmin.HttpsUrl + "service/registration/validate"; /// /// The _is MB supporter @@ -162,7 +160,7 @@ namespace MediaBrowser.Common.Implementations.Security return new SupporterInfo(); } - var url = MbAdminUrl + "/service/supporter/retrieve?key=" + key; + var url = MbAdmin.HttpsUrl + "/service/supporter/retrieve?key=" + key; using (var stream = await _httpClient.Get(url, CancellationToken.None).ConfigureAwait(false)) { diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs index e707129c1..f3a985968 100644 --- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Events; +using MediaBrowser.Common.Implementations.Security; using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Progress; @@ -161,7 +162,7 @@ namespace MediaBrowser.Common.Implementations.Updates { "systemid", _applicationHost.SystemId } }; - using (var json = await _httpClient.Post(MbAdminUrlHttps + "service/package/retrieveall", data, cancellationToken).ConfigureAwait(false)) + using (var json = await _httpClient.Post(MbAdmin.HttpsUrl + "service/package/retrieveall", data, cancellationToken).ConfigureAwait(false)) { cancellationToken.ThrowIfCancellationRequested(); @@ -172,8 +173,6 @@ namespace MediaBrowser.Common.Implementations.Updates } private Tuple, DateTime> _lastPackageListResult; - private const string MbAdminUrlHttp = "http://www.mb3admin.com/admin/"; - private const string MbAdminUrlHttps = "https://www.mb3admin.com/admin/"; /// /// Gets all available packages. @@ -205,7 +204,7 @@ namespace MediaBrowser.Common.Implementations.Updates } } - using (var json = await _httpClient.Get(MbAdminUrlHttp + "service/MB3Packages.json", cancellationToken).ConfigureAwait(false)) + using (var json = await _httpClient.Get(MbAdmin.HttpUrl + "service/MB3Packages.json", cancellationToken).ConfigureAwait(false)) { cancellationToken.ThrowIfCancellationRequested(); -- cgit v1.2.3 From 3763f7d912cd38740d053d677d064a480fba6d23 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 17 Dec 2014 00:52:34 -0500 Subject: resolve update check errors --- MediaBrowser.Api/Sync/SyncService.cs | 33 +++++++++------------- .../Security/MbAdmin.cs | 2 +- MediaBrowser.Controller/Sync/ISyncManager.cs | 7 +++++ MediaBrowser.Model/ApiClient/IApiClient.cs | 3 +- .../Sync/SyncManager.cs | 5 ++++ 5 files changed, 29 insertions(+), 21 deletions(-) (limited to 'MediaBrowser.Common.Implementations') diff --git a/MediaBrowser.Api/Sync/SyncService.cs b/MediaBrowser.Api/Sync/SyncService.cs index d4d1106ec..cefb0e46e 100644 --- a/MediaBrowser.Api/Sync/SyncService.cs +++ b/MediaBrowser.Api/Sync/SyncService.cs @@ -27,22 +27,14 @@ namespace MediaBrowser.Api.Sync public string Id { get; set; } } + [Route("/Sync/JobItems", "GET", Summary = "Gets sync job items.")] + public class GetSyncJobItems : SyncJobItemQuery, IReturn> + { + } + [Route("/Sync/Jobs", "GET", Summary = "Gets sync jobs.")] - public class GetSyncJobs : IReturn> + public class GetSyncJobs : SyncJobQuery, IReturn> { - /// - /// Skips over a given number of items within the results. Use for paging. - /// - /// The start index. - [ApiMember(Name = "StartIndex", Description = "Optional. The record index to start at. All items with a lower index will be dropped from the results.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int? StartIndex { get; set; } - - /// - /// The maximum number of items to return - /// - /// The limit. - [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int? Limit { get; set; } } [Route("/Sync/Jobs", "POST", Summary = "Gets sync jobs.")] @@ -104,11 +96,14 @@ namespace MediaBrowser.Api.Sync public object Get(GetSyncJobs request) { - var result = _syncManager.GetJobs(new SyncJobQuery - { - StartIndex = request.StartIndex, - Limit = request.Limit - }); + var result = _syncManager.GetJobs(request); + + return ToOptimizedResult(result); + } + + public object Get(GetSyncJobItems request) + { + var result = _syncManager.GetJobItems(request); return ToOptimizedResult(result); } diff --git a/MediaBrowser.Common.Implementations/Security/MbAdmin.cs b/MediaBrowser.Common.Implementations/Security/MbAdmin.cs index 9171e9e13..ab4a83257 100644 --- a/MediaBrowser.Common.Implementations/Security/MbAdmin.cs +++ b/MediaBrowser.Common.Implementations/Security/MbAdmin.cs @@ -3,7 +3,7 @@ namespace MediaBrowser.Common.Implementations.Security { public class MbAdmin { - public const string HttpUrl = "https://www.mb3admin.com/admin/"; + public const string HttpUrl = "http://www.mb3admin.com/admin/"; /// /// Leaving as http for now until we get it squared away diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs index 5814daf2d..47339f677 100644 --- a/MediaBrowser.Controller/Sync/ISyncManager.cs +++ b/MediaBrowser.Controller/Sync/ISyncManager.cs @@ -22,6 +22,13 @@ namespace MediaBrowser.Controller.Sync /// QueryResult<SyncJob>. QueryResult GetJobs(SyncJobQuery query); + /// + /// Gets the job items. + /// + /// The query. + /// QueryResult<SyncJobItem>. + QueryResult GetJobItems(SyncJobItemQuery query); + /// /// Gets the job. /// diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index 5560e19ac..9521f8538 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -1411,8 +1411,9 @@ namespace MediaBrowser.Model.ApiClient /// Gets the synchronize job item file. /// /// The identifier. + /// The cancellation token. /// Task<Stream>. - Task GetSyncJobItemFile(string id); + Task GetSyncJobItemFile(string id, CancellationToken cancellationToken); /// /// Opens the web socket. diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 6043e8344..5c699f010 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -284,5 +284,10 @@ namespace MediaBrowser.Server.Implementations.Sync { return _repo.GetJobItem(id); } + + public QueryResult GetJobItems(SyncJobItemQuery query) + { + return _repo.GetJobItems(query); + } } } -- cgit v1.2.3 From e3484bdcc204ae39e0bfdf08e758012a048d539c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 17 Dec 2014 17:39:17 -0500 Subject: 3.0.5464.40000 --- .../BaseApplicationHost.cs | 33 +++++++++++----------- .../Logging/NLogger.cs | 13 ++++++++- .../Logging/NlogManager.cs | 8 +++++- MediaBrowser.Model/Logging/ILogManager.cs | 6 ++++ .../Sync/SyncJobProcessor.cs | 33 +++++++++++++++++----- .../Sync/SyncManager.cs | 2 +- .../Sync/SyncScheduledTask.cs | 2 +- .../ApplicationHost.cs | 19 +++++++++++++ MediaBrowser.ServerApplication/MainStartup.cs | 3 +- SharedVersion.cs | 4 +-- 10 files changed, 92 insertions(+), 31 deletions(-) (limited to 'MediaBrowser.Common.Implementations') diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 891a03d39..9e14d0ee8 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -294,19 +294,20 @@ namespace MediaBrowser.Common.Implementations public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, bool isStartup) { - if (isStartup) - { - logger.Info("Media Browser Server started"); - } + logger.LogMultiline("Media Browser", LogSeverity.Info, GetBaseExceptionMessage(appPaths)); + } - logger.Info("Command line: {0}", string.Join(" ", Environment.GetCommandLineArgs())); + protected static StringBuilder GetBaseExceptionMessage(IApplicationPaths appPaths) + { + var builder = new StringBuilder(); - logger.Info("Server: {0}", Environment.MachineName); - logger.Info("Operating system: {0}", Environment.OSVersion.ToString()); - logger.Info("Processor count: {0}", Environment.ProcessorCount); - logger.Info("64-Bit OS: {0}", Environment.Is64BitOperatingSystem); - logger.Info("64-Bit Process: {0}", Environment.Is64BitProcess); - logger.Info("Program data path: {0}", appPaths.ProgramDataPath); + builder.AppendLine(string.Format("Command line: {0}", string.Join(" ", Environment.GetCommandLineArgs()))); + + builder.AppendLine(string.Format("Operating system: {0}", Environment.OSVersion)); + builder.AppendLine(string.Format("Processor count: {0}", Environment.ProcessorCount)); + builder.AppendLine(string.Format("64-Bit OS: {0}", Environment.Is64BitOperatingSystem)); + builder.AppendLine(string.Format("64-Bit Process: {0}", Environment.Is64BitProcess)); + builder.AppendLine(string.Format("Program data path: {0}", appPaths.ProgramDataPath)); Type type = Type.GetType("Mono.Runtime"); if (type != null) @@ -314,13 +315,13 @@ namespace MediaBrowser.Common.Implementations MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static); if (displayName != null) { - logger.Info("Mono: " + displayName.Invoke(null, null)); + builder.AppendLine("Mono: " + displayName.Invoke(null, null)); } - } - - logger.Info("Application Path: {0}", appPaths.ApplicationPath); + } + + builder.AppendLine(string.Format("Application Path: {0}", appPaths.ApplicationPath)); - logger.Info("*** When reporting issues please include the entire log file. ***".ToUpper()); + return builder; } protected virtual IJsonSerializer CreateJsonSerializer() diff --git a/MediaBrowser.Common.Implementations/Logging/NLogger.cs b/MediaBrowser.Common.Implementations/Logging/NLogger.cs index c87b58f70..29b618890 100644 --- a/MediaBrowser.Common.Implementations/Logging/NLogger.cs +++ b/MediaBrowser.Common.Implementations/Logging/NLogger.cs @@ -14,6 +14,8 @@ namespace MediaBrowser.Common.Implementations.Logging /// private readonly NLog.Logger _logger; + private readonly ILogManager _logManager; + /// /// The _lock object /// @@ -23,8 +25,10 @@ namespace MediaBrowser.Common.Implementations.Logging /// Initializes a new instance of the class. /// /// The name. - public NLogger(string name) + /// The log manager. + public NLogger(string name, ILogManager logManager) { + _logManager = logManager; lock (LockObject) { _logger = NLog.LogManager.GetLogger(name); @@ -96,6 +100,13 @@ namespace MediaBrowser.Common.Implementations.Logging var messageText = LogHelper.GetLogMessage(exception); + var prefix = _logManager.ExceptionMessagePrefix; + + if (!string.IsNullOrWhiteSpace(prefix)) + { + messageText.Insert(0, prefix); + } + LogMultiline(message, level, messageText); } diff --git a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs index b18c6b95a..77d9f80f9 100644 --- a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs +++ b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs @@ -34,6 +34,12 @@ namespace MediaBrowser.Common.Implementations.Logging /// The log file path. public string LogFilePath { get; private set; } + /// + /// Gets or sets the exception message prefix. + /// + /// The exception message prefix. + public string ExceptionMessagePrefix { get; set; } + /// /// Initializes a new instance of the class. /// @@ -159,7 +165,7 @@ namespace MediaBrowser.Common.Implementations.Logging /// ILogger. public ILogger GetLogger(string name) { - return new NLogger(name); + return new NLogger(name, this); } /// diff --git a/MediaBrowser.Model/Logging/ILogManager.cs b/MediaBrowser.Model/Logging/ILogManager.cs index 674d8fd16..59bb86756 100644 --- a/MediaBrowser.Model/Logging/ILogManager.cs +++ b/MediaBrowser.Model/Logging/ILogManager.cs @@ -13,6 +13,12 @@ namespace MediaBrowser.Model.Logging /// The log level. LogSeverity LogSeverity { get; set; } + /// + /// Gets or sets the exception message prefix. + /// + /// The exception message prefix. + string ExceptionMessagePrefix { get; set; } + /// /// Gets the logger. /// diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index e7631069f..6dda869ee 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -48,7 +48,7 @@ namespace MediaBrowser.Server.Implementations.Sync throw new InvalidOperationException("Cannot proceed with sync because user no longer exists."); } - var items = GetItemsForSync(job.RequestedItemIds, user) + var items = GetItemsForSync(job.RequestedItemIds, user, job.UnwatchedOnly) .ToList(); var jobItems = _syncRepo.GetJobItems(new SyncJobItemQuery @@ -171,12 +171,31 @@ namespace MediaBrowser.Server.Implementations.Sync return _syncRepo.Update(job); } - public IEnumerable GetItemsForSync(IEnumerable itemIds, User user) + public IEnumerable GetItemsForSync(IEnumerable itemIds, User user, bool unwatchedOnly) { - return itemIds + var items = itemIds .SelectMany(i => GetItemsForSync(i, user)) - .Where(_syncManager.SupportsSync) - .DistinctBy(i => i.Id); + .Where(_syncManager.SupportsSync); + + if (unwatchedOnly) + { + // Avoid implicitly captured closure + var currentUser = user; + + items = items.Where(i => + { + var video = i as Video; + + if (video != null) + { + return !video.IsPlayed(currentUser); + } + + return true; + }); + } + + return items.DistinctBy(i => i.Id); } private IEnumerable GetItemsForSync(string id, User user) @@ -200,8 +219,8 @@ namespace MediaBrowser.Server.Implementations.Sync .GetRecursiveChildren(user); return itemByName.GetTaggedItems(items); - } - + } + if (item.IsFolder) { var folder = (Folder)item; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 5c699f010..664ec4038 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -49,7 +49,7 @@ namespace MediaBrowser.Server.Implementations.Sync var user = _userManager.GetUserById(request.UserId); var items = processor - .GetItemsForSync(request.ItemIds, user) + .GetItemsForSync(request.ItemIds, user, request.UnwatchedOnly) .ToList(); if (items.Any(i => !SupportsSync(i))) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs b/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs index 47bab6e53..df03ab6f7 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncScheduledTask.cs @@ -61,7 +61,7 @@ namespace MediaBrowser.Server.Implementations.Sync public bool IsHidden { - get { return false; } + get { return true; } } public bool IsEnabled diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 0db7893e5..eca600b33 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -251,6 +251,8 @@ namespace MediaBrowser.Server.Startup.Common _remotePackageName = remotePackageName; _supportsNativeWebSocket = supportsNativeWebSocket; NativeApp = nativeApp; + + SetBaseExceptionMessage(); } private Version _version; @@ -307,6 +309,23 @@ namespace MediaBrowser.Server.Startup.Common get { return NativeApp.SupportsAutoRunAtStartup; } } + private void SetBaseExceptionMessage() + { + var builder = GetBaseExceptionMessage(ApplicationPaths); + + // Skip if plugins haven't been loaded yet + //if (Plugins != null) + //{ + // var pluginString = string.Join("|", Plugins.Select(i => i.Name + "-" + i.Version.ToString()).ToArray()); + // builder.Insert(0, string.Format("Plugins: {0}{1}", pluginString, Environment.NewLine)); + //} + + builder.Insert(0, string.Format("Version: {0}{1}", ApplicationVersion, Environment.NewLine)); + builder.Insert(0, "*** Error Report ***" + Environment.NewLine); + + LogManager.ExceptionMessagePrefix = builder.ToString(); + } + /// /// Runs the startup tasks. /// diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index af0219bda..adc8eecb1 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Implementations.Logging; +using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations; using MediaBrowser.Server.Startup.Common; diff --git a/SharedVersion.cs b/SharedVersion.cs index 33a1a70b9..d323dc7bc 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.0.*")] -//[assembly: AssemblyVersion("3.0.5463.3000")] +//[assembly: AssemblyVersion("3.0.*")] +[assembly: AssemblyVersion("3.0.5464.40000")] -- cgit v1.2.3