aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/HttpServer
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/HttpServer')
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs81
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs8
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/SocketSharp/RequestMono.cs25
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/SocketSharp/SocketSharpLogger.cs50
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs10
5 files changed, 53 insertions, 121 deletions
diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
index c3228db92..f64e29e4d 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Logging;
-using MediaBrowser.Server.Implementations.HttpServer.NetListener;
using MediaBrowser.Server.Implementations.HttpServer.SocketSharp;
using ServiceStack;
using ServiceStack.Api.Swagger;
@@ -24,7 +23,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer
{
public class HttpListenerHost : ServiceStackHost, IHttpServer
{
- private string HandlerPath { get; set; }
private string DefaultRedirectPath { get; set; }
private readonly ILogger _logger;
@@ -42,7 +40,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
private readonly ReaderWriterLockSlim _localEndpointLock = new ReaderWriterLockSlim();
- private readonly bool _supportsNativeWebSocket;
+ public string CertificatePath { get; private set; }
/// <summary>
/// Gets the local end points.
@@ -62,18 +60,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer
}
}
- public HttpListenerHost(IApplicationHost applicationHost,
- ILogManager logManager,
- string serviceName,
- string handlerPath,
- string defaultRedirectPath,
- bool supportsNativeWebSocket,
+ public HttpListenerHost(IApplicationHost applicationHost,
+ ILogManager logManager,
+ string serviceName,
+ string defaultRedirectPath,
params Assembly[] assembliesWithServices)
: base(serviceName, assembliesWithServices)
{
DefaultRedirectPath = defaultRedirectPath;
- _supportsNativeWebSocket = supportsNativeWebSocket;
- HandlerPath = handlerPath;
_logger = logManager.GetLogger("HttpServer");
@@ -134,13 +128,9 @@ namespace MediaBrowser.Server.Implementations.HttpServer
{
base.OnConfigLoad();
- Config.HandlerFactoryPath = string.IsNullOrEmpty(HandlerPath)
- ? null
- : HandlerPath;
+ Config.HandlerFactoryPath = null;
- Config.MetadataRedirectPath = string.IsNullOrEmpty(HandlerPath)
- ? "metadata"
- : PathUtils.CombinePaths(HandlerPath, "metadata");
+ Config.MetadataRedirectPath = "metadata";
}
protected override ServiceController CreateServiceController(params Assembly[] assembliesWithServices)
@@ -215,12 +205,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
private IHttpListener GetListener()
{
- if (_supportsNativeWebSocket && NativeWebSocket.IsSupported)
- {
- return new HttpListenerServer(_logger, OnRequestReceived);
- }
-
- return new WebSocketSharpListener(_logger, OnRequestReceived);
+ return new WebSocketSharpListener(_logger, OnRequestReceived, CertificatePath);
}
private void WebSocketHandler(WebSocketConnectEventArgs args)
@@ -241,7 +226,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
{
return;
}
-
+
var errorResponse = new ErrorResponse
{
ResponseStatus = new ResponseStatus
@@ -310,24 +295,24 @@ namespace MediaBrowser.Server.Implementations.HttpServer
var operationName = httpReq.OperationName;
var localPath = url.LocalPath;
- if (string.Equals(localPath, "/" + HandlerPath + "/", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase))
{
- httpRes.RedirectToUrl(DefaultRedirectPath);
+ httpRes.RedirectToUrl("/../" + DefaultRedirectPath);
return Task.FromResult(true);
}
- if (string.Equals(localPath, "/" + HandlerPath, StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase))
{
- httpRes.RedirectToUrl(HandlerPath + "/" + DefaultRedirectPath);
+ httpRes.RedirectToUrl("../" + DefaultRedirectPath);
return Task.FromResult(true);
}
if (string.Equals(localPath, "/", StringComparison.OrdinalIgnoreCase))
{
- httpRes.RedirectToUrl(HandlerPath + "/" + DefaultRedirectPath);
+ httpRes.RedirectToUrl(DefaultRedirectPath);
return Task.FromResult(true);
}
if (string.IsNullOrEmpty(localPath))
{
- httpRes.RedirectToUrl("/" + HandlerPath + "/" + DefaultRedirectPath);
+ httpRes.RedirectToUrl("/" + DefaultRedirectPath);
return Task.FromResult(true);
}
@@ -382,12 +367,33 @@ namespace MediaBrowser.Server.Implementations.HttpServer
base.Init();
}
- //public override RouteAttribute[] GetRouteAttributes(System.Type requestType)
- //{
- // var routes = base.GetRouteAttributes(requestType);
- // routes.Each(x => x.Path = "/api" + x.Path);
- // return routes;
- //}
+ public override RouteAttribute[] GetRouteAttributes(Type requestType)
+ {
+ var routes = base.GetRouteAttributes(requestType).ToList();
+ var clone = routes.ToList();
+
+ foreach (var route in clone)
+ {
+ routes.Add(new RouteAttribute(NormalizeRoutePath(route.Path), route.Verbs)
+ {
+ Notes = route.Notes,
+ Priority = route.Priority,
+ Summary = route.Summary
+ });
+ }
+
+ return routes.ToArray();
+ }
+
+ private string NormalizeRoutePath(string path)
+ {
+ if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
+ {
+ return "/mediabrowser" + path;
+ }
+
+ return "mediabrowser/" + path;
+ }
/// <summary>
/// Releases the specified instance.
@@ -425,8 +431,9 @@ namespace MediaBrowser.Server.Implementations.HttpServer
GC.SuppressFinalize(this);
}
- public void StartServer(IEnumerable<string> urlPrefixes)
+ public void StartServer(IEnumerable<string> urlPrefixes, string certificatePath)
{
+ CertificatePath = certificatePath;
UrlPrefixes = urlPrefixes.ToList();
Start(UrlPrefixes.First());
}
diff --git a/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs
index b48703a15..d1222ab74 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs
@@ -16,20 +16,16 @@ namespace MediaBrowser.Server.Implementations.HttpServer
/// <param name="applicationHost">The application host.</param>
/// <param name="logManager">The log manager.</param>
/// <param name="serverName">Name of the server.</param>
- /// <param name="handlerPath">The handler path.</param>
/// <param name="defaultRedirectpath">The default redirectpath.</param>
- /// <param name="supportsNativeWebSocket">if set to <c>true</c> [supports native web socket].</param>
/// <returns>IHttpServer.</returns>
public static IHttpServer CreateServer(IApplicationHost applicationHost,
ILogManager logManager,
string serverName,
- string handlerPath,
- string defaultRedirectpath,
- bool supportsNativeWebSocket)
+ string defaultRedirectpath)
{
LogManager.LogFactory = new ServerLogFactory(logManager);
- return new HttpListenerHost(applicationHost, logManager, serverName, handlerPath, defaultRedirectpath, supportsNativeWebSocket);
+ return new HttpListenerHost(applicationHost, logManager, serverName, defaultRedirectpath);
}
}
}
diff --git a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/RequestMono.cs b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/RequestMono.cs
index 226d97b3c..2c8413f5e 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/RequestMono.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/RequestMono.cs
@@ -556,31 +556,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
return (stream);
}
}
-
- public void SaveAs(string filename)
- {
- byte[] buffer = new byte[16 * 1024];
- long old_post = stream.Position;
-
- try
- {
- File.Delete(filename);
- using (FileStream fs = File.Create(filename))
- {
- stream.Position = 0;
- int n;
-
- while ((n = stream.Read(buffer, 0, 16 * 1024)) != 0)
- {
- fs.Write(buffer, 0, n);
- }
- }
- }
- finally
- {
- stream.Position = old_post;
- }
- }
}
class Helpers
diff --git a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/SocketSharpLogger.cs b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/SocketSharpLogger.cs
deleted file mode 100644
index 427671b30..000000000
--- a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/SocketSharpLogger.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using MediaBrowser.Model.Logging;
-using System;
-
-namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
-{
- public class SocketSharpLogger : SocketHttpListener.Logging.ILogger
- {
- private readonly ILogger _logger;
-
- public SocketSharpLogger(ILogger logger)
- {
- _logger = logger;
- }
-
- public void Debug(string message, params object[] paramList)
- {
- _logger.Debug(message, paramList);
- }
-
- public void Error(string message, params object[] paramList)
- {
- _logger.Error(message, paramList);
- }
-
- public void ErrorException(string message, Exception exception, params object[] paramList)
- {
- _logger.ErrorException(message, exception, paramList);
- }
-
- public void Fatal(string message, params object[] paramList)
- {
- _logger.Fatal(message, paramList);
- }
-
- public void FatalException(string message, Exception exception, params object[] paramList)
- {
- _logger.FatalException(message, exception, paramList);
- }
-
- public void Info(string message, params object[] paramList)
- {
- _logger.Info(message, paramList);
- }
-
- public void Warn(string message, params object[] paramList)
- {
- _logger.Warn(message, paramList);
- }
- }
-}
diff --git a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs
index 419d145bb..0c5c9e9bf 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs
@@ -1,13 +1,14 @@
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Logging;
+using MediaBrowser.Server.Implementations.Logging;
using ServiceStack;
using ServiceStack.Web;
+using SocketHttpListener.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using SocketHttpListener.Net;
namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
{
@@ -17,11 +18,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
private readonly ILogger _logger;
private readonly Action<string> _endpointListener;
+ private readonly string _certificatePath ;
- public WebSocketSharpListener(ILogger logger, Action<string> endpointListener)
+ public WebSocketSharpListener(ILogger logger, Action<string> endpointListener,
+ string certificatePath)
{
_logger = logger;
_endpointListener = endpointListener;
+ _certificatePath = certificatePath;
}
public Action<Exception, IRequest> ErrorHandler { get; set; }
@@ -33,7 +37,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
public void Start(IEnumerable<string> urlPrefixes)
{
if (_listener == null)
- _listener = new HttpListener(new SocketSharpLogger(_logger));
+ _listener = new HttpListener(new PatternsLogger(_logger), _certificatePath);
foreach (var prefix in urlPrefixes)
{