mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
removed base kernel and ikernel
This commit is contained in:
parent
60545c433b
commit
4f67fc4aef
@ -1,8 +1,8 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.Net;
|
|
||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Net;
|
using MediaBrowser.Model.Net;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using ServiceStack.Text.Controller;
|
using ServiceStack.Text.Controller;
|
||||||
using System;
|
using System;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Controller.Localization;
|
||||||
using MediaBrowser.Controller.Localization;
|
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Globalization;
|
using MediaBrowser.Model.Globalization;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using MoreLinq;
|
using MoreLinq;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -121,10 +121,6 @@
|
|||||||
<Compile Include="WebSocket\SystemInfoWebSocketListener.cs" />
|
<Compile Include="WebSocket\SystemInfoWebSocketListener.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\MediaBrowser.Common.Implementations\MediaBrowser.Common.Implementations.csproj">
|
|
||||||
<Project>{c4d2573a-3fd3-441f-81af-174ac4cd4e1d}</Project>
|
|
||||||
<Name>MediaBrowser.Common.Implementations</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
|
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
|
||||||
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
|
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
|
||||||
<Name>MediaBrowser.Common</Name>
|
<Name>MediaBrowser.Common</Name>
|
||||||
@ -137,6 +133,10 @@
|
|||||||
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
|
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
|
||||||
<Name>MediaBrowser.Model</Name>
|
<Name>MediaBrowser.Model</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj">
|
||||||
|
<Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
|
||||||
|
<Name>MediaBrowser.Server.Implementations</Name>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Controller.Updates;
|
using MediaBrowser.Controller.Updates;
|
||||||
using MediaBrowser.Model.Updates;
|
using MediaBrowser.Model.Updates;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
@ -15,6 +14,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
|
|
||||||
namespace MediaBrowser.Api.Playback
|
namespace MediaBrowser.Api.Playback
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.Security;
|
using MediaBrowser.Common.Security;
|
||||||
using MediaBrowser.Controller.Updates;
|
using MediaBrowser.Controller.Updates;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Plugins;
|
using MediaBrowser.Model.Plugins;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using ServiceStack.Text.Controller;
|
using ServiceStack.Text.Controller;
|
||||||
using System;
|
using System;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using ServiceStack.Text.Controller;
|
using ServiceStack.Text.Controller;
|
||||||
using System;
|
using System;
|
||||||
@ -84,30 +84,19 @@ namespace MediaBrowser.Api.ScheduledTasks
|
|||||||
/// <value>The task manager.</value>
|
/// <value>The task manager.</value>
|
||||||
private ITaskManager TaskManager { get; set; }
|
private ITaskManager TaskManager { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The _json serializer
|
|
||||||
/// </summary>
|
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ScheduledTaskService" /> class.
|
/// Initializes a new instance of the <see cref="ScheduledTaskService" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="taskManager">The task manager.</param>
|
/// <param name="taskManager">The task manager.</param>
|
||||||
/// <param name="jsonSerializer">The json serializer.</param>
|
|
||||||
/// <exception cref="System.ArgumentNullException">taskManager</exception>
|
/// <exception cref="System.ArgumentNullException">taskManager</exception>
|
||||||
public ScheduledTaskService(ITaskManager taskManager, IJsonSerializer jsonSerializer)
|
public ScheduledTaskService(ITaskManager taskManager)
|
||||||
{
|
{
|
||||||
if (taskManager == null)
|
if (taskManager == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("taskManager");
|
throw new ArgumentNullException("taskManager");
|
||||||
}
|
}
|
||||||
if (jsonSerializer == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("jsonSerializer");
|
|
||||||
}
|
|
||||||
|
|
||||||
TaskManager = taskManager;
|
TaskManager = taskManager;
|
||||||
_jsonSerializer = jsonSerializer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -157,7 +146,7 @@ namespace MediaBrowser.Api.ScheduledTasks
|
|||||||
throw new ResourceNotFoundException("Task not found");
|
throw new ResourceNotFoundException("Task not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
task.Execute();
|
TaskManager.Execute(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -174,7 +163,7 @@ namespace MediaBrowser.Api.ScheduledTasks
|
|||||||
throw new ResourceNotFoundException("Task not found");
|
throw new ResourceNotFoundException("Task not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
task.Cancel();
|
TaskManager.Cancel(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using MediaBrowser.Model.System;
|
using MediaBrowser.Model.System;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -66,7 +66,7 @@ namespace MediaBrowser.Api
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _app host
|
/// The _app host
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IApplicationHost _appHost;
|
private readonly IServerApplicationHost _appHost;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _configuration manager
|
/// The _configuration manager
|
||||||
@ -80,7 +80,7 @@ namespace MediaBrowser.Api
|
|||||||
/// <param name="appHost">The app host.</param>
|
/// <param name="appHost">The app host.</param>
|
||||||
/// <param name="configurationManager">The configuration manager.</param>
|
/// <param name="configurationManager">The configuration manager.</param>
|
||||||
/// <exception cref="System.ArgumentNullException">jsonSerializer</exception>
|
/// <exception cref="System.ArgumentNullException">jsonSerializer</exception>
|
||||||
public SystemService(IJsonSerializer jsonSerializer, IApplicationHost appHost, IServerConfigurationManager configurationManager)
|
public SystemService(IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IServerConfigurationManager configurationManager)
|
||||||
: base()
|
: base()
|
||||||
{
|
{
|
||||||
if (jsonSerializer == null)
|
if (jsonSerializer == null)
|
||||||
@ -104,7 +104,7 @@ namespace MediaBrowser.Api
|
|||||||
/// <returns>System.Object.</returns>
|
/// <returns>System.Object.</returns>
|
||||||
public object Get(GetSystemInfo request)
|
public object Get(GetSystemInfo request)
|
||||||
{
|
{
|
||||||
var result = Kernel.Instance.GetSystemInfo();
|
var result = _appHost.GetSystemInfo();
|
||||||
|
|
||||||
return ToOptimizedResult(result);
|
return ToOptimizedResult(result);
|
||||||
}
|
}
|
||||||
@ -132,7 +132,7 @@ namespace MediaBrowser.Api
|
|||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await Task.Delay(100);
|
await Task.Delay(100);
|
||||||
Kernel.Instance.PerformPendingRestart();
|
_appHost.PerformPendingRestart();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Connectivity;
|
using MediaBrowser.Model.Connectivity;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using ServiceStack.Text.Controller;
|
using ServiceStack.Text.Controller;
|
||||||
using System;
|
using System;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using ServiceStack.Text.Controller;
|
using ServiceStack.Text.Controller;
|
||||||
using System;
|
using System;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Model.Weather;
|
using MediaBrowser.Model.Weather;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.System;
|
using MediaBrowser.Model.System;
|
||||||
@ -23,17 +23,16 @@ namespace MediaBrowser.Api.WebSocket
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _kernel
|
/// The _kernel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IKernel _kernel;
|
private readonly IServerApplicationHost _appHost;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="SystemInfoWebSocketListener" /> class.
|
/// Initializes a new instance of the <see cref="SystemInfoWebSocketListener" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
public SystemInfoWebSocketListener(Kernel kernel, ILogger logger)
|
public SystemInfoWebSocketListener(ILogger logger, IServerApplicationHost appHost)
|
||||||
: base(logger)
|
: base(logger)
|
||||||
{
|
{
|
||||||
_kernel = kernel;
|
_appHost = appHost;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -43,7 +42,7 @@ namespace MediaBrowser.Api.WebSocket
|
|||||||
/// <returns>Task{SystemInfo}.</returns>
|
/// <returns>Task{SystemInfo}.</returns>
|
||||||
protected override Task<SystemInfo> GetDataToSend(object state)
|
protected override Task<SystemInfo> GetDataToSend(object state)
|
||||||
{
|
{
|
||||||
return Task.FromResult(_kernel.GetSystemInfo());
|
return Task.FromResult(_appHost.GetSystemInfo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.Implementations.Logging;
|
using MediaBrowser.Common.Implementations.Logging;
|
||||||
using MediaBrowser.Common.Implementations.NetworkManagement;
|
using MediaBrowser.Common.Implementations.NetworkManagement;
|
||||||
using MediaBrowser.Common.Implementations.ScheduledTasks;
|
using MediaBrowser.Common.Implementations.ScheduledTasks;
|
||||||
using MediaBrowser.Common.Implementations.Security;
|
using MediaBrowser.Common.Implementations.Security;
|
||||||
using MediaBrowser.Common.Implementations.Serialization;
|
using MediaBrowser.Common.Implementations.Serialization;
|
||||||
using MediaBrowser.Common.Implementations.Udp;
|
|
||||||
using MediaBrowser.Common.Implementations.Updates;
|
using MediaBrowser.Common.Implementations.Updates;
|
||||||
using MediaBrowser.Common.Implementations.WebSocket;
|
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.Plugins;
|
using MediaBrowser.Common.Plugins;
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
@ -15,6 +13,7 @@ using MediaBrowser.Common.Security;
|
|||||||
using MediaBrowser.Common.Updates;
|
using MediaBrowser.Common.Updates;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using MediaBrowser.Model.System;
|
||||||
using MediaBrowser.Model.Updates;
|
using MediaBrowser.Model.Updates;
|
||||||
using SimpleInjector;
|
using SimpleInjector;
|
||||||
using System;
|
using System;
|
||||||
@ -30,6 +29,22 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
public abstract class BaseApplicationHost<TApplicationPathsType> : IApplicationHost
|
public abstract class BaseApplicationHost<TApplicationPathsType> : IApplicationHost
|
||||||
where TApplicationPathsType : class, IApplicationPaths, new()
|
where TApplicationPathsType : class, IApplicationPaths, new()
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when [has pending restart changed].
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler HasPendingRestartChanged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when [application updated].
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<GenericEventArgs<Version>> ApplicationUpdated;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether this instance has changes that require the entire application to restart.
|
||||||
|
/// </summary>
|
||||||
|
/// <value><c>true</c> if this instance has pending application restart; otherwise, <c>false</c>.</value>
|
||||||
|
public bool HasPendingRestart { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the logger.
|
/// Gets or sets the logger.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -132,11 +147,11 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
/// Gets the kernel.
|
/// Gets the kernel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The kernel.</value>
|
/// <value>The kernel.</value>
|
||||||
protected IKernel Kernel { get; private set; }
|
|
||||||
protected ITaskManager TaskManager { get; private set; }
|
protected ITaskManager TaskManager { get; private set; }
|
||||||
protected ISecurityManager SecurityManager { get; private set; }
|
protected ISecurityManager SecurityManager { get; private set; }
|
||||||
protected IPackageManager PackageManager { get; private set; }
|
protected IPackageManager PackageManager { get; private set; }
|
||||||
protected IHttpClient HttpClient { get; private set; }
|
protected IHttpClient HttpClient { get; private set; }
|
||||||
|
protected INetworkManager NetworkManager { get; private set; }
|
||||||
|
|
||||||
protected IConfigurationManager ConfigurationManager { get; private set; }
|
protected IConfigurationManager ConfigurationManager { get; private set; }
|
||||||
|
|
||||||
@ -168,15 +183,11 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
|
|
||||||
Logger.Info("Version {0} initializing", ApplicationVersion);
|
Logger.Info("Version {0} initializing", ApplicationVersion);
|
||||||
|
|
||||||
Kernel = GetKernel();
|
|
||||||
|
|
||||||
await RegisterResources().ConfigureAwait(false);
|
await RegisterResources().ConfigureAwait(false);
|
||||||
|
|
||||||
FindParts();
|
FindParts();
|
||||||
|
|
||||||
Task.Run(() => ConfigureAutoRunAtStartup());
|
Task.Run(() => ConfigureAutoRunAtStartup());
|
||||||
|
|
||||||
Kernel.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -191,7 +202,6 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
/// <value>The name of the log file prefix.</value>
|
/// <value>The name of the log file prefix.</value>
|
||||||
protected abstract string LogFilePrefixName { get; }
|
protected abstract string LogFilePrefixName { get; }
|
||||||
|
|
||||||
protected abstract IKernel GetKernel();
|
|
||||||
protected abstract IConfigurationManager GetConfigurationManager();
|
protected abstract IConfigurationManager GetConfigurationManager();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -199,10 +209,6 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected virtual void FindParts()
|
protected virtual void FindParts()
|
||||||
{
|
{
|
||||||
Resolve<IHttpServer>().Init(GetExports<IRestfulService>(false));
|
|
||||||
Resolve<IServerManager>().AddWebSocketListeners(GetExports<IWebSocketListener>(false));
|
|
||||||
|
|
||||||
Resolve<IServerManager>().Start();
|
|
||||||
Resolve<ITaskManager>().AddTasks(GetExports<IScheduledTask>(false));
|
Resolve<ITaskManager>().AddTasks(GetExports<IScheduledTask>(false));
|
||||||
|
|
||||||
Plugins = GetExports<IPlugin>();
|
Plugins = GetExports<IPlugin>();
|
||||||
@ -239,11 +245,7 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
|
|
||||||
RegisterSingleInstance<IApplicationPaths>(ApplicationPaths);
|
RegisterSingleInstance<IApplicationPaths>(ApplicationPaths);
|
||||||
|
|
||||||
var networkManager = new NetworkManager();
|
TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, Logger);
|
||||||
|
|
||||||
var serverManager = new ServerManager.ServerManager(this, Kernel, networkManager, JsonSerializer, Logger, ConfigurationManager);
|
|
||||||
|
|
||||||
TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, Logger, serverManager);
|
|
||||||
|
|
||||||
RegisterSingleInstance(JsonSerializer);
|
RegisterSingleInstance(JsonSerializer);
|
||||||
RegisterSingleInstance(XmlSerializer);
|
RegisterSingleInstance(XmlSerializer);
|
||||||
@ -251,25 +253,22 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
RegisterSingleInstance(LogManager);
|
RegisterSingleInstance(LogManager);
|
||||||
RegisterSingleInstance(Logger);
|
RegisterSingleInstance(Logger);
|
||||||
|
|
||||||
RegisterSingleInstance(Kernel);
|
|
||||||
|
|
||||||
RegisterSingleInstance(TaskManager);
|
RegisterSingleInstance(TaskManager);
|
||||||
RegisterSingleInstance<IWebSocketServer>(() => new AlchemyServer(Logger));
|
|
||||||
RegisterSingleInstance(ProtobufSerializer);
|
RegisterSingleInstance(ProtobufSerializer);
|
||||||
RegisterSingleInstance<IUdpServer>(new UdpServer(Logger), false);
|
|
||||||
|
|
||||||
HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger);
|
HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger);
|
||||||
|
|
||||||
RegisterSingleInstance(HttpClient);
|
RegisterSingleInstance(HttpClient);
|
||||||
|
|
||||||
RegisterSingleInstance<INetworkManager>(networkManager);
|
NetworkManager = new NetworkManager();
|
||||||
RegisterSingleInstance<IServerManager>(serverManager);
|
|
||||||
|
|
||||||
SecurityManager = new PluginSecurityManager(Kernel, HttpClient, JsonSerializer, ApplicationPaths);
|
RegisterSingleInstance(NetworkManager);
|
||||||
|
|
||||||
|
SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths);
|
||||||
|
|
||||||
RegisterSingleInstance(SecurityManager);
|
RegisterSingleInstance(SecurityManager);
|
||||||
|
|
||||||
PackageManager = new PackageManager(SecurityManager, networkManager, HttpClient, ApplicationPaths, JsonSerializer, Logger);
|
PackageManager = new PackageManager(SecurityManager, NetworkManager, HttpClient, ApplicationPaths, JsonSerializer, Logger);
|
||||||
|
|
||||||
RegisterSingleInstance(PackageManager);
|
RegisterSingleInstance(PackageManager);
|
||||||
});
|
});
|
||||||
@ -450,6 +449,34 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
Plugins = list;
|
Plugins = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs the pending restart.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Task.</returns>
|
||||||
|
public void PerformPendingRestart()
|
||||||
|
{
|
||||||
|
if (HasPendingRestart)
|
||||||
|
{
|
||||||
|
Logger.Info("Restarting the application");
|
||||||
|
|
||||||
|
Restart();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.Info("PerformPendingRestart - not needed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Notifies that the kernel that a change has been made that requires a restart
|
||||||
|
/// </summary>
|
||||||
|
public void NotifyPendingRestart()
|
||||||
|
{
|
||||||
|
HasPendingRestart = true;
|
||||||
|
|
||||||
|
EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -488,7 +515,20 @@ namespace MediaBrowser.Common.Implementations
|
|||||||
|
|
||||||
public abstract Task<CheckForUpdateResult> CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress<double> progress);
|
public abstract Task<CheckForUpdateResult> CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress<double> progress);
|
||||||
|
|
||||||
public abstract Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress<double> progress);
|
/// <summary>
|
||||||
|
/// Updates the application.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="package">The package that contains the update</param>
|
||||||
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
|
/// <param name="progress">The progress.</param>
|
||||||
|
/// <returns>Task.</returns>
|
||||||
|
public async Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress<double> progress)
|
||||||
|
{
|
||||||
|
var pkgManager = Resolve<IPackageManager>();
|
||||||
|
await pkgManager.InstallPackage(progress, package, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
EventHelper.QueueEventIfNotNull(ApplicationUpdated, this, new GenericEventArgs<Version> { Argument = package.version }, Logger);
|
||||||
|
}
|
||||||
|
|
||||||
public abstract void Shutdown();
|
public abstract void Shutdown();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Net;
|
using MediaBrowser.Model.Net;
|
||||||
@ -9,7 +8,6 @@ using System.Collections.Concurrent;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
|
||||||
using System.Net.Cache;
|
using System.Net.Cache;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -35,9 +35,6 @@
|
|||||||
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Alchemy">
|
|
||||||
<HintPath>..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mediabrowser.PluginSecurity">
|
<Reference Include="Mediabrowser.PluginSecurity">
|
||||||
<HintPath>..\ThirdParty\PluginSecurity\Mediabrowser.PluginSecurity.dll</HintPath>
|
<HintPath>..\ThirdParty\PluginSecurity\Mediabrowser.PluginSecurity.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -47,41 +44,6 @@
|
|||||||
<Reference Include="protobuf-net">
|
<Reference Include="protobuf-net">
|
||||||
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
|
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ServiceStack, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.Api.Swagger, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.Api.Swagger.3.9.38\lib\net35\ServiceStack.Api.Swagger.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.Common, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Common.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.Interfaces, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Interfaces.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.Logging.NLog">
|
|
||||||
<HintPath>..\packages\ServiceStack.Logging.NLog.1.0.6.0\lib\net35\ServiceStack.Logging.NLog.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.OrmLite, Version=3.9.39.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.OrmLite.SqlServer, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.SqlServer.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.Redis, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.Redis.3.9.38\lib\net35\ServiceStack.Redis.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.ServiceInterface, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.ServiceInterface.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ServiceStack.Text, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ServiceStack.Text, Version=3.9.38.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\ServiceStack.Text.3.9.38\lib\net35\ServiceStack.Text.dll</HintPath>
|
<HintPath>..\packages\ServiceStack.Text.3.9.38\lib\net35\ServiceStack.Text.dll</HintPath>
|
||||||
@ -97,16 +59,6 @@
|
|||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Reactive.Core">
|
|
||||||
<HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Reactive.Interfaces">
|
|
||||||
<HintPath>..\packages\Rx-Interfaces.2.1.30214.0\lib\Net45\System.Reactive.Interfaces.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Reactive.Linq">
|
|
||||||
<HintPath>..\packages\Rx-Linq.2.1.30214.0\lib\Net45\System.Reactive.Linq.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web" />
|
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -117,12 +69,6 @@
|
|||||||
<Compile Include="BaseApplicationPaths.cs" />
|
<Compile Include="BaseApplicationPaths.cs" />
|
||||||
<Compile Include="Configuration\BaseConfigurationManager.cs" />
|
<Compile Include="Configuration\BaseConfigurationManager.cs" />
|
||||||
<Compile Include="HttpClientManager\HttpClientManager.cs" />
|
<Compile Include="HttpClientManager\HttpClientManager.cs" />
|
||||||
<Compile Include="HttpServer\BaseRestService.cs" />
|
|
||||||
<Compile Include="HttpServer\HttpServer.cs" />
|
|
||||||
<Compile Include="HttpServer\NativeWebSocket.cs" />
|
|
||||||
<Compile Include="HttpServer\ServerFactory.cs" />
|
|
||||||
<Compile Include="HttpServer\StreamWriter.cs" />
|
|
||||||
<Compile Include="HttpServer\SwaggerService.cs" />
|
|
||||||
<Compile Include="Logging\LogHelper.cs" />
|
<Compile Include="Logging\LogHelper.cs" />
|
||||||
<Compile Include="Logging\NLogger.cs" />
|
<Compile Include="Logging\NLogger.cs" />
|
||||||
<Compile Include="Logging\NlogManager.cs" />
|
<Compile Include="Logging\NlogManager.cs" />
|
||||||
@ -140,12 +86,8 @@
|
|||||||
<Compile Include="Serialization\JsonSerializer.cs" />
|
<Compile Include="Serialization\JsonSerializer.cs" />
|
||||||
<Compile Include="Serialization\ProtobufSerializer.cs" />
|
<Compile Include="Serialization\ProtobufSerializer.cs" />
|
||||||
<Compile Include="Serialization\XmlSerializer.cs" />
|
<Compile Include="Serialization\XmlSerializer.cs" />
|
||||||
<Compile Include="ServerManager\ServerManager.cs" />
|
<Compile Include="Updates\ApplicationUpdater.cs" />
|
||||||
<Compile Include="ServerManager\WebSocketConnection.cs" />
|
|
||||||
<Compile Include="Udp\UdpServer.cs" />
|
|
||||||
<Compile Include="Updates\PackageManager.cs" />
|
<Compile Include="Updates\PackageManager.cs" />
|
||||||
<Compile Include="WebSocket\AlchemyServer.cs" />
|
|
||||||
<Compile Include="WebSocket\AlchemyWebSocket.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
|
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
|
||||||
@ -159,52 +101,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<EmbeddedResource Include="ServerManager\RegisterServer.bat" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="README.txt" />
|
|
||||||
<Content Include="swagger-ui\css\screen.css">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\images\pet_store_api.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\images\wordnik_api.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\index.html">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\backbone-min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\handlebars.runtime-1.0.0.beta.6.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\jquery.ba-bbq.min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\jquery.min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\jquery.slideto.min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\jquery.wiggle.min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\swagger.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\lib\underscore-min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\swagger-ui.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="swagger-ui\swagger-ui.min.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
@ -49,12 +48,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
/// <value>The task manager.</value>
|
/// <value>The task manager.</value>
|
||||||
private ITaskManager TaskManager { get; set; }
|
private ITaskManager TaskManager { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the server manager.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The server manager.</value>
|
|
||||||
private IServerManager ServerManager { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ScheduledTaskWorker" /> class.
|
/// Initializes a new instance of the <see cref="ScheduledTaskWorker" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -64,7 +57,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
/// <param name="jsonSerializer">The json serializer.</param>
|
/// <param name="jsonSerializer">The json serializer.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="serverManager">The server manager.</param>
|
/// <param name="serverManager">The server manager.</param>
|
||||||
public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
|
public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger)
|
||||||
{
|
{
|
||||||
if (scheduledTask == null)
|
if (scheduledTask == null)
|
||||||
{
|
{
|
||||||
@ -86,17 +79,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
{
|
{
|
||||||
throw new ArgumentNullException("logger");
|
throw new ArgumentNullException("logger");
|
||||||
}
|
}
|
||||||
if (serverManager == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("serverManager");
|
|
||||||
}
|
|
||||||
|
|
||||||
ScheduledTask = scheduledTask;
|
ScheduledTask = scheduledTask;
|
||||||
ApplicationPaths = applicationPaths;
|
ApplicationPaths = applicationPaths;
|
||||||
TaskManager = taskManager;
|
TaskManager = taskManager;
|
||||||
JsonSerializer = jsonSerializer;
|
JsonSerializer = jsonSerializer;
|
||||||
Logger = logger;
|
Logger = logger;
|
||||||
ServerManager = serverManager;
|
|
||||||
|
|
||||||
ReloadTriggerEvents(true);
|
ReloadTriggerEvents(true);
|
||||||
}
|
}
|
||||||
@ -331,6 +319,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
|
|
||||||
Logger.Info("Executing {0}", Name);
|
Logger.Info("Executing {0}", Name);
|
||||||
|
|
||||||
|
((TaskManager)TaskManager).OnTaskExecuting(ScheduledTask);
|
||||||
|
|
||||||
var progress = new Progress<double>();
|
var progress = new Progress<double>();
|
||||||
|
|
||||||
progress.ProgressChanged += progress_ProgressChanged;
|
progress.ProgressChanged += progress_ProgressChanged;
|
||||||
@ -338,8 +328,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
TaskCompletionStatus status;
|
TaskCompletionStatus status;
|
||||||
CurrentExecutionStartTime = DateTime.UtcNow;
|
CurrentExecutionStartTime = DateTime.UtcNow;
|
||||||
|
|
||||||
ServerManager.SendWebSocketMessage("ScheduledTaskBeginExecute", Name);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false);
|
await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false);
|
||||||
@ -517,8 +505,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
/// <param name="startTime">The start time.</param>
|
/// <param name="startTime">The start time.</param>
|
||||||
/// <param name="endTime">The end time.</param>
|
/// <param name="endTime">The end time.</param>
|
||||||
/// <param name="status">The status.</param>
|
/// <param name="status">The status.</param>
|
||||||
/// <param name="sendNotification">if set to <c>true</c> [send notification].</param>
|
private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status)
|
||||||
private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, bool sendNotification = true)
|
|
||||||
{
|
{
|
||||||
var elapsedTime = endTime - startTime;
|
var elapsedTime = endTime - startTime;
|
||||||
|
|
||||||
@ -537,10 +524,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
|
|
||||||
LastExecutionResult = result;
|
LastExecutionResult = result;
|
||||||
|
|
||||||
if (sendNotification)
|
((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result);
|
||||||
{
|
|
||||||
ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -564,7 +548,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
|
|
||||||
if (State == TaskState.Running)
|
if (State == TaskState.Running)
|
||||||
{
|
{
|
||||||
OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, false);
|
OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentCancellationTokenSource != null)
|
if (CurrentCancellationTokenSource != null)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
@ -15,6 +16,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class TaskManager : ITaskManager
|
public class TaskManager : ITaskManager
|
||||||
{
|
{
|
||||||
|
public event EventHandler<EventArgs> TaskExecuting;
|
||||||
|
public event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the list of Scheduled Tasks
|
/// Gets the list of Scheduled Tasks
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -44,26 +48,18 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
/// <value>The logger.</value>
|
/// <value>The logger.</value>
|
||||||
private ILogger Logger { get; set; }
|
private ILogger Logger { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the server manager.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The server manager.</value>
|
|
||||||
private IServerManager ServerManager { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="TaskManager" /> class.
|
/// Initializes a new instance of the <see cref="TaskManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="applicationPaths">The application paths.</param>
|
/// <param name="applicationPaths">The application paths.</param>
|
||||||
/// <param name="jsonSerializer">The json serializer.</param>
|
/// <param name="jsonSerializer">The json serializer.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="serverManager">The server manager.</param>
|
|
||||||
/// <exception cref="System.ArgumentException">kernel</exception>
|
/// <exception cref="System.ArgumentException">kernel</exception>
|
||||||
public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
|
public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger)
|
||||||
{
|
{
|
||||||
ApplicationPaths = applicationPaths;
|
ApplicationPaths = applicationPaths;
|
||||||
JsonSerializer = jsonSerializer;
|
JsonSerializer = jsonSerializer;
|
||||||
Logger = logger;
|
Logger = logger;
|
||||||
ServerManager = serverManager;
|
|
||||||
|
|
||||||
ScheduledTasks = new IScheduledTaskWorker[] { };
|
ScheduledTasks = new IScheduledTaskWorker[] { };
|
||||||
}
|
}
|
||||||
@ -75,7 +71,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
public void CancelIfRunningAndQueue<T>()
|
public void CancelIfRunningAndQueue<T>()
|
||||||
where T : IScheduledTask
|
where T : IScheduledTask
|
||||||
{
|
{
|
||||||
ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T)).CancelIfRunning();
|
var task = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T));
|
||||||
|
((ScheduledTaskWorker)task).CancelIfRunning();
|
||||||
|
|
||||||
QueueScheduledTask<T>();
|
QueueScheduledTask<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +113,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
// If it's idle just execute immediately
|
// If it's idle just execute immediately
|
||||||
if (task.State == TaskState.Idle)
|
if (task.State == TaskState.Idle)
|
||||||
{
|
{
|
||||||
task.Execute();
|
((ScheduledTaskWorker)task).Execute();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,31 +129,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Called when [task completed].
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="task">The task.</param>
|
|
||||||
public void OnTaskCompleted(IScheduledTask task)
|
|
||||||
{
|
|
||||||
// Execute queued tasks
|
|
||||||
lock (_taskQueue)
|
|
||||||
{
|
|
||||||
var copy = _taskQueue.ToList();
|
|
||||||
|
|
||||||
foreach (var type in copy)
|
|
||||||
{
|
|
||||||
var scheduledTask = ScheduledTasks.First(t => t.GetType() == type);
|
|
||||||
|
|
||||||
if (scheduledTask.State == TaskState.Idle)
|
|
||||||
{
|
|
||||||
scheduledTask.Execute();
|
|
||||||
|
|
||||||
_taskQueue.Remove(type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds the tasks.
|
/// Adds the tasks.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -164,7 +137,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
{
|
{
|
||||||
var myTasks = ScheduledTasks.ToList();
|
var myTasks = ScheduledTasks.ToList();
|
||||||
|
|
||||||
myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger, ServerManager)));
|
myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger)));
|
||||||
|
|
||||||
ScheduledTasks = myTasks.ToArray();
|
ScheduledTasks = myTasks.ToArray();
|
||||||
}
|
}
|
||||||
@ -189,5 +162,25 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
task.Dispose();
|
task.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Cancel(IScheduledTaskWorker task)
|
||||||
|
{
|
||||||
|
((ScheduledTaskWorker)task).Cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task Execute(IScheduledTaskWorker task)
|
||||||
|
{
|
||||||
|
return ((ScheduledTaskWorker)task).Execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void OnTaskExecuting(IScheduledTask task)
|
||||||
|
{
|
||||||
|
EventHelper.QueueEventIfNotNull(TaskExecuting, task, EventArgs.Empty, Logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void OnTaskCompleted(IScheduledTask task, TaskResult result)
|
||||||
|
{
|
||||||
|
EventHelper.QueueEventIfNotNull(TaskExecuting, task, new GenericEventArgs<TaskResult> { Argument = result }, Logger);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using System;
|
using System;
|
||||||
@ -30,25 +29,17 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
|
|||||||
/// <value>The logger.</value>
|
/// <value>The logger.</value>
|
||||||
private ILogger Logger { get; set; }
|
private ILogger Logger { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the kernel.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The kernel.</value>
|
|
||||||
private IKernel Kernel { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="SystemUpdateTask" /> class.
|
/// Initializes a new instance of the <see cref="SystemUpdateTask" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="appHost">The app host.</param>
|
/// <param name="appHost">The app host.</param>
|
||||||
/// <param name="configurationManager">The configuration manager.</param>
|
/// <param name="configurationManager">The configuration manager.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="kernel">The kernel.</param>
|
public SystemUpdateTask(IApplicationHost appHost, IConfigurationManager configurationManager, ILogger logger)
|
||||||
public SystemUpdateTask(IApplicationHost appHost, IConfigurationManager configurationManager, ILogger logger, IKernel kernel)
|
|
||||||
{
|
{
|
||||||
_appHost = appHost;
|
_appHost = appHost;
|
||||||
ConfigurationManager = configurationManager;
|
ConfigurationManager = configurationManager;
|
||||||
Logger = logger;
|
Logger = logger;
|
||||||
Kernel = kernel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -110,8 +101,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
|
|||||||
|
|
||||||
// Release the event handler
|
// Release the event handler
|
||||||
innerProgress.ProgressChanged -= innerProgressHandler;
|
innerProgress.ProgressChanged -= innerProgressHandler;
|
||||||
|
|
||||||
Kernel.OnApplicationUpdated(updateInfo.AvailableVersion);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3,7 +3,6 @@ using MediaBrowser.Common.Security;
|
|||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using Mediabrowser.Model.Entities;
|
using Mediabrowser.Model.Entities;
|
||||||
using Mediabrowser.PluginSecurity;
|
using Mediabrowser.PluginSecurity;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@ -44,29 +43,19 @@ namespace MediaBrowser.Common.Implementations.Security
|
|||||||
|
|
||||||
private IHttpClient _httpClient;
|
private IHttpClient _httpClient;
|
||||||
private IJsonSerializer _jsonSerializer;
|
private IJsonSerializer _jsonSerializer;
|
||||||
|
private IApplicationHost _appHost;
|
||||||
/// <summary>
|
|
||||||
/// The _kernel
|
|
||||||
/// </summary>
|
|
||||||
private readonly IKernel _kernel;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="PluginSecurityManager" /> class.
|
/// Initializes a new instance of the <see cref="PluginSecurityManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="kernel">The kernel.</param>
|
public PluginSecurityManager(IApplicationHost appHost, IHttpClient httpClient, IJsonSerializer jsonSerializer, IApplicationPaths appPaths)
|
||||||
public PluginSecurityManager(IKernel kernel, IHttpClient httpClient, IJsonSerializer jsonSerializer, IApplicationPaths appPaths)
|
|
||||||
{
|
{
|
||||||
if (kernel == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("kernel");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (httpClient == null)
|
if (httpClient == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("httpClient");
|
throw new ArgumentNullException("httpClient");
|
||||||
}
|
}
|
||||||
|
|
||||||
_kernel = kernel;
|
_appHost = appHost;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
_jsonSerializer = jsonSerializer;
|
_jsonSerializer = jsonSerializer;
|
||||||
MBRegistration.Init(appPaths);
|
MBRegistration.Init(appPaths);
|
||||||
@ -98,7 +87,7 @@ namespace MediaBrowser.Common.Implementations.Security
|
|||||||
// Clear this so it will re-evaluate
|
// Clear this so it will re-evaluate
|
||||||
ResetSupporterInfo();
|
ResetSupporterInfo();
|
||||||
// And we'll need to restart to re-evaluate the status of plug-ins
|
// And we'll need to restart to re-evaluate the status of plug-ins
|
||||||
_kernel.NotifyPendingRestart();
|
_appHost.NotifyPendingRestart();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -115,7 +104,7 @@ namespace MediaBrowser.Common.Implementations.Security
|
|||||||
{
|
{
|
||||||
MBRegistration.LegacyKey = value;
|
MBRegistration.LegacyKey = value;
|
||||||
// And we'll need to restart to re-evaluate the status of plug-ins
|
// And we'll need to restart to re-evaluate the status of plug-ins
|
||||||
_kernel.NotifyPendingRestart();
|
_appHost.NotifyPendingRestart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
using System;
|
using MediaBrowser.Common.Configuration;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Updates
|
namespace MediaBrowser.Common.Implementations.Updates
|
||||||
{
|
{
|
||||||
public enum MBApplication
|
public enum MBApplication
|
||||||
{
|
{
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Alchemy" version="2.2.1" targetFramework="net45" />
|
|
||||||
<package id="NLog" version="2.0.0.2000" targetFramework="net45" />
|
<package id="NLog" version="2.0.0.2000" targetFramework="net45" />
|
||||||
<package id="protobuf-net" version="2.0.0.621" targetFramework="net45" />
|
<package id="protobuf-net" version="2.0.0.621" targetFramework="net45" />
|
||||||
<package id="Rx-Core" version="2.1.30214.0" targetFramework="net45" />
|
|
||||||
<package id="Rx-Interfaces" version="2.1.30214.0" targetFramework="net45" />
|
|
||||||
<package id="Rx-Linq" version="2.1.30214.0" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack" version="3.9.38" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack.Api.Swagger" version="3.9.38" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack.Common" version="3.9.38" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack.Logging.NLog" version="1.0.6.0" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack.OrmLite.SqlServer" version="3.9.39" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack.Redis" version="3.9.38" targetFramework="net45" />
|
|
||||||
<package id="ServiceStack.Text" version="3.9.38" targetFramework="net45" />
|
<package id="ServiceStack.Text" version="3.9.38" targetFramework="net45" />
|
||||||
<package id="SimpleInjector" version="2.0.0-beta5" targetFramework="net45" />
|
<package id="SimpleInjector" version="2.0.0-beta5" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
@ -12,6 +12,27 @@ namespace MediaBrowser.Common
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IApplicationHost
|
public interface IApplicationHost
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Performs the pending restart.
|
||||||
|
/// </summary>
|
||||||
|
void PerformPendingRestart();
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
bool HasPendingRestart { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when [has pending restart changed].
|
||||||
|
/// </summary>
|
||||||
|
event EventHandler HasPendingRestartChanged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Notifies the pending restart.
|
||||||
|
/// </summary>
|
||||||
|
void NotifyPendingRestart();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Restarts this instance.
|
/// Restarts this instance.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1,167 +0,0 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Common.Events;
|
|
||||||
using MediaBrowser.Model.Logging;
|
|
||||||
using MediaBrowser.Model.System;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Kernel
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Represents a shared base kernel for both the Ui and server apps
|
|
||||||
/// </summary>
|
|
||||||
public abstract class BaseKernel : IKernel
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Occurs when [has pending restart changed].
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler HasPendingRestartChanged;
|
|
||||||
|
|
||||||
#region ApplicationUpdated Event
|
|
||||||
/// <summary>
|
|
||||||
/// Occurs when [application updated].
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler<GenericEventArgs<Version>> ApplicationUpdated;
|
|
||||||
/// <summary>
|
|
||||||
/// Called when [application updated].
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="newVersion">The new version.</param>
|
|
||||||
public void OnApplicationUpdated(Version newVersion)
|
|
||||||
{
|
|
||||||
EventHelper.QueueEventIfNotNull(ApplicationUpdated, this, new GenericEventArgs<Version> { Argument = newVersion }, Logger);
|
|
||||||
|
|
||||||
NotifyPendingRestart();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance has changes that require the entire application to restart.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance has pending application restart; otherwise, <c>false</c>.</value>
|
|
||||||
public bool HasPendingRestart { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the UDP server port number.
|
|
||||||
/// This can't be configurable because then the user would have to configure their client to discover the server.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The UDP server port number.</value>
|
|
||||||
public abstract int UdpServerPortNumber { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the name of the web application that can be used for url building.
|
|
||||||
/// All api urls will be of the form {protocol}://{host}:{port}/{appname}/...
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name of the web application.</value>
|
|
||||||
public string WebApplicationName
|
|
||||||
{
|
|
||||||
get { return "mediabrowser"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the HTTP server URL prefix.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The HTTP server URL prefix.</value>
|
|
||||||
public virtual string HttpServerUrlPrefix
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return "http://+:" + _configurationManager.CommonConfiguration.HttpServerPortNumber + "/" + WebApplicationName + "/";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the kernel context. Subclasses will have to override.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The kernel context.</value>
|
|
||||||
public abstract KernelContext KernelContext { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the logger.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The logger.</value>
|
|
||||||
protected ILogger Logger { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the application host.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The application host.</value>
|
|
||||||
protected IApplicationHost ApplicationHost { get; private set; }
|
|
||||||
|
|
||||||
private readonly IConfigurationManager _configurationManager;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="BaseKernel" /> class.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="appHost">The app host.</param>
|
|
||||||
/// <param name="logManager">The log manager.</param>
|
|
||||||
protected BaseKernel(IApplicationHost appHost, ILogManager logManager, IConfigurationManager configurationManager)
|
|
||||||
{
|
|
||||||
ApplicationHost = appHost;
|
|
||||||
_configurationManager = configurationManager;
|
|
||||||
Logger = logManager.GetLogger("Kernel");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes the Kernel
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Task.</returns>
|
|
||||||
public void Init()
|
|
||||||
{
|
|
||||||
ReloadInternal();
|
|
||||||
|
|
||||||
Logger.Info("Kernel.Init Complete");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs initializations that can be reloaded at anytime
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Task.</returns>
|
|
||||||
protected virtual void ReloadInternal()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Notifies that the kernel that a change has been made that requires a restart
|
|
||||||
/// </summary>
|
|
||||||
public void NotifyPendingRestart()
|
|
||||||
{
|
|
||||||
HasPendingRestart = true;
|
|
||||||
|
|
||||||
EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs the pending restart.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Task.</returns>
|
|
||||||
public void PerformPendingRestart()
|
|
||||||
{
|
|
||||||
if (HasPendingRestart)
|
|
||||||
{
|
|
||||||
Logger.Info("Restarting the application");
|
|
||||||
|
|
||||||
ApplicationHost.Restart();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Logger.Info("PerformPendingRestart - not needed");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the system status.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>SystemInfo.</returns>
|
|
||||||
public virtual SystemInfo GetSystemInfo()
|
|
||||||
{
|
|
||||||
return new SystemInfo
|
|
||||||
{
|
|
||||||
HasPendingRestart = HasPendingRestart,
|
|
||||||
Version = ApplicationHost.ApplicationVersion.ToString(),
|
|
||||||
IsNetworkDeployed = ApplicationHost.CanSelfUpdate,
|
|
||||||
WebSocketPortNumber = ApplicationHost.Resolve<IServerManager>().WebSocketPortNumber,
|
|
||||||
SupportsNativeWebSocket = ApplicationHost.Resolve<IServerManager>().SupportsNativeWebSocket,
|
|
||||||
FailedPluginAssemblies = ApplicationHost.FailedAssemblies.ToArray()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
using MediaBrowser.Model.System;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Kernel
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Interface IKernel
|
|
||||||
/// </summary>
|
|
||||||
public interface IKernel
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Occurs when [has pending restart changed].
|
|
||||||
/// </summary>
|
|
||||||
event EventHandler HasPendingRestartChanged;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the kernel context.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The kernel context.</value>
|
|
||||||
KernelContext KernelContext { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Inits this instance.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Task.</returns>
|
|
||||||
void Init();
|
|
||||||
|
|
||||||
/// <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>
|
|
||||||
bool HasPendingRestart { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the system status.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>SystemInfo.</returns>
|
|
||||||
SystemInfo GetSystemInfo();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Called when [application updated].
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="newVersion">The new version.</param>
|
|
||||||
void OnApplicationUpdated(Version newVersion);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the name of the web application.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name of the web application.</value>
|
|
||||||
string WebApplicationName { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs the pending restart.
|
|
||||||
/// </summary>
|
|
||||||
void PerformPendingRestart();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the UDP server port number.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The UDP server port number.</value>
|
|
||||||
int UdpServerPortNumber { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the HTTP server URL prefix.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The HTTP server URL prefix.</value>
|
|
||||||
string HttpServerUrlPrefix { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Notifies the pending restart.
|
|
||||||
/// </summary>
|
|
||||||
void NotifyPendingRestart();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
|
|
||||||
namespace MediaBrowser.Common.Kernel
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Enum KernelContext
|
|
||||||
/// </summary>
|
|
||||||
public enum KernelContext
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The server
|
|
||||||
/// </summary>
|
|
||||||
Server,
|
|
||||||
/// <summary>
|
|
||||||
/// The UI
|
|
||||||
/// </summary>
|
|
||||||
Ui
|
|
||||||
}
|
|
||||||
}
|
|
@ -59,12 +59,11 @@
|
|||||||
<Compile Include="IO\IIsoMount.cs" />
|
<Compile Include="IO\IIsoMount.cs" />
|
||||||
<Compile Include="IO\ProgressStream.cs" />
|
<Compile Include="IO\ProgressStream.cs" />
|
||||||
<Compile Include="IO\StreamDefaults.cs" />
|
<Compile Include="IO\StreamDefaults.cs" />
|
||||||
<Compile Include="Kernel\BasePeriodicWebSocketListener.cs" />
|
<Compile Include="Net\BasePeriodicWebSocketListener.cs" />
|
||||||
<Compile Include="Configuration\IApplicationPaths.cs" />
|
<Compile Include="Configuration\IApplicationPaths.cs" />
|
||||||
<Compile Include="Kernel\IServerManager.cs" />
|
<Compile Include="Net\IServerManager.cs" />
|
||||||
<Compile Include="Kernel\IWebSocketListener.cs" />
|
<Compile Include="Net\IWebSocketListener.cs" />
|
||||||
<Compile Include="IApplicationHost.cs" />
|
<Compile Include="IApplicationHost.cs" />
|
||||||
<Compile Include="Kernel\IKernel.cs" />
|
|
||||||
<Compile Include="Net\IHttpClient.cs" />
|
<Compile Include="Net\IHttpClient.cs" />
|
||||||
<Compile Include="Net\IHttpServer.cs" />
|
<Compile Include="Net\IHttpServer.cs" />
|
||||||
<Compile Include="Net\INetworkManager.cs" />
|
<Compile Include="Net\INetworkManager.cs" />
|
||||||
@ -94,15 +93,13 @@
|
|||||||
<Compile Include="ScheduledTasks\ScheduledTaskHelpers.cs" />
|
<Compile Include="ScheduledTasks\ScheduledTaskHelpers.cs" />
|
||||||
<Compile Include="ScheduledTasks\StartupTrigger.cs" />
|
<Compile Include="ScheduledTasks\StartupTrigger.cs" />
|
||||||
<Compile Include="ScheduledTasks\SystemEventTrigger.cs" />
|
<Compile Include="ScheduledTasks\SystemEventTrigger.cs" />
|
||||||
<Compile Include="Kernel\BaseKernel.cs" />
|
|
||||||
<Compile Include="Kernel\KernelContext.cs" />
|
|
||||||
<Compile Include="Plugins\BasePlugin.cs" />
|
<Compile Include="Plugins\BasePlugin.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="ScheduledTasks\DailyTrigger.cs" />
|
<Compile Include="ScheduledTasks\DailyTrigger.cs" />
|
||||||
<Compile Include="ScheduledTasks\IntervalTrigger.cs" />
|
<Compile Include="ScheduledTasks\IntervalTrigger.cs" />
|
||||||
|
<Compile Include="ScheduledTasks\TaskCompletionEventArgs.cs" />
|
||||||
<Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
|
<Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
|
||||||
<Compile Include="Security\ISecurityManager.cs" />
|
<Compile Include="Security\ISecurityManager.cs" />
|
||||||
<Compile Include="Updates\ApplicationUpdater.cs" />
|
|
||||||
<Compile Include="Updates\IPackageManager.cs" />
|
<Compile Include="Updates\IPackageManager.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Kernel
|
namespace MediaBrowser.Common.Net
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received
|
/// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Kernel
|
namespace MediaBrowser.Common.Net
|
||||||
{
|
{
|
||||||
public interface IServerManager : IDisposable
|
public interface IServerManager : IDisposable
|
||||||
{
|
{
|
@ -1,7 +1,6 @@
|
|||||||
using MediaBrowser.Common.Net;
|
using System.Threading.Tasks;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Kernel
|
namespace MediaBrowser.Common.Net
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///This is an interface for listening to messages coming through a web socket connection
|
///This is an interface for listening to messages coming through a web socket connection
|
@ -1,7 +1,6 @@
|
|||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Common.ScheduledTasks
|
namespace MediaBrowser.Common.ScheduledTasks
|
||||||
{
|
{
|
||||||
@ -64,23 +63,5 @@ namespace MediaBrowser.Common.ScheduledTasks
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The unique id.</value>
|
/// <value>The unique id.</value>
|
||||||
Guid Id { get; }
|
Guid Id { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Executes the task
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Task.</returns>
|
|
||||||
/// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception>
|
|
||||||
Task Execute();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Stops the task if it is currently executing
|
|
||||||
/// </summary>
|
|
||||||
/// <exception cref="System.InvalidOperationException">Cannot cancel a Task unless it is in the Running state.</exception>
|
|
||||||
void Cancel();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Cancels if running.
|
|
||||||
/// </summary>
|
|
||||||
void CancelIfRunning();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,8 @@
|
|||||||
using System;
|
using MediaBrowser.Common.Events;
|
||||||
|
using MediaBrowser.Model.Tasks;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.ScheduledTasks
|
namespace MediaBrowser.Common.ScheduledTasks
|
||||||
{
|
{
|
||||||
@ -36,5 +39,11 @@ namespace MediaBrowser.Common.ScheduledTasks
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tasks">The tasks.</param>
|
/// <param name="tasks">The tasks.</param>
|
||||||
void AddTasks(IEnumerable<IScheduledTask> tasks);
|
void AddTasks(IEnumerable<IScheduledTask> tasks);
|
||||||
|
|
||||||
|
void Cancel(IScheduledTaskWorker task);
|
||||||
|
Task Execute(IScheduledTaskWorker task);
|
||||||
|
|
||||||
|
event EventHandler<EventArgs> TaskExecuting;
|
||||||
|
event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
using MediaBrowser.Model.Tasks;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Common.ScheduledTasks
|
||||||
|
{
|
||||||
|
public class TaskCompletionEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public IScheduledTask Task { get; set; }
|
||||||
|
|
||||||
|
public TaskResult Result { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,50 +0,0 @@
|
|||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Class BaseManager
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="TKernelType">The type of the T kernel type.</typeparam>
|
|
||||||
public abstract class BaseManager<TKernelType> : IDisposable
|
|
||||||
where TKernelType : class, IKernel
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The _kernel
|
|
||||||
/// </summary>
|
|
||||||
protected readonly TKernelType Kernel;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="BaseManager" /> class.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <exception cref="System.ArgumentNullException">kernel</exception>
|
|
||||||
protected BaseManager(TKernelType kernel)
|
|
||||||
{
|
|
||||||
if (kernel == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("kernel");
|
|
||||||
}
|
|
||||||
|
|
||||||
Kernel = kernel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
|
||||||
/// </summary>
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Dispose(true);
|
|
||||||
GC.SuppressFinalize(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Releases unmanaged and - optionally - managed resources.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
|
|
||||||
protected virtual void Dispose(bool dispose)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
@ -17,7 +16,7 @@ namespace MediaBrowser.Controller.IO
|
|||||||
/// modify the directories that the system is watching for changes should use the methods of
|
/// modify the directories that the system is watching for changes should use the methods of
|
||||||
/// this class to do so. This way we can have the watchers correctly respond to only external changes.
|
/// this class to do so. This way we can have the watchers correctly respond to only external changes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class FileSystemManager : BaseManager<Kernel>
|
public class FileSystemManager : IDisposable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the directory watchers.
|
/// Gets or sets the directory watchers.
|
||||||
@ -25,23 +24,15 @@ namespace MediaBrowser.Controller.IO
|
|||||||
/// <value>The directory watchers.</value>
|
/// <value>The directory watchers.</value>
|
||||||
private DirectoryWatchers DirectoryWatchers { get; set; }
|
private DirectoryWatchers DirectoryWatchers { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The _logger
|
|
||||||
/// </summary>
|
|
||||||
private readonly ILogger _logger;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="FileSystemManager" /> class.
|
/// Initializes a new instance of the <see cref="FileSystemManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <param name="logManager">The log manager.</param>
|
/// <param name="logManager">The log manager.</param>
|
||||||
/// <param name="taskManager">The task manager.</param>
|
/// <param name="taskManager">The task manager.</param>
|
||||||
/// <param name="libraryManager">The library manager.</param>
|
/// <param name="libraryManager">The library manager.</param>
|
||||||
/// <param name="configurationManager">The configuration manager.</param>
|
/// <param name="configurationManager">The configuration manager.</param>
|
||||||
public FileSystemManager(Kernel kernel, ILogManager logManager, ITaskManager taskManager, ILibraryManager libraryManager, IServerConfigurationManager configurationManager)
|
public FileSystemManager(ILogManager logManager, ITaskManager taskManager, ILibraryManager libraryManager, IServerConfigurationManager configurationManager)
|
||||||
: base(kernel)
|
|
||||||
{
|
{
|
||||||
_logger = logManager.GetLogger("FileSystemManager");
|
|
||||||
DirectoryWatchers = new DirectoryWatchers(logManager, taskManager, libraryManager, configurationManager);
|
DirectoryWatchers = new DirectoryWatchers(logManager, taskManager, libraryManager, configurationManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,14 +104,17 @@ namespace MediaBrowser.Controller.IO
|
|||||||
/// Releases unmanaged and - optionally - managed resources.
|
/// Releases unmanaged and - optionally - managed resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
|
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
|
||||||
protected override void Dispose(bool dispose)
|
protected virtual void Dispose(bool dispose)
|
||||||
{
|
{
|
||||||
if (dispose)
|
if (dispose)
|
||||||
{
|
{
|
||||||
DirectoryWatchers.Dispose();
|
DirectoryWatchers.Dispose();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
base.Dispose(dispose);
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Dispose(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
MediaBrowser.Controller/IServerApplicationHost.cs
Normal file
10
MediaBrowser.Controller/IServerApplicationHost.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using MediaBrowser.Common;
|
||||||
|
using MediaBrowser.Model.System;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Controller
|
||||||
|
{
|
||||||
|
public interface IServerApplicationHost : IApplicationHost
|
||||||
|
{
|
||||||
|
SystemInfo GetSystemInfo();
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller
|
namespace MediaBrowser.Controller
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Drawing;
|
using MediaBrowser.Controller.Drawing;
|
||||||
@ -11,11 +10,9 @@ using MediaBrowser.Controller.MediaInfo;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Controller.Updates;
|
|
||||||
using MediaBrowser.Controller.Weather;
|
using MediaBrowser.Controller.Weather;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using MediaBrowser.Model.System;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -27,7 +24,7 @@ namespace MediaBrowser.Controller
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class Kernel
|
/// Class Kernel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Kernel : BaseKernel, IDisposable
|
public class Kernel : IDisposable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the instance.
|
/// Gets the instance.
|
||||||
@ -60,12 +57,25 @@ namespace MediaBrowser.Controller
|
|||||||
public ProviderManager ProviderManager { get; private set; }
|
public ProviderManager ProviderManager { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the kernel context.
|
/// Gets the name of the web application that can be used for url building.
|
||||||
|
/// All api urls will be of the form {protocol}://{host}:{port}/{appname}/...
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The kernel context.</value>
|
/// <value>The name of the web application.</value>
|
||||||
public override KernelContext KernelContext
|
public string WebApplicationName
|
||||||
{
|
{
|
||||||
get { return KernelContext.Server; }
|
get { return "mediabrowser"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the HTTP server URL prefix.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The HTTP server URL prefix.</value>
|
||||||
|
public virtual string HttpServerUrlPrefix
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return "http://+:" + _configurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -145,7 +155,7 @@ namespace MediaBrowser.Controller
|
|||||||
/// Gets the UDP server port number.
|
/// Gets the UDP server port number.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The UDP server port number.</value>
|
/// <value>The UDP server port number.</value>
|
||||||
public override int UdpServerPortNumber
|
public int UdpServerPortNumber
|
||||||
{
|
{
|
||||||
get { return 7359; }
|
get { return 7359; }
|
||||||
}
|
}
|
||||||
@ -154,6 +164,7 @@ namespace MediaBrowser.Controller
|
|||||||
|
|
||||||
private readonly IServerConfigurationManager _configurationManager;
|
private readonly IServerConfigurationManager _configurationManager;
|
||||||
private readonly ILogManager _logManager;
|
private readonly ILogManager _logManager;
|
||||||
|
private IApplicationHost ApplicationHost { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a kernel based on a Data path, which is akin to our current programdata path
|
/// Creates a kernel based on a Data path, which is akin to our current programdata path
|
||||||
@ -164,10 +175,10 @@ namespace MediaBrowser.Controller
|
|||||||
/// <param name="configurationManager">The configuration manager.</param>
|
/// <param name="configurationManager">The configuration manager.</param>
|
||||||
/// <exception cref="System.ArgumentNullException">isoManager</exception>
|
/// <exception cref="System.ArgumentNullException">isoManager</exception>
|
||||||
public Kernel(IApplicationHost appHost, IXmlSerializer xmlSerializer, ILogManager logManager, IServerConfigurationManager configurationManager)
|
public Kernel(IApplicationHost appHost, IXmlSerializer xmlSerializer, ILogManager logManager, IServerConfigurationManager configurationManager)
|
||||||
: base(appHost, logManager, configurationManager)
|
|
||||||
{
|
{
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
|
||||||
|
ApplicationHost = appHost;
|
||||||
_configurationManager = configurationManager;
|
_configurationManager = configurationManager;
|
||||||
_xmlSerializer = xmlSerializer;
|
_xmlSerializer = xmlSerializer;
|
||||||
_logManager = logManager;
|
_logManager = logManager;
|
||||||
@ -207,10 +218,8 @@ namespace MediaBrowser.Controller
|
|||||||
/// Performs initializations that can be reloaded at anytime
|
/// Performs initializations that can be reloaded at anytime
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
protected override async void ReloadInternal()
|
public async Task Init()
|
||||||
{
|
{
|
||||||
base.ReloadInternal();
|
|
||||||
|
|
||||||
FindParts();
|
FindParts();
|
||||||
|
|
||||||
await LoadRepositories().ConfigureAwait(false);
|
await LoadRepositories().ConfigureAwait(false);
|
||||||
@ -306,27 +315,8 @@ namespace MediaBrowser.Controller
|
|||||||
{
|
{
|
||||||
DisposeFileSystemManager();
|
DisposeFileSystemManager();
|
||||||
|
|
||||||
FileSystemManager = new FileSystemManager(this, _logManager, ApplicationHost.Resolve<ITaskManager>(), ApplicationHost.Resolve<ILibraryManager>(), _configurationManager);
|
FileSystemManager = new FileSystemManager(_logManager, ApplicationHost.Resolve<ITaskManager>(), ApplicationHost.Resolve<ILibraryManager>(), _configurationManager);
|
||||||
FileSystemManager.StartWatchers();
|
FileSystemManager.StartWatchers();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the system info.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>SystemInfo.</returns>
|
|
||||||
public override SystemInfo GetSystemInfo()
|
|
||||||
{
|
|
||||||
var info = base.GetSystemInfo();
|
|
||||||
|
|
||||||
var installationManager = ApplicationHost.Resolve<IInstallationManager>();
|
|
||||||
|
|
||||||
if (installationManager != null)
|
|
||||||
{
|
|
||||||
info.InProgressInstallations = installationManager.CurrentInstallations.Select(i => i.Item1).ToArray();
|
|
||||||
info.CompletedInstallations = installationManager.CompletedInstallations.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,6 @@
|
|||||||
<Compile Include="..\SharedVersion.cs">
|
<Compile Include="..\SharedVersion.cs">
|
||||||
<Link>Properties\SharedVersion.cs</Link>
|
<Link>Properties\SharedVersion.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="BaseManager.cs" />
|
|
||||||
<Compile Include="Configuration\IServerConfigurationManager.cs" />
|
<Compile Include="Configuration\IServerConfigurationManager.cs" />
|
||||||
<Compile Include="Drawing\ImageExtensions.cs" />
|
<Compile Include="Drawing\ImageExtensions.cs" />
|
||||||
<Compile Include="Drawing\ImageHeader.cs" />
|
<Compile Include="Drawing\ImageHeader.cs" />
|
||||||
@ -105,6 +104,7 @@
|
|||||||
<Compile Include="IO\FileSystem.cs" />
|
<Compile Include="IO\FileSystem.cs" />
|
||||||
<Compile Include="IO\FileSystemManager.cs" />
|
<Compile Include="IO\FileSystemManager.cs" />
|
||||||
<Compile Include="IO\NativeMethods.cs" />
|
<Compile Include="IO\NativeMethods.cs" />
|
||||||
|
<Compile Include="IServerApplicationHost.cs" />
|
||||||
<Compile Include="IServerApplicationPaths.cs" />
|
<Compile Include="IServerApplicationPaths.cs" />
|
||||||
<Compile Include="Library\ChildrenChangedEventArgs.cs" />
|
<Compile Include="Library\ChildrenChangedEventArgs.cs" />
|
||||||
<Compile Include="Library\DtoBuilder.cs" />
|
<Compile Include="Library\DtoBuilder.cs" />
|
||||||
|
@ -18,7 +18,7 @@ namespace MediaBrowser.Controller.Providers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ProviderManager
|
/// Class ProviderManager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ProviderManager : BaseManager<Kernel>
|
public class ProviderManager : IDisposable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The remote image cache
|
/// The remote image cache
|
||||||
@ -43,6 +43,8 @@ namespace MediaBrowser.Controller.Providers
|
|||||||
|
|
||||||
private IServerConfigurationManager ConfigurationManager { get; set; }
|
private IServerConfigurationManager ConfigurationManager { get; set; }
|
||||||
|
|
||||||
|
private Kernel Kernel { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ProviderManager" /> class.
|
/// Initializes a new instance of the <see cref="ProviderManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -50,9 +52,9 @@ namespace MediaBrowser.Controller.Providers
|
|||||||
/// <param name="httpClient">The HTTP client.</param>
|
/// <param name="httpClient">The HTTP client.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
public ProviderManager(Kernel kernel, IHttpClient httpClient, ILogger logger, IServerConfigurationManager configurationManager)
|
public ProviderManager(Kernel kernel, IHttpClient httpClient, ILogger logger, IServerConfigurationManager configurationManager)
|
||||||
: base(kernel)
|
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
Kernel = kernel;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
ConfigurationManager = configurationManager;
|
ConfigurationManager = configurationManager;
|
||||||
_remoteImageCache = new FileSystemRepository(ImagesDataPath);
|
_remoteImageCache = new FileSystemRepository(ImagesDataPath);
|
||||||
@ -354,14 +356,17 @@ namespace MediaBrowser.Controller.Providers
|
|||||||
/// Releases unmanaged and - optionally - managed resources.
|
/// Releases unmanaged and - optionally - managed resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
|
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
|
||||||
protected override void Dispose(bool dispose)
|
protected virtual void Dispose(bool dispose)
|
||||||
{
|
{
|
||||||
if (dispose)
|
if (dispose)
|
||||||
{
|
{
|
||||||
_remoteImageCache.Dispose();
|
_remoteImageCache.Dispose();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
base.Dispose(dispose);
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Dispose(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,20 +18,6 @@ namespace MediaBrowser.Model.Configuration
|
|||||||
[ProtoMember(1)]
|
[ProtoMember(1)]
|
||||||
public bool EnableDebugLevelLogging { get; set; }
|
public bool EnableDebugLevelLogging { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [enable HTTP level logging].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [enable HTTP level logging]; otherwise, <c>false</c>.</value>
|
|
||||||
[ProtoMember(56)]
|
|
||||||
public bool EnableHttpLevelLogging { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the HTTP server port number.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The HTTP server port number.</value>
|
|
||||||
[ProtoMember(2)]
|
|
||||||
public int HttpServerPortNumber { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enable automatically and silently updating of the application
|
/// Enable automatically and silently updating of the application
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -59,13 +45,6 @@ namespace MediaBrowser.Model.Configuration
|
|||||||
[ProtoMember(58)]
|
[ProtoMember(58)]
|
||||||
public bool RunAtStartup { get; set; }
|
public bool RunAtStartup { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the legacy web socket port number.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The legacy web socket port number.</value>
|
|
||||||
[ProtoMember(59)]
|
|
||||||
public int LegacyWebSocketPortNumber { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is first run.
|
/// Gets or sets a value indicating whether this instance is first run.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -78,14 +57,9 @@ namespace MediaBrowser.Model.Configuration
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public BaseApplicationConfiguration()
|
public BaseApplicationConfiguration()
|
||||||
{
|
{
|
||||||
HttpServerPortNumber = 8096;
|
|
||||||
LegacyWebSocketPortNumber = 8945;
|
|
||||||
|
|
||||||
EnableAutoUpdate = true;
|
EnableAutoUpdate = true;
|
||||||
LogFileRetentionDays = 14;
|
LogFileRetentionDays = 14;
|
||||||
|
|
||||||
EnableHttpLevelLogging = true;
|
|
||||||
|
|
||||||
#if (DEBUG)
|
#if (DEBUG)
|
||||||
EnableDebugLevelLogging = true;
|
EnableDebugLevelLogging = true;
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,6 +12,27 @@ namespace MediaBrowser.Model.Configuration
|
|||||||
[ProtoContract]
|
[ProtoContract]
|
||||||
public class ServerConfiguration : BaseApplicationConfiguration
|
public class ServerConfiguration : BaseApplicationConfiguration
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether [enable HTTP level logging].
|
||||||
|
/// </summary>
|
||||||
|
/// <value><c>true</c> if [enable HTTP level logging]; otherwise, <c>false</c>.</value>
|
||||||
|
[ProtoMember(56)]
|
||||||
|
public bool EnableHttpLevelLogging { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the HTTP server port number.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The HTTP server port number.</value>
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public int HttpServerPortNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the legacy web socket port number.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The legacy web socket port number.</value>
|
||||||
|
[ProtoMember(59)]
|
||||||
|
public int LegacyWebSocketPortNumber { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether [enable internet providers].
|
/// Gets or sets a value indicating whether [enable internet providers].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -255,6 +276,10 @@ namespace MediaBrowser.Model.Configuration
|
|||||||
public ServerConfiguration()
|
public ServerConfiguration()
|
||||||
: base()
|
: base()
|
||||||
{
|
{
|
||||||
|
HttpServerPortNumber = 8096;
|
||||||
|
LegacyWebSocketPortNumber = 8945;
|
||||||
|
EnableHttpLevelLogging = true;
|
||||||
|
|
||||||
#if (DEBUG)
|
#if (DEBUG)
|
||||||
EnableDeveloperTools = true;
|
EnableDeveloperTools = true;
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,7 +14,7 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MimeTypes = MediaBrowser.Common.Net.MimeTypes;
|
using MimeTypes = MediaBrowser.Common.Net.MimeTypes;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.HttpServer
|
namespace MediaBrowser.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class BaseRestService
|
/// Class BaseRestService
|
@ -1,6 +1,6 @@
|
|||||||
using Funq;
|
using Funq;
|
||||||
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
@ -26,7 +26,7 @@ using System.Reflection;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.HttpServer
|
namespace MediaBrowser.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class HttpServer
|
/// Class HttpServer
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
|||||||
using WebSocketMessageType = MediaBrowser.Common.Net.WebSocketMessageType;
|
using WebSocketMessageType = MediaBrowser.Common.Net.WebSocketMessageType;
|
||||||
using WebSocketState = MediaBrowser.Common.Net.WebSocketState;
|
using WebSocketState = MediaBrowser.Common.Net.WebSocketState;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.HttpServer
|
namespace MediaBrowser.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class NativeWebSocket
|
/// Class NativeWebSocket
|
@ -1,9 +1,9 @@
|
|||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.HttpServer
|
namespace MediaBrowser.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ServerFactory
|
/// Class ServerFactory
|
@ -2,7 +2,7 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.HttpServer
|
namespace MediaBrowser.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class StreamWriter
|
/// Class StreamWriter
|
@ -2,7 +2,7 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.HttpServer
|
namespace MediaBrowser.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class GetDashboardResource
|
/// Class GetDashboardResource
|
@ -32,6 +32,9 @@
|
|||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Alchemy">
|
||||||
|
<HintPath>..\packages\Alchemy.2.2.1\lib\net40\Alchemy.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="BdInfo, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="BdInfo, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\MediaBrowser.BdInfo.1.0.0.2\lib\net45\BdInfo.dll</HintPath>
|
<HintPath>..\packages\MediaBrowser.BdInfo.1.0.0.2\lib\net45\BdInfo.dll</HintPath>
|
||||||
@ -39,6 +42,39 @@
|
|||||||
<Reference Include="MoreLinq">
|
<Reference Include="MoreLinq">
|
||||||
<HintPath>..\packages\morelinq.1.0.15631-beta\lib\net35\MoreLinq.dll</HintPath>
|
<HintPath>..\packages\morelinq.1.0.15631-beta\lib\net35\MoreLinq.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="NLog">
|
||||||
|
<HintPath>..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack">
|
||||||
|
<HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.Api.Swagger">
|
||||||
|
<HintPath>..\packages\ServiceStack.Api.Swagger.3.9.38\lib\net35\ServiceStack.Api.Swagger.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.Common">
|
||||||
|
<HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.Interfaces">
|
||||||
|
<HintPath>..\packages\ServiceStack.Common.3.9.38\lib\net35\ServiceStack.Interfaces.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.Logging.NLog">
|
||||||
|
<HintPath>..\packages\ServiceStack.Logging.NLog.1.0.6.0\lib\net35\ServiceStack.Logging.NLog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.OrmLite">
|
||||||
|
<HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.OrmLite.SqlServer">
|
||||||
|
<HintPath>..\packages\ServiceStack.OrmLite.SqlServer.3.9.39\lib\ServiceStack.OrmLite.SqlServer.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.Redis">
|
||||||
|
<HintPath>..\packages\ServiceStack.Redis.3.9.38\lib\net35\ServiceStack.Redis.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.ServiceInterface">
|
||||||
|
<HintPath>..\packages\ServiceStack.3.9.38\lib\net35\ServiceStack.ServiceInterface.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ServiceStack.Text">
|
||||||
|
<HintPath>..\packages\ServiceStack.Text.3.9.38\lib\net35\ServiceStack.Text.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.SQLite">
|
<Reference Include="System.Data.SQLite">
|
||||||
@ -47,6 +83,16 @@
|
|||||||
<Reference Include="System.Data.SQLite.Linq">
|
<Reference Include="System.Data.SQLite.Linq">
|
||||||
<HintPath>..\packages\System.Data.SQLite.1.0.84.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
|
<HintPath>..\packages\System.Data.SQLite.1.0.84.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.Reactive.Core">
|
||||||
|
<HintPath>..\packages\Rx-Core.2.1.30214.0\lib\Net45\System.Reactive.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Reactive.Interfaces">
|
||||||
|
<HintPath>..\packages\Rx-Interfaces.2.1.30214.0\lib\Net45\System.Reactive.Interfaces.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Reactive.Linq">
|
||||||
|
<HintPath>..\packages\Rx-Linq.2.1.30214.0\lib\Net45\System.Reactive.Linq.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
@ -59,6 +105,12 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="BdInfo\BdInfoExaminer.cs" />
|
<Compile Include="BdInfo\BdInfoExaminer.cs" />
|
||||||
<Compile Include="Configuration\ServerConfigurationManager.cs" />
|
<Compile Include="Configuration\ServerConfigurationManager.cs" />
|
||||||
|
<Compile Include="HttpServer\BaseRestService.cs" />
|
||||||
|
<Compile Include="HttpServer\HttpServer.cs" />
|
||||||
|
<Compile Include="HttpServer\NativeWebSocket.cs" />
|
||||||
|
<Compile Include="HttpServer\ServerFactory.cs" />
|
||||||
|
<Compile Include="HttpServer\StreamWriter.cs" />
|
||||||
|
<Compile Include="HttpServer\SwaggerService.cs" />
|
||||||
<Compile Include="Library\CoreResolutionIgnoreRule.cs" />
|
<Compile Include="Library\CoreResolutionIgnoreRule.cs" />
|
||||||
<Compile Include="Library\LibraryManager.cs" />
|
<Compile Include="Library\LibraryManager.cs" />
|
||||||
<Compile Include="Library\ResolverHelper.cs" />
|
<Compile Include="Library\ResolverHelper.cs" />
|
||||||
@ -82,13 +134,18 @@
|
|||||||
<Compile Include="ScheduledTasks\ImageCleanupTask.cs" />
|
<Compile Include="ScheduledTasks\ImageCleanupTask.cs" />
|
||||||
<Compile Include="ScheduledTasks\PluginUpdateTask.cs" />
|
<Compile Include="ScheduledTasks\PluginUpdateTask.cs" />
|
||||||
<Compile Include="ServerApplicationPaths.cs" />
|
<Compile Include="ServerApplicationPaths.cs" />
|
||||||
|
<Compile Include="ServerManager\ServerManager.cs" />
|
||||||
|
<Compile Include="ServerManager\WebSocketConnection.cs" />
|
||||||
<Compile Include="Sqlite\SQLiteDisplayPreferencesRepository.cs" />
|
<Compile Include="Sqlite\SQLiteDisplayPreferencesRepository.cs" />
|
||||||
<Compile Include="Sqlite\SQLiteExtensions.cs" />
|
<Compile Include="Sqlite\SQLiteExtensions.cs" />
|
||||||
<Compile Include="Sqlite\SQLiteItemRepository.cs" />
|
<Compile Include="Sqlite\SQLiteItemRepository.cs" />
|
||||||
<Compile Include="Sqlite\SQLiteRepository.cs" />
|
<Compile Include="Sqlite\SQLiteRepository.cs" />
|
||||||
<Compile Include="Sqlite\SQLiteUserDataRepository.cs" />
|
<Compile Include="Sqlite\SQLiteUserDataRepository.cs" />
|
||||||
<Compile Include="Sqlite\SQLiteUserRepository.cs" />
|
<Compile Include="Sqlite\SQLiteUserRepository.cs" />
|
||||||
|
<Compile Include="Udp\UdpServer.cs" />
|
||||||
<Compile Include="Updates\InstallationManager.cs" />
|
<Compile Include="Updates\InstallationManager.cs" />
|
||||||
|
<Compile Include="WebSocket\AlchemyServer.cs" />
|
||||||
|
<Compile Include="WebSocket\AlchemyWebSocket.cs" />
|
||||||
<Compile Include="WorldWeatherOnline\WeatherProvider.cs" />
|
<Compile Include="WorldWeatherOnline\WeatherProvider.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -110,6 +167,49 @@
|
|||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Include="README.txt" />
|
||||||
|
<Content Include="swagger-ui\css\screen.css">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\images\pet_store_api.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\images\wordnik_api.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\index.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\backbone-min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\handlebars.runtime-1.0.0.beta.6.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\jquery.ba-bbq.min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\jquery.min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\jquery.slideto.min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\jquery.wiggle.min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\swagger.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\lib\underscore-min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\swagger-ui.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="swagger-ui\swagger-ui.min.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="x64\SQLite.Interop.dll">
|
<Content Include="x64\SQLite.Interop.dll">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
@ -119,6 +219,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
|
<EmbeddedResource Include="ServerManager\RegisterServer.bat" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
|
using MediaBrowser.Controller;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using System;
|
using System;
|
||||||
@ -15,7 +16,7 @@ using System.Text;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.ServerManager
|
namespace MediaBrowser.Server.Implementations.ServerManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Manages the Http Server, Udp Server and WebSocket connections
|
/// Manages the Http Server, Udp Server and WebSocket connections
|
||||||
@ -73,16 +74,11 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IApplicationHost _applicationHost;
|
private readonly IApplicationHost _applicationHost;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The _kernel
|
|
||||||
/// </summary>
|
|
||||||
private readonly IKernel _kernel;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the configuration manager.
|
/// Gets or sets the configuration manager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The configuration manager.</value>
|
/// <value>The configuration manager.</value>
|
||||||
private IConfigurationManager ConfigurationManager { get; set; }
|
private IServerConfigurationManager ConfigurationManager { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether [supports web socket].
|
/// Gets a value indicating whether [supports web socket].
|
||||||
@ -99,7 +95,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
/// <value>The web socket port number.</value>
|
/// <value>The web socket port number.</value>
|
||||||
public int WebSocketPortNumber
|
public int WebSocketPortNumber
|
||||||
{
|
{
|
||||||
get { return SupportsNativeWebSocket ? ConfigurationManager.CommonConfiguration.HttpServerPortNumber : ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber; }
|
get { return SupportsNativeWebSocket ? ConfigurationManager.Configuration.HttpServerPortNumber : ConfigurationManager.Configuration.LegacyWebSocketPortNumber; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -108,26 +104,23 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
/// <value>The web socket listeners.</value>
|
/// <value>The web socket listeners.</value>
|
||||||
private readonly List<IWebSocketListener> _webSocketListeners = new List<IWebSocketListener>();
|
private readonly List<IWebSocketListener> _webSocketListeners = new List<IWebSocketListener>();
|
||||||
|
|
||||||
|
private Kernel _kernel;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ServerManager" /> class.
|
/// Initializes a new instance of the <see cref="ServerManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="applicationHost">The application host.</param>
|
/// <param name="applicationHost">The application host.</param>
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <param name="networkManager">The network manager.</param>
|
/// <param name="networkManager">The network manager.</param>
|
||||||
/// <param name="jsonSerializer">The json serializer.</param>
|
/// <param name="jsonSerializer">The json serializer.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="configurationManager">The configuration manager.</param>
|
/// <param name="configurationManager">The configuration manager.</param>
|
||||||
/// <exception cref="System.ArgumentNullException">applicationHost</exception>
|
/// <exception cref="System.ArgumentNullException">applicationHost</exception>
|
||||||
public ServerManager(IApplicationHost applicationHost, IKernel kernel, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger, IConfigurationManager configurationManager)
|
public ServerManager(IApplicationHost applicationHost, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger, IServerConfigurationManager configurationManager, Kernel kernel)
|
||||||
{
|
{
|
||||||
if (applicationHost == null)
|
if (applicationHost == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("applicationHost");
|
throw new ArgumentNullException("applicationHost");
|
||||||
}
|
}
|
||||||
if (kernel == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("kernel");
|
|
||||||
}
|
|
||||||
if (networkManager == null)
|
if (networkManager == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("networkManager");
|
throw new ArgumentNullException("networkManager");
|
||||||
@ -143,10 +136,10 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
|
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_jsonSerializer = jsonSerializer;
|
_jsonSerializer = jsonSerializer;
|
||||||
_kernel = kernel;
|
|
||||||
_applicationHost = applicationHost;
|
_applicationHost = applicationHost;
|
||||||
_networkManager = networkManager;
|
_networkManager = networkManager;
|
||||||
ConfigurationManager = configurationManager;
|
ConfigurationManager = configurationManager;
|
||||||
|
_kernel = kernel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -175,17 +168,11 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void ReloadExternalWebSocketServer()
|
private void ReloadExternalWebSocketServer()
|
||||||
{
|
{
|
||||||
// Avoid windows firewall prompts in the ui
|
|
||||||
if (_kernel.KernelContext != KernelContext.Server)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DisposeExternalWebSocketServer();
|
DisposeExternalWebSocketServer();
|
||||||
|
|
||||||
ExternalWebSocketServer = _applicationHost.Resolve<IWebSocketServer>();
|
ExternalWebSocketServer = _applicationHost.Resolve<IWebSocketServer>();
|
||||||
|
|
||||||
ExternalWebSocketServer.Start(ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber);
|
ExternalWebSocketServer.Start(ConfigurationManager.Configuration.LegacyWebSocketPortNumber);
|
||||||
ExternalWebSocketServer.WebSocketConnected += HttpServer_WebSocketConnected;
|
ExternalWebSocketServer.WebSocketConnected += HttpServer_WebSocketConnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +195,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpServer = _applicationHost.Resolve<IHttpServer>();
|
HttpServer = _applicationHost.Resolve<IHttpServer>();
|
||||||
HttpServer.EnableHttpRequestLogging = ConfigurationManager.CommonConfiguration.EnableHttpLevelLogging;
|
HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging;
|
||||||
HttpServer.Start(_kernel.HttpServerUrlPrefix);
|
HttpServer.Start(_kernel.HttpServerUrlPrefix);
|
||||||
}
|
}
|
||||||
catch (HttpListenerException ex)
|
catch (HttpListenerException ex)
|
||||||
@ -275,12 +262,6 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Avoid windows firewall prompts in the ui
|
|
||||||
if (_kernel.KernelContext != KernelContext.Server)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DisposeUdpServer();
|
DisposeUdpServer();
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -305,7 +286,9 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
/// <param name="e">The <see cref="UdpMessageReceivedEventArgs" /> instance containing the event data.</param>
|
/// <param name="e">The <see cref="UdpMessageReceivedEventArgs" /> instance containing the event data.</param>
|
||||||
async void UdpServer_MessageReceived(object sender, UdpMessageReceivedEventArgs e)
|
async void UdpServer_MessageReceived(object sender, UdpMessageReceivedEventArgs e)
|
||||||
{
|
{
|
||||||
var expectedMessage = String.Format("who is MediaBrowser{0}?", _kernel.KernelContext);
|
var context = "Server";
|
||||||
|
|
||||||
|
var expectedMessage = String.Format("who is MediaBrowser{0}?", context);
|
||||||
var expectedMessageBytes = Encoding.UTF8.GetBytes(expectedMessage);
|
var expectedMessageBytes = Encoding.UTF8.GetBytes(expectedMessage);
|
||||||
|
|
||||||
if (expectedMessageBytes.SequenceEqual(e.Bytes))
|
if (expectedMessageBytes.SequenceEqual(e.Bytes))
|
||||||
@ -313,7 +296,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
_logger.Info("Received UDP server request from " + e.RemoteEndPoint);
|
_logger.Info("Received UDP server request from " + e.RemoteEndPoint);
|
||||||
|
|
||||||
// Send a response back with our ip address and port
|
// Send a response back with our ip address and port
|
||||||
var response = String.Format("MediaBrowser{0}|{1}:{2}", _kernel.KernelContext, _networkManager.GetLocalIpAddress(), _kernel.UdpServerPortNumber);
|
var response = String.Format("MediaBrowser{0}|{1}:{2}", context, _networkManager.GetLocalIpAddress(), _kernel.UdpServerPortNumber);
|
||||||
|
|
||||||
await UdpServer.SendAsync(Encoding.UTF8.GetBytes(response), e.RemoteEndPoint);
|
await UdpServer.SendAsync(Encoding.UTF8.GetBytes(response), e.RemoteEndPoint);
|
||||||
}
|
}
|
||||||
@ -447,7 +430,7 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
var tmpFile = Path.Combine(ConfigurationManager.CommonApplicationPaths.TempDirectory, Guid.NewGuid() + ".bat");
|
var tmpFile = Path.Combine(ConfigurationManager.CommonApplicationPaths.TempDirectory, Guid.NewGuid() + ".bat");
|
||||||
|
|
||||||
// Extract the bat file
|
// Extract the bat file
|
||||||
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Common.Implementations.ServerManager.RegisterServer.bat"))
|
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Server.Implementations.ServerManager.RegisterServer.bat"))
|
||||||
{
|
{
|
||||||
using (var fileStream = File.Create(tmpFile))
|
using (var fileStream = File.Create(tmpFile))
|
||||||
{
|
{
|
||||||
@ -459,10 +442,10 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
{
|
{
|
||||||
FileName = tmpFile,
|
FileName = tmpFile,
|
||||||
|
|
||||||
Arguments = string.Format("{0} {1} {2} {3}", ConfigurationManager.CommonConfiguration.HttpServerPortNumber,
|
Arguments = string.Format("{0} {1} {2} {3}", ConfigurationManager.Configuration.HttpServerPortNumber,
|
||||||
_kernel.HttpServerUrlPrefix,
|
_kernel.HttpServerUrlPrefix,
|
||||||
_kernel.UdpServerPortNumber,
|
_kernel.UdpServerPortNumber,
|
||||||
ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber),
|
ConfigurationManager.Configuration.LegacyWebSocketPortNumber),
|
||||||
|
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
WindowStyle = ProcessWindowStyle.Hidden,
|
WindowStyle = ProcessWindowStyle.Hidden,
|
||||||
@ -517,14 +500,14 @@ namespace MediaBrowser.Common.Implementations.ServerManager
|
|||||||
/// <exception cref="System.NotImplementedException"></exception>
|
/// <exception cref="System.NotImplementedException"></exception>
|
||||||
void _kernel_ConfigurationUpdated(object sender, EventArgs e)
|
void _kernel_ConfigurationUpdated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
HttpServer.EnableHttpRequestLogging = ConfigurationManager.CommonConfiguration.EnableHttpLevelLogging;
|
HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging;
|
||||||
|
|
||||||
if (!string.Equals(HttpServer.UrlPrefix, _kernel.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
|
if (!string.Equals(HttpServer.UrlPrefix, _kernel.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
ReloadHttpServer();
|
ReloadHttpServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SupportsNativeWebSocket && ExternalWebSocketServer != null && ExternalWebSocketServer.Port != ConfigurationManager.CommonConfiguration.LegacyWebSocketPortNumber)
|
if (!SupportsNativeWebSocket && ExternalWebSocketServer != null && ExternalWebSocketServer.Port != ConfigurationManager.Configuration.LegacyWebSocketPortNumber)
|
||||||
{
|
{
|
||||||
ReloadExternalWebSocketServer();
|
ReloadExternalWebSocketServer();
|
||||||
}
|
}
|
@ -6,7 +6,7 @@ using System.IO;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.ServerManager
|
namespace MediaBrowser.Server.Implementations.ServerManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class WebSocketConnection
|
/// Class WebSocketConnection
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
@ -8,7 +8,7 @@ using System.Reactive.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.Udp
|
namespace MediaBrowser.Server.Implementations.Udp
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides a Udp Server
|
/// Provides a Udp Server
|
@ -1,11 +1,9 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Events;
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.Kernel;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.Plugins;
|
using MediaBrowser.Common.Plugins;
|
||||||
using MediaBrowser.Common.Progress;
|
using MediaBrowser.Common.Progress;
|
||||||
using MediaBrowser.Common.Updates;
|
using MediaBrowser.Common.Updates;
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Updates;
|
using MediaBrowser.Controller.Updates;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
@ -72,7 +70,7 @@ namespace MediaBrowser.Server.Implementations.Updates
|
|||||||
|
|
||||||
EventHelper.QueueEventIfNotNull(PluginUpdated, this, new GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> { Argument = new Tuple<IPlugin, PackageVersionInfo>(plugin, newVersion) }, _logger);
|
EventHelper.QueueEventIfNotNull(PluginUpdated, this, new GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> { Argument = new Tuple<IPlugin, PackageVersionInfo>(plugin, newVersion) }, _logger);
|
||||||
|
|
||||||
Kernel.NotifyPendingRestart();
|
ApplicationHost.NotifyPendingRestart();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -91,7 +89,7 @@ namespace MediaBrowser.Server.Implementations.Updates
|
|||||||
|
|
||||||
EventHelper.QueueEventIfNotNull(PluginInstalled, this, new GenericEventArgs<PackageVersionInfo> { Argument = package }, _logger);
|
EventHelper.QueueEventIfNotNull(PluginInstalled, this, new GenericEventArgs<PackageVersionInfo> { Argument = package }, _logger);
|
||||||
|
|
||||||
Kernel.NotifyPendingRestart();
|
ApplicationHost.NotifyPendingRestart();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -123,19 +121,16 @@ namespace MediaBrowser.Server.Implementations.Updates
|
|||||||
/// <value>The application host.</value>
|
/// <value>The application host.</value>
|
||||||
protected IApplicationHost ApplicationHost { get; private set; }
|
protected IApplicationHost ApplicationHost { get; private set; }
|
||||||
|
|
||||||
private IKernel Kernel { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="InstallationManager" /> class.
|
/// Initializes a new instance of the <see cref="InstallationManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <param name="httpClient">The HTTP client.</param>
|
/// <param name="httpClient">The HTTP client.</param>
|
||||||
/// <param name="packageManager">The package manager.</param>
|
/// <param name="packageManager">The package manager.</param>
|
||||||
/// <param name="jsonSerializer">The json serializer.</param>
|
/// <param name="jsonSerializer">The json serializer.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="appHost">The app host.</param>
|
/// <param name="appHost">The app host.</param>
|
||||||
/// <exception cref="System.ArgumentNullException">zipClient</exception>
|
/// <exception cref="System.ArgumentNullException">zipClient</exception>
|
||||||
public InstallationManager(IKernel kernel, IHttpClient httpClient, IPackageManager packageManager, IJsonSerializer jsonSerializer, ILogger logger, IApplicationHost appHost)
|
public InstallationManager(IHttpClient httpClient, IPackageManager packageManager, IJsonSerializer jsonSerializer, ILogger logger, IApplicationHost appHost)
|
||||||
{
|
{
|
||||||
if (packageManager == null)
|
if (packageManager == null)
|
||||||
{
|
{
|
||||||
@ -161,7 +156,6 @@ namespace MediaBrowser.Server.Implementations.Updates
|
|||||||
ApplicationHost = appHost;
|
ApplicationHost = appHost;
|
||||||
_packageManager = packageManager;
|
_packageManager = packageManager;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
Kernel = kernel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -454,7 +448,7 @@ namespace MediaBrowser.Server.Implementations.Updates
|
|||||||
|
|
||||||
OnPluginUninstalled(plugin);
|
OnPluginUninstalled(plugin);
|
||||||
|
|
||||||
Kernel.NotifyPendingRestart();
|
ApplicationHost.NotifyPendingRestart();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -5,7 +5,7 @@ using MediaBrowser.Model.Logging;
|
|||||||
using System;
|
using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.WebSocket
|
namespace MediaBrowser.Server.Implementations.WebSocket
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class AlchemyServer
|
/// Class AlchemyServer
|
@ -6,7 +6,7 @@ using System.Text;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Common.Implementations.WebSocket
|
namespace MediaBrowser.Server.Implementations.WebSocket
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class AlchemyWebSocket
|
/// Class AlchemyWebSocket
|
@ -1,6 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="Alchemy" version="2.2.1" targetFramework="net45" />
|
||||||
<package id="MediaBrowser.BdInfo" version="1.0.0.2" targetFramework="net45" />
|
<package id="MediaBrowser.BdInfo" version="1.0.0.2" targetFramework="net45" />
|
||||||
<package id="morelinq" version="1.0.15631-beta" targetFramework="net45" />
|
<package id="morelinq" version="1.0.15631-beta" targetFramework="net45" />
|
||||||
|
<package id="NLog" version="2.0.0.2000" targetFramework="net45" />
|
||||||
|
<package id="Rx-Core" version="2.1.30214.0" targetFramework="net45" />
|
||||||
|
<package id="Rx-Interfaces" version="2.1.30214.0" targetFramework="net45" />
|
||||||
|
<package id="Rx-Linq" version="2.1.30214.0" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack" version="3.9.38" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack.Api.Swagger" version="3.9.38" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack.Common" version="3.9.38" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack.Logging.NLog" version="1.0.6.0" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack.OrmLite.SqlServer" version="3.9.39" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack.Redis" version="3.9.38" targetFramework="net45" />
|
||||||
|
<package id="ServiceStack.Text" version="3.9.38" targetFramework="net45" />
|
||||||
<package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net45" />
|
<package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Before Width: | Height: | Size: 824 B After Width: | Height: | Size: 824 B |
Before Width: | Height: | Size: 980 B After Width: | Height: | Size: 980 B |
@ -1,18 +1,17 @@
|
|||||||
using System.IO;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Common.Constants;
|
using MediaBrowser.Common.Constants;
|
||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Implementations.Updates;
|
||||||
using MediaBrowser.Common.Updates;
|
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Server.Implementations;
|
using MediaBrowser.Server.Implementations;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using System.Net.Cache;
|
using System.Net.Cache;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
@ -209,9 +208,9 @@ namespace MediaBrowser.ServerApplication
|
|||||||
/// Opens the dashboard page.
|
/// Opens the dashboard page.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="page">The page.</param>
|
/// <param name="page">The page.</param>
|
||||||
public static void OpenDashboardPage(string page, User loggedInUser, IConfigurationManager configurationManager)
|
public static void OpenDashboardPage(string page, User loggedInUser, IServerConfigurationManager configurationManager)
|
||||||
{
|
{
|
||||||
var url = "http://localhost:" + configurationManager.CommonConfiguration.HttpServerPortNumber + "/" +
|
var url = "http://localhost:" + configurationManager.Configuration.HttpServerPortNumber + "/" +
|
||||||
Kernel.Instance.WebApplicationName + "/dashboard/" + page;
|
Kernel.Instance.WebApplicationName + "/dashboard/" + page;
|
||||||
|
|
||||||
if (loggedInUser != null)
|
if (loggedInUser != null)
|
||||||
|
@ -2,12 +2,11 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Common.Constants;
|
using MediaBrowser.Common.Constants;
|
||||||
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.Implementations;
|
using MediaBrowser.Common.Implementations;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.Implementations.Logging;
|
|
||||||
using MediaBrowser.Common.Implementations.ScheduledTasks;
|
using MediaBrowser.Common.Implementations.ScheduledTasks;
|
||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.Updates;
|
using MediaBrowser.Common.Updates;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
@ -17,15 +16,18 @@ using MediaBrowser.Controller.Resolvers;
|
|||||||
using MediaBrowser.Controller.Updates;
|
using MediaBrowser.Controller.Updates;
|
||||||
using MediaBrowser.IsoMounter;
|
using MediaBrowser.IsoMounter;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Logging;
|
|
||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
using MediaBrowser.Model.System;
|
using MediaBrowser.Model.System;
|
||||||
using MediaBrowser.Model.Updates;
|
using MediaBrowser.Model.Updates;
|
||||||
using MediaBrowser.Server.Implementations;
|
using MediaBrowser.Server.Implementations;
|
||||||
using MediaBrowser.Server.Implementations.BdInfo;
|
using MediaBrowser.Server.Implementations.BdInfo;
|
||||||
using MediaBrowser.Server.Implementations.Configuration;
|
using MediaBrowser.Server.Implementations.Configuration;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using MediaBrowser.Server.Implementations.Library;
|
using MediaBrowser.Server.Implementations.Library;
|
||||||
|
using MediaBrowser.Server.Implementations.ServerManager;
|
||||||
|
using MediaBrowser.Server.Implementations.Udp;
|
||||||
using MediaBrowser.Server.Implementations.Updates;
|
using MediaBrowser.Server.Implementations.Updates;
|
||||||
|
using MediaBrowser.Server.Implementations.WebSocket;
|
||||||
using MediaBrowser.ServerApplication.Implementations;
|
using MediaBrowser.ServerApplication.Implementations;
|
||||||
using MediaBrowser.WebDashboard.Api;
|
using MediaBrowser.WebDashboard.Api;
|
||||||
using System;
|
using System;
|
||||||
@ -41,16 +43,13 @@ namespace MediaBrowser.ServerApplication
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class CompositionRoot
|
/// Class CompositionRoot
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>
|
public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>, IServerApplicationHost
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the server kernel.
|
/// Gets the server kernel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The server kernel.</value>
|
/// <value>The server kernel.</value>
|
||||||
protected Kernel ServerKernel
|
protected Kernel ServerKernel { get; set; }
|
||||||
{
|
|
||||||
get { return (Kernel)Kernel; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the server configuration manager.
|
/// Gets the server configuration manager.
|
||||||
@ -61,15 +60,6 @@ namespace MediaBrowser.ServerApplication
|
|||||||
get { return (IServerConfigurationManager)ConfigurationManager; }
|
get { return (IServerConfigurationManager)ConfigurationManager; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the kernel.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>IKernel.</returns>
|
|
||||||
protected override IKernel GetKernel()
|
|
||||||
{
|
|
||||||
return new Kernel(this, XmlSerializer, LogManager, ServerConfigurationManager);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the name of the log file prefix.
|
/// Gets the name of the log file prefix.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -88,30 +78,50 @@ namespace MediaBrowser.ServerApplication
|
|||||||
return new ServerConfigurationManager(ApplicationPaths, LogManager, XmlSerializer);
|
return new ServerConfigurationManager(ApplicationPaths, LogManager, XmlSerializer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IInstallationManager InstallationManager { get; set; }
|
||||||
|
private IServerManager ServerManager { get; set; }
|
||||||
|
|
||||||
|
public override async Task Init()
|
||||||
|
{
|
||||||
|
await base.Init().ConfigureAwait(false);
|
||||||
|
|
||||||
|
await ServerKernel.Init().ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers resources that classes will depend on
|
/// Registers resources that classes will depend on
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected override async Task RegisterResources()
|
protected override async Task RegisterResources()
|
||||||
{
|
{
|
||||||
|
ServerKernel = new Kernel(this, XmlSerializer, LogManager, ServerConfigurationManager);
|
||||||
|
|
||||||
await base.RegisterResources().ConfigureAwait(false);
|
await base.RegisterResources().ConfigureAwait(false);
|
||||||
|
|
||||||
|
RegisterSingleInstance<IServerApplicationHost>(this);
|
||||||
RegisterSingleInstance<IServerApplicationPaths>(ApplicationPaths);
|
RegisterSingleInstance<IServerApplicationPaths>(ApplicationPaths);
|
||||||
|
|
||||||
RegisterSingleInstance(ServerKernel);
|
RegisterSingleInstance(ServerKernel);
|
||||||
RegisterSingleInstance(ServerConfigurationManager);
|
RegisterSingleInstance(ServerConfigurationManager);
|
||||||
|
|
||||||
|
RegisterSingleInstance<IWebSocketServer>(() => new AlchemyServer(Logger));
|
||||||
|
RegisterSingleInstance<IUdpServer>(new UdpServer(Logger), false);
|
||||||
|
|
||||||
RegisterSingleInstance<IIsoManager>(new PismoIsoManager(Logger));
|
RegisterSingleInstance<IIsoManager>(new PismoIsoManager(Logger));
|
||||||
RegisterSingleInstance<IBlurayExaminer>(new BdInfoExaminer());
|
RegisterSingleInstance<IBlurayExaminer>(new BdInfoExaminer());
|
||||||
RegisterSingleInstance<IZipClient>(new DotNetZipClient());
|
RegisterSingleInstance<IZipClient>(new DotNetZipClient());
|
||||||
RegisterSingleInstance(ServerFactory.CreateServer(this, ProtobufSerializer, Logger, "Media Browser", "index.html"), false);
|
RegisterSingleInstance(ServerFactory.CreateServer(this, ProtobufSerializer, Logger, "Media Browser", "index.html"), false);
|
||||||
|
|
||||||
|
ServerManager = new ServerManager(this, NetworkManager, JsonSerializer, Logger, ServerConfigurationManager, ServerKernel);
|
||||||
|
RegisterSingleInstance(ServerManager);
|
||||||
|
|
||||||
var userManager = new UserManager(ServerKernel, Logger, ServerConfigurationManager);
|
var userManager = new UserManager(ServerKernel, Logger, ServerConfigurationManager);
|
||||||
|
|
||||||
RegisterSingleInstance<IUserManager>(userManager);
|
RegisterSingleInstance<IUserManager>(userManager);
|
||||||
|
|
||||||
RegisterSingleInstance<ILibraryManager>(new LibraryManager(ServerKernel, Logger, TaskManager, userManager, ServerConfigurationManager));
|
RegisterSingleInstance<ILibraryManager>(new LibraryManager(ServerKernel, Logger, TaskManager, userManager, ServerConfigurationManager));
|
||||||
|
|
||||||
RegisterSingleInstance<IInstallationManager>(new InstallationManager(Kernel, HttpClient, PackageManager, JsonSerializer, Logger, this));
|
InstallationManager = new InstallationManager(HttpClient, PackageManager, JsonSerializer, Logger, this);
|
||||||
|
RegisterSingleInstance(InstallationManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -121,6 +131,11 @@ namespace MediaBrowser.ServerApplication
|
|||||||
{
|
{
|
||||||
base.FindParts();
|
base.FindParts();
|
||||||
|
|
||||||
|
Resolve<IHttpServer>().Init(GetExports<IRestfulService>(false));
|
||||||
|
Resolve<IServerManager>().AddWebSocketListeners(GetExports<IWebSocketListener>(false));
|
||||||
|
|
||||||
|
Resolve<IServerManager>().Start();
|
||||||
|
|
||||||
Resolve<ILibraryManager>().AddParts(GetExports<IResolverIgnoreRule>(), GetExports<IVirtualFolderCreator>(), GetExports<IItemResolver>(), GetExports<IIntroProvider>());
|
Resolve<ILibraryManager>().AddParts(GetExports<IResolverIgnoreRule>(), GetExports<IVirtualFolderCreator>(), GetExports<IItemResolver>(), GetExports<IIntroProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,19 +172,6 @@ namespace MediaBrowser.ServerApplication
|
|||||||
new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };
|
new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Updates the application.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="package">The package that contains the update</param>
|
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
|
||||||
/// <param name="progress">The progress.</param>
|
|
||||||
/// <returns>Task.</returns>
|
|
||||||
public override Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress<double> progress)
|
|
||||||
{
|
|
||||||
var pkgManager = Resolve<IPackageManager>();
|
|
||||||
return pkgManager.InstallPackage(progress, package, cancellationToken);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the composable part assemblies.
|
/// Gets the composable part assemblies.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -195,7 +197,7 @@ namespace MediaBrowser.ServerApplication
|
|||||||
yield return typeof(SystemInfo).Assembly;
|
yield return typeof(SystemInfo).Assembly;
|
||||||
|
|
||||||
// Include composable parts in the Common assembly
|
// Include composable parts in the Common assembly
|
||||||
yield return typeof(IKernel).Assembly;
|
yield return typeof(IApplicationHost).Assembly;
|
||||||
|
|
||||||
// Include composable parts in the Controller assembly
|
// Include composable parts in the Controller assembly
|
||||||
yield return typeof(Kernel).Assembly;
|
yield return typeof(Kernel).Assembly;
|
||||||
@ -210,6 +212,25 @@ namespace MediaBrowser.ServerApplication
|
|||||||
yield return GetType().Assembly;
|
yield return GetType().Assembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the system status.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>SystemInfo.</returns>
|
||||||
|
public virtual SystemInfo GetSystemInfo()
|
||||||
|
{
|
||||||
|
return new SystemInfo
|
||||||
|
{
|
||||||
|
HasPendingRestart = HasPendingRestart,
|
||||||
|
Version = ApplicationVersion.ToString(),
|
||||||
|
IsNetworkDeployed = CanSelfUpdate,
|
||||||
|
WebSocketPortNumber = ServerManager.WebSocketPortNumber,
|
||||||
|
SupportsNativeWebSocket = ServerManager.SupportsNativeWebSocket,
|
||||||
|
FailedPluginAssemblies = FailedAssemblies.ToArray(),
|
||||||
|
InProgressInstallations = InstallationManager.CurrentInstallations.Select(i => i.Item1).ToArray(),
|
||||||
|
CompletedInstallations = InstallationManager.CompletedInstallations.ToArray()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down.
|
/// Shuts down.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using MediaBrowser.Common;
|
using MediaBrowser.Common;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -20,14 +20,14 @@ namespace MediaBrowser.ServerApplication
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IUserManager _userManager;
|
private readonly IUserManager _userManager;
|
||||||
|
|
||||||
private readonly IConfigurationManager _configurationManager;
|
private readonly IServerConfigurationManager _configurationManager;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="StartupWizard" /> class.
|
/// Initializes a new instance of the <see cref="StartupWizard" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="appHost">The app host.</param>
|
/// <param name="appHost">The app host.</param>
|
||||||
/// <param name="userManager">The user manager.</param>
|
/// <param name="userManager">The user manager.</param>
|
||||||
public StartupWizard(IApplicationHost appHost, IUserManager userManager, IConfigurationManager configurationManager)
|
public StartupWizard(IApplicationHost appHost, IUserManager userManager, IServerConfigurationManager configurationManager)
|
||||||
{
|
{
|
||||||
_appHost = appHost;
|
_appHost = appHost;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
using MediaBrowser.Common.Events;
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.Plugins;
|
using MediaBrowser.Common.Plugins;
|
||||||
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using MediaBrowser.Controller.Updates;
|
using MediaBrowser.Controller.Updates;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
using MediaBrowser.Model.Tasks;
|
||||||
using MediaBrowser.Model.Updates;
|
using MediaBrowser.Model.Updates;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
@ -43,7 +46,9 @@ namespace MediaBrowser.ServerApplication
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _kernel
|
/// The _kernel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IKernel _kernel;
|
private readonly IServerApplicationHost _appHost;
|
||||||
|
|
||||||
|
private readonly ITaskManager _taskManager;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="WebSocketEvents" /> class.
|
/// Initializes a new instance of the <see cref="WebSocketEvents" /> class.
|
||||||
@ -51,14 +56,15 @@ namespace MediaBrowser.ServerApplication
|
|||||||
/// <param name="serverManager">The server manager.</param>
|
/// <param name="serverManager">The server manager.</param>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="userManager">The user manager.</param>
|
/// <param name="userManager">The user manager.</param>
|
||||||
public WebSocketEvents(IServerManager serverManager, IKernel kernel, ILogger logger, IUserManager userManager, ILibraryManager libraryManager, IInstallationManager installationManager)
|
public WebSocketEvents(IServerManager serverManager, IServerApplicationHost appHost, ILogger logger, IUserManager userManager, ILibraryManager libraryManager, IInstallationManager installationManager, ITaskManager taskManager)
|
||||||
{
|
{
|
||||||
_serverManager = serverManager;
|
_serverManager = serverManager;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
_libraryManager = libraryManager;
|
_libraryManager = libraryManager;
|
||||||
_installationManager = installationManager;
|
_installationManager = installationManager;
|
||||||
_kernel = kernel;
|
_appHost = appHost;
|
||||||
|
_taskManager = taskManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Run()
|
public void Run()
|
||||||
@ -68,13 +74,27 @@ namespace MediaBrowser.ServerApplication
|
|||||||
|
|
||||||
_libraryManager.LibraryChanged += libraryManager_LibraryChanged;
|
_libraryManager.LibraryChanged += libraryManager_LibraryChanged;
|
||||||
|
|
||||||
_kernel.HasPendingRestartChanged += kernel_HasPendingRestartChanged;
|
_appHost.HasPendingRestartChanged += kernel_HasPendingRestartChanged;
|
||||||
|
|
||||||
_installationManager.PluginUninstalled += InstallationManager_PluginUninstalled;
|
_installationManager.PluginUninstalled += InstallationManager_PluginUninstalled;
|
||||||
_installationManager.PackageInstalling += installationManager_PackageInstalling;
|
_installationManager.PackageInstalling += installationManager_PackageInstalling;
|
||||||
_installationManager.PackageInstallationCancelled += installationManager_PackageInstallationCancelled;
|
_installationManager.PackageInstallationCancelled += installationManager_PackageInstallationCancelled;
|
||||||
_installationManager.PackageInstallationCompleted += installationManager_PackageInstallationCompleted;
|
_installationManager.PackageInstallationCompleted += installationManager_PackageInstallationCompleted;
|
||||||
_installationManager.PackageInstallationFailed += installationManager_PackageInstallationFailed;
|
_installationManager.PackageInstallationFailed += installationManager_PackageInstallationFailed;
|
||||||
|
|
||||||
|
_taskManager.TaskExecuting += _taskManager_TaskExecuting;
|
||||||
|
_taskManager.TaskCompleted += _taskManager_TaskCompleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _taskManager_TaskCompleted(object sender, GenericEventArgs<TaskResult> e)
|
||||||
|
{
|
||||||
|
_serverManager.SendWebSocketMessage("ScheduledTaskEndExecute", e.Argument);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _taskManager_TaskExecuting(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var task = (IScheduledTask) sender;
|
||||||
|
_serverManager.SendWebSocketMessage("ScheduledTaskBeginExecute", task.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -144,9 +164,7 @@ namespace MediaBrowser.ServerApplication
|
|||||||
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
|
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
|
||||||
void kernel_HasPendingRestartChanged(object sender, EventArgs e)
|
void kernel_HasPendingRestartChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var kernel = (IKernel)sender;
|
_serverManager.SendWebSocketMessage("HasPendingRestartChanged", _appHost.GetSystemInfo());
|
||||||
|
|
||||||
_serverManager.SendWebSocketMessage("HasPendingRestartChanged", kernel.GetSystemInfo());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -196,7 +214,7 @@ namespace MediaBrowser.ServerApplication
|
|||||||
_installationManager.PackageInstallationCompleted -= installationManager_PackageInstallationCompleted;
|
_installationManager.PackageInstallationCompleted -= installationManager_PackageInstallationCompleted;
|
||||||
_installationManager.PackageInstallationFailed -= installationManager_PackageInstallationFailed;
|
_installationManager.PackageInstallationFailed -= installationManager_PackageInstallationFailed;
|
||||||
|
|
||||||
_kernel.HasPendingRestartChanged -= kernel_HasPendingRestartChanged;
|
_appHost.HasPendingRestartChanged -= kernel_HasPendingRestartChanged;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using MediaBrowser.Common.Kernel;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
@ -23,10 +23,7 @@ namespace MediaBrowser.WebDashboard.Api
|
|||||||
get { return "DashboardInfo"; }
|
get { return "DashboardInfo"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private readonly IServerApplicationHost _appHost;
|
||||||
/// The _kernel
|
|
||||||
/// </summary>
|
|
||||||
private readonly Kernel _kernel;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the task manager.
|
/// Gets or sets the task manager.
|
||||||
@ -42,14 +39,13 @@ namespace MediaBrowser.WebDashboard.Api
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="DashboardInfoWebSocketListener" /> class.
|
/// Initializes a new instance of the <see cref="DashboardInfoWebSocketListener" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="taskManager">The task manager.</param>
|
/// <param name="taskManager">The task manager.</param>
|
||||||
/// <param name="userManager">The user manager.</param>
|
/// <param name="userManager">The user manager.</param>
|
||||||
public DashboardInfoWebSocketListener(Kernel kernel, ILogger logger, ITaskManager taskManager, IUserManager userManager)
|
public DashboardInfoWebSocketListener(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager)
|
||||||
: base(logger)
|
: base(logger)
|
||||||
{
|
{
|
||||||
_kernel = kernel;
|
_appHost = appHost;
|
||||||
_taskManager = taskManager;
|
_taskManager = taskManager;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
}
|
}
|
||||||
@ -61,7 +57,7 @@ namespace MediaBrowser.WebDashboard.Api
|
|||||||
/// <returns>Task{IEnumerable{TaskInfo}}.</returns>
|
/// <returns>Task{IEnumerable{TaskInfo}}.</returns>
|
||||||
protected override Task<DashboardInfo> GetDataToSend(object state)
|
protected override Task<DashboardInfo> GetDataToSend(object state)
|
||||||
{
|
{
|
||||||
return Task.FromResult(DashboardService.GetDashboardInfo(_kernel, Logger, _taskManager, _userManager));
|
return Task.FromResult(DashboardService.GetDashboardInfo(_appHost, Logger, _taskManager, _userManager));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Implementations.HttpServer;
|
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
@ -7,6 +6,7 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
|
using MediaBrowser.Server.Implementations.HttpServer;
|
||||||
using ServiceStack.ServiceHost;
|
using ServiceStack.ServiceHost;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -89,15 +89,18 @@ namespace MediaBrowser.WebDashboard.Api
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IUserManager _userManager;
|
private readonly IUserManager _userManager;
|
||||||
|
|
||||||
|
private readonly IServerApplicationHost _appHost;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="DashboardService" /> class.
|
/// Initializes a new instance of the <see cref="DashboardService" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="taskManager">The task manager.</param>
|
/// <param name="taskManager">The task manager.</param>
|
||||||
/// <param name="userManager">The user manager.</param>
|
/// <param name="userManager">The user manager.</param>
|
||||||
public DashboardService(ITaskManager taskManager, IUserManager userManager)
|
public DashboardService(ITaskManager taskManager, IUserManager userManager, IServerApplicationHost appHost)
|
||||||
{
|
{
|
||||||
_taskManager = taskManager;
|
_taskManager = taskManager;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
|
_appHost = appHost;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -107,18 +110,17 @@ namespace MediaBrowser.WebDashboard.Api
|
|||||||
/// <returns>System.Object.</returns>
|
/// <returns>System.Object.</returns>
|
||||||
public object Get(GetDashboardInfo request)
|
public object Get(GetDashboardInfo request)
|
||||||
{
|
{
|
||||||
return GetDashboardInfo(Kernel.Instance, Logger, _taskManager, _userManager);
|
return GetDashboardInfo(_appHost, Logger, _taskManager, _userManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the dashboard info.
|
/// Gets the dashboard info.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="kernel">The kernel.</param>
|
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="taskManager">The task manager.</param>
|
/// <param name="taskManager">The task manager.</param>
|
||||||
/// <param name="userManager">The user manager.</param>
|
/// <param name="userManager">The user manager.</param>
|
||||||
/// <returns>DashboardInfo.</returns>
|
/// <returns>DashboardInfo.</returns>
|
||||||
public static DashboardInfo GetDashboardInfo(Kernel kernel, ILogger logger, ITaskManager taskManager, IUserManager userManager)
|
public static DashboardInfo GetDashboardInfo(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager)
|
||||||
{
|
{
|
||||||
var connections = userManager.ConnectedUsers.ToArray();
|
var connections = userManager.ConnectedUsers.ToArray();
|
||||||
|
|
||||||
@ -126,7 +128,7 @@ namespace MediaBrowser.WebDashboard.Api
|
|||||||
|
|
||||||
return new DashboardInfo
|
return new DashboardInfo
|
||||||
{
|
{
|
||||||
SystemInfo = kernel.GetSystemInfo(),
|
SystemInfo = appHost.GetSystemInfo(),
|
||||||
|
|
||||||
RunningTasks = taskManager.ScheduledTasks.Where(i => i.State == TaskState.Running || i.State == TaskState.Cancelling)
|
RunningTasks = taskManager.ScheduledTasks.Where(i => i.State == TaskState.Running || i.State == TaskState.Cancelling)
|
||||||
.Select(ScheduledTaskHelpers.GetTaskInfo)
|
.Select(ScheduledTaskHelpers.GetTaskInfo)
|
||||||
|
@ -82,7 +82,7 @@ pre, textarea.pre {
|
|||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.libraryPage, .libraryPage .ui-content {
|
.libraryPage, .itemListContent {
|
||||||
background: #262626!important;
|
background: #262626!important;
|
||||||
background-attachment: fixed!important;
|
background-attachment: fixed!important;
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="itemListPage" data-role="page" class="page libraryPage" data-theme="a">
|
<div id="itemListPage" data-role="page" class="page libraryPage" data-theme="a">
|
||||||
<div data-role="content">
|
<div data-role="content" class="itemListContent">
|
||||||
<!-- <div style="text-align: right;">
|
<div style="text-align: right;">
|
||||||
<button type="button" onclick="$( '#optionsPanel', $.mobile.activePage ).panel( 'open' );" data-mini="true" data-inline="true">Options</button>
|
<button type="button" onclick="$( '#optionsPanel', $.mobile.activePage ).panel( 'open' );" data-mini="true" data-inline="true">Options</button>
|
||||||
</div>-->
|
</div>
|
||||||
<h1 id="itemName" class="listHeader"></h1>
|
<h1 id="itemName" class="listHeader"></h1>
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,10 +88,6 @@
|
|||||||
<Compile Include="ServerEntryPoint.cs" />
|
<Compile Include="ServerEntryPoint.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\MediaBrowser.Common.Implementations\MediaBrowser.Common.Implementations.csproj">
|
|
||||||
<Project>{c4d2573a-3fd3-441f-81af-174ac4cd4e1d}</Project>
|
|
||||||
<Name>MediaBrowser.Common.Implementations</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
|
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
|
||||||
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
|
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
|
||||||
<Name>MediaBrowser.Common</Name>
|
<Name>MediaBrowser.Common</Name>
|
||||||
@ -104,6 +100,10 @@
|
|||||||
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
|
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
|
||||||
<Name>MediaBrowser.Model</Name>
|
<Name>MediaBrowser.Model</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj">
|
||||||
|
<Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
|
||||||
|
<Name>MediaBrowser.Server.Implementations</Name>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Html\index.html" />
|
<EmbeddedResource Include="Html\index.html" />
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common.Internal</id>
|
<id>MediaBrowser.Common.Internal</id>
|
||||||
<version>3.0.33</version>
|
<version>3.0.33</version>
|
||||||
@ -7,23 +7,21 @@
|
|||||||
<authors>Luke</authors>
|
<authors>Luke</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
<projectUrl>https://github.com/MediaBrowser/MediaBrowser</projectUrl>
|
<projectUrl>https://github.com/MediaBrowser/MediaBrowser</projectUrl>
|
||||||
<iconUrl>http://www.mb3admin.com/images/mb3icons1-1.png</iconUrl>
|
<iconUrl>http://www.mb3admin.com/images/mb3icons1-1.png</iconUrl>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
|
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
|
||||||
<copyright>Copyright © Media Browser 2013</copyright>
|
<copyright>Copyright © Media Browser 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.33" />
|
<dependency id="MediaBrowser.Common" version="3.0.33" />
|
||||||
<dependency id="NLog" version="2.0.0.2000" />
|
<dependency id="NLog" version="2.0.0.2000" />
|
||||||
<dependency id="ServiceStack" version="3.9.38" />
|
<dependency id="ServiceStack.Text" version="3.9.38" />
|
||||||
<dependency id="ServiceStack.Api.Swagger" version="3.9.38" />
|
<dependency id="protobuf-net" version="2.0.0.621" />
|
||||||
<dependency id="ServiceStack.Logging.NLog" version="1.0.6.0" />
|
|
||||||
<dependency id="Rx-Main" version="2.1.30214.0" />
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
<file src="dlls\MediaBrowser.Common.Implementations.dll" target="lib\net45\MediaBrowser.Common.Implementations.dll" />
|
<file src="dlls\MediaBrowser.Common.Implementations.dll" target="lib\net45\MediaBrowser.Common.Implementations.dll" />
|
||||||
<file src="dlls\MediaBrowser.IsoMounter.dll" target="lib\net45\MediaBrowser.IsoMounter.dll" />
|
<file src="dlls\MediaBrowser.IsoMounter.dll" target="lib\net45\MediaBrowser.IsoMounter.dll" />
|
||||||
<file src="dlls\pfmclrapi.dll" target="lib\net45\pfmclrapi.dll" />
|
|
||||||
<file src="dlls\Mediabrowser.PluginSecurity.dll" target="lib\net45\Mediabrowser.PluginSecurity.dll" />
|
<file src="dlls\Mediabrowser.PluginSecurity.dll" target="lib\net45\Mediabrowser.PluginSecurity.dll" />
|
||||||
|
<file src="dlls\pfmclrapi.dll" target="lib\net45\pfmclrapi.dll" />
|
||||||
</files>
|
</files>
|
||||||
</package>
|
</package>
|
Loading…
x
Reference in New Issue
Block a user