aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaus Vium <clausvium@gmail.com>2019-03-03 08:29:23 +0100
committerClaus Vium <clausvium@gmail.com>2019-03-03 08:29:23 +0100
commite823c11b46ccf0473aa72cb52cd5a3a9f977e61b (patch)
treec8b053828dece3d44defe2256d33039bd7fd22ed
parent6bdb5debd2492b71d11f9628889b8c29b6321a77 (diff)
Add certificate to https and minor cleanup
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs26
-rw-r--r--Emby.Server.Implementations/HttpServer/HttpListenerHost.cs11
-rw-r--r--Emby.Server.Implementations/WebSockets/WebSocketHandler.cs2
-rw-r--r--Emby.Server.Implementations/WebSockets/WebSocketManager.cs8
-rw-r--r--Jellyfin.Server/CoreAppHost.cs2
5 files changed, 18 insertions, 31 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index e558b4354..05d8ee410 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -626,9 +626,12 @@ namespace Emby.Server.Implementations
{
options.Listen(IPAddress.Any, HttpPort);
options.Listen(IPAddress.Loopback, HttpPort);
- // TODO certs
- options.Listen(IPAddress.Any, HttpsPort, listenOptions => { listenOptions.UseHttps(); });
- options.Listen(IPAddress.Loopback, HttpsPort, listenOptions => { listenOptions.UseHttps(); });
+
+ if (CertificateInfo != null)
+ {
+ options.Listen(IPAddress.Any, HttpsPort, listenOptions => { listenOptions.UseHttps(Certificate); });
+ options.Listen(IPAddress.Loopback, HttpsPort, listenOptions => { listenOptions.UseHttps(Certificate); });
+ }
})
.UseContentRoot(Path.Combine(Directory.GetCurrentDirectory(), "jellyfin-web", "src"))
.ConfigureServices(services =>
@@ -927,11 +930,9 @@ namespace Emby.Server.Implementations
}
}
- protected virtual bool SupportsDualModeSockets => true;
-
- private X509Certificate GetCertificate(CertificateInfo info)
+ private X509Certificate2 GetCertificate(CertificateInfo info)
{
- var certificateLocation = info == null ? null : info.Path;
+ var certificateLocation = info?.Path;
if (string.IsNullOrWhiteSpace(certificateLocation))
{
@@ -1004,7 +1005,7 @@ namespace Emby.Server.Implementations
return info;
}
- protected virtual FFMpegInfo GetFFMpegInfo()
+ protected FFMpegInfo GetFFMpegInfo()
{
return new FFMpegLoader(ApplicationPaths, FileSystemManager, GetFfmpegInstallInfo())
.GetFFMpegInfo(StartupOptions);
@@ -1085,7 +1086,7 @@ namespace Emby.Server.Implementations
/// </summary>
private void SetStaticProperties()
{
- ((SqliteItemRepository)ItemRepository).ImageProcessor = ImageProcessor;
+ ItemRepository.ImageProcessor = ImageProcessor;
// For now there's no real way to inject these properly
BaseItem.Logger = LoggerFactory.CreateLogger("BaseItem");
@@ -1211,15 +1212,12 @@ namespace Emby.Server.Implementations
AllConcreteTypes = GetComposablePartAssemblies()
.SelectMany(x => x.ExportedTypes)
- .Where(type =>
- {
- return type.IsClass && !type.IsAbstract && !type.IsInterface && !type.IsGenericType;
- })
+ .Where(type => type.IsClass && !type.IsAbstract && !type.IsInterface && !type.IsGenericType)
.ToArray();
}
private CertificateInfo CertificateInfo { get; set; }
- protected X509Certificate Certificate { get; private set; }
+ protected X509Certificate2 Certificate { get; private set; }
private IEnumerable<string> GetUrlPrefixes()
{
diff --git a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
index dbfb5e243..263fcdbe9 100644
--- a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -855,16 +855,5 @@ namespace Emby.Server.Implementations.HttpServer
{
Dispose(true);
}
-
- public void StartServer(string[] urlPrefixes, IHttpListener httpListener)
- {
- UrlPrefixes = urlPrefixes;
-
- _listener = httpListener;
-
- _listener.WebSocketConnected = OnWebSocketConnected;
- _listener.ErrorHandler = ErrorHandler;
- _listener.RequestHandler = RequestHandler;
- }
}
}
diff --git a/Emby.Server.Implementations/WebSockets/WebSocketHandler.cs b/Emby.Server.Implementations/WebSockets/WebSocketHandler.cs
index 70b9e85aa..eb1877440 100644
--- a/Emby.Server.Implementations/WebSockets/WebSocketHandler.cs
+++ b/Emby.Server.Implementations/WebSockets/WebSocketHandler.cs
@@ -5,6 +5,6 @@ namespace Emby.Server.Implementations.WebSockets
{
public interface IWebSocketHandler
{
- Task ProcessMessage(WebSocketMessage<object> message);
+ Task ProcessMessage(WebSocketMessage<object> message, TaskCompletionSource<bool> taskCompletionSource);
}
}
diff --git a/Emby.Server.Implementations/WebSockets/WebSocketManager.cs b/Emby.Server.Implementations/WebSockets/WebSocketManager.cs
index 888f2f0fc..5db2c8da7 100644
--- a/Emby.Server.Implementations/WebSockets/WebSocketManager.cs
+++ b/Emby.Server.Implementations/WebSockets/WebSocketManager.cs
@@ -35,6 +35,7 @@ namespace Emby.Server.Implementations.WebSockets
WebSocketReceiveResult result;
var message = new List<byte>();
+ // Keep listening for incoming messages, otherwise the socket closes automatically
do
{
var buffer = WebSocket.CreateServerBuffer(BufferSize);
@@ -57,7 +58,7 @@ namespace Emby.Server.Implementations.WebSockets
}
}
- public async Task ProcessMessage(byte[] messageBytes, TaskCompletionSource<bool> taskCompletionSource)
+ private async Task ProcessMessage(byte[] messageBytes, TaskCompletionSource<bool> taskCompletionSource)
{
var charset = CharsetDetector.DetectFromBytes(messageBytes).Detected?.EncodingName;
var message = string.Equals(charset, "utf-8", StringComparison.OrdinalIgnoreCase)
@@ -81,11 +82,12 @@ namespace Emby.Server.Implementations.WebSockets
{
try
{
- handler.ProcessMessage(info).ConfigureAwait(false);
+ handler.ProcessMessage(info, taskCompletionSource).ConfigureAwait(false);
}
catch (Exception ex)
{
- _logger.LogError(ex, "{0} failed processing WebSocket message {1}", handler.GetType().Name, info.MessageType ?? string.Empty);
+ _logger.LogError(ex, "{HandlerType} failed processing WebSocket message {MessageType}",
+ handler.GetType().Name, info.MessageType ?? string.Empty);
}
}));
diff --git a/Jellyfin.Server/CoreAppHost.cs b/Jellyfin.Server/CoreAppHost.cs
index 9e5224790..17259c737 100644
--- a/Jellyfin.Server/CoreAppHost.cs
+++ b/Jellyfin.Server/CoreAppHost.cs
@@ -34,8 +34,6 @@ namespace Jellyfin.Server
public override bool CanSelfRestart => StartupOptions.RestartPath != null;
- protected override bool SupportsDualModeSockets => true;
-
protected override void RestartInternal() => Program.Restart();
protected override IEnumerable<Assembly> GetAssembliesWithPartsInternal()