diff --git a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs
index fb7fd1698e..40dc380ea8 100644
--- a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs
+++ b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs
@@ -187,7 +187,7 @@ namespace MediaBrowser.Common.Implementations.Logging
LogFilePath = Path.Combine(LogDirectory, LogFilePrefix + "-" + decimal.Round(DateTime.Now.Ticks / 10000000) + ".log");
Directory.CreateDirectory(Path.GetDirectoryName(LogFilePath));
-
+
AddFileTarget(LogFilePath, level);
LogSeverity = level;
@@ -212,5 +212,26 @@ namespace MediaBrowser.Common.Implementations.Logging
{
LogManager.Flush();
}
+
+
+ public void AddConsoleOutput()
+ {
+ var target = new ConsoleTarget()
+ {
+ Layout = "${level}, ${logger}, ${message}",
+ Error = false
+ };
+
+ RemoveTarget("ConsoleTarget");
+
+ target.Name = "ConsoleTarget";
+
+ AddLogTarget(target, LogSeverity);
+ }
+
+ public void RemoveConsoleOutput()
+ {
+ RemoveTarget("ConsoleTarget");
+ }
}
}
diff --git a/MediaBrowser.Common/Net/IServerManager.cs b/MediaBrowser.Common/Net/IServerManager.cs
index 6965677bbf..f81c99ac65 100644
--- a/MediaBrowser.Common/Net/IServerManager.cs
+++ b/MediaBrowser.Common/Net/IServerManager.cs
@@ -25,9 +25,9 @@ namespace MediaBrowser.Common.Net
///
/// Starts this instance.
///
- /// The URL prefix.
+ /// The URL prefixes.
/// if set to true [enable HTTP logging].
- void Start(string urlPrefix, bool enableHttpLogging);
+ void Start(IEnumerable urlPrefixes, bool enableHttpLogging);
///
/// Starts the web socket server.
diff --git a/MediaBrowser.Controller/IServerApplicationHost.cs b/MediaBrowser.Controller/IServerApplicationHost.cs
index f3312d2cb8..5554ced376 100644
--- a/MediaBrowser.Controller/IServerApplicationHost.cs
+++ b/MediaBrowser.Controller/IServerApplicationHost.cs
@@ -20,12 +20,6 @@ namespace MediaBrowser.Controller
/// The name of the web application.
string WebApplicationName { get; }
- ///
- /// Gets the HTTP server URL prefix.
- ///
- /// The HTTP server URL prefix.
- string HttpServerUrlPrefix { get; }
-
///
/// Gets a value indicating whether [supports automatic run at startup].
///
diff --git a/MediaBrowser.Controller/Net/IHttpServer.cs b/MediaBrowser.Controller/Net/IHttpServer.cs
index ba2cd0cccb..20f07c74de 100644
--- a/MediaBrowser.Controller/Net/IHttpServer.cs
+++ b/MediaBrowser.Controller/Net/IHttpServer.cs
@@ -13,13 +13,13 @@ namespace MediaBrowser.Controller.Net
/// Gets the URL prefix.
///
/// The URL prefix.
- string UrlPrefix { get; }
+ IEnumerable UrlPrefixes { get; }
///
/// Starts the specified server name.
///
- /// The URL.
- void StartServer(string urlPrefix);
+ /// The URL prefixes.
+ void StartServer(IEnumerable urlPrefixes);
///
/// Gets a value indicating whether [supports web sockets].
diff --git a/MediaBrowser.Model/Logging/ILogManager.cs b/MediaBrowser.Model/Logging/ILogManager.cs
index fabca4459b..674d8fd165 100644
--- a/MediaBrowser.Model/Logging/ILogManager.cs
+++ b/MediaBrowser.Model/Logging/ILogManager.cs
@@ -40,5 +40,15 @@ namespace MediaBrowser.Model.Logging
/// Flushes this instance.
///
void Flush();
+
+ ///
+ /// Adds the console output.
+ ///
+ void AddConsoleOutput();
+
+ ///
+ /// Removes the console output.
+ ///
+ void RemoveConsoleOutput();
}
}
diff --git a/MediaBrowser.Mono.userprefs b/MediaBrowser.Mono.userprefs
index 3017cf9690..da74b9ccd0 100644
--- a/MediaBrowser.Mono.userprefs
+++ b/MediaBrowser.Mono.userprefs
@@ -1,10 +1,11 @@
-
+
+
diff --git a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
index 4301c74323..72df3697a4 100644
--- a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
+++ b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
@@ -64,7 +64,8 @@ namespace MediaBrowser.Providers.ImagesByName
.Replace(".", string.Empty)
.Replace("&", string.Empty)
.Replace("!", string.Empty)
- .Replace(",", string.Empty);
+ .Replace(",", string.Empty)
+ .Replace("/", string.Empty);
}
public static IEnumerable GetAvailableImages(string file)
diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
index 34d705bfb7..e9a94c3ad6 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -32,7 +32,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
private string DefaultRedirectPath { get; set; }
private readonly ILogger _logger;
- public string UrlPrefix { get; private set; }
+ public IEnumerable UrlPrefixes { get; private set; }
private readonly List _restServices = new List();
@@ -66,7 +66,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
_containerAdapter = new ContainerAdapter(applicationHost);
- for (var i = 0; i < 2; i++)
+ for (var i = 0; i < 1; i++)
{
_autoResetEvents.Add(new AutoResetEvent(false));
}
@@ -145,20 +145,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer
public override ServiceStackHost Start(string listeningAtUrlBase)
{
- StartListener(listeningAtUrlBase);
+ StartListener();
return this;
}
///
/// Starts the Web Service
///
- ///
- /// A Uri that acts as the base that the server is listening on.
- /// Format should be: http://127.0.0.1:8080/ or http://127.0.0.1:8080/somevirtual/
- /// Note: the trailing slash is required! For more info see the
- /// HttpListener.Prefixes property on MSDN.
- ///
- protected void StartListener(string listeningAtUrlBase)
+ private void StartListener()
{
// *** Already running - just leave it in place
if (IsStarted)
@@ -167,14 +161,13 @@ namespace MediaBrowser.Server.Implementations.HttpServer
if (Listener == null)
Listener = new HttpListener();
- HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(listeningAtUrlBase);
+ HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(UrlPrefixes.First());
- UrlPrefix = listeningAtUrlBase;
-
- Listener.Prefixes.Add(listeningAtUrlBase);
-
- _logger.Info("Adding HttpListener Prefixes");
- Listener.Prefixes.Add(listeningAtUrlBase);
+ foreach (var prefix in UrlPrefixes)
+ {
+ _logger.Info("Adding HttpListener prefix " + prefix);
+ Listener.Prefixes.Add(prefix);
+ }
IsStarted = true;
_logger.Info("Starting HttpListner");
@@ -419,7 +412,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer
{
if (Listener != null)
{
- Listener.Prefixes.Remove(UrlPrefix);
+ foreach (var prefix in UrlPrefixes)
+ {
+ Listener.Prefixes.Remove(prefix);
+ }
Listener.Close();
}
@@ -516,9 +512,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer
GC.SuppressFinalize(this);
}
- public void StartServer(string urlPrefix)
+ public void StartServer(IEnumerable urlPrefixes)
{
- Start(urlPrefix);
+ UrlPrefixes = urlPrefixes.ToList();
+ Start(UrlPrefixes.First());
}
public bool SupportsWebSockets
diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
index a2dfb51d2f..6713122742 100644
--- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
@@ -124,9 +124,9 @@ namespace MediaBrowser.Server.Implementations.ServerManager
///
/// Starts this instance.
///
- public void Start(string urlPrefix, bool enableHttpLogging)
+ public void Start(IEnumerable urlPrefixes, bool enableHttpLogging)
{
- ReloadHttpServer(urlPrefix, enableHttpLogging);
+ ReloadHttpServer(urlPrefixes, enableHttpLogging);
}
public void StartWebSocketServer()
@@ -153,14 +153,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
///
/// Restarts the Http Server, or starts it if not currently running
///
- private void ReloadHttpServer(string urlPrefix, bool enableHttpLogging)
+ private void ReloadHttpServer(IEnumerable urlPrefixes, bool enableHttpLogging)
{
- // Only reload if the port has changed, so that we don't disconnect any active users
- if (HttpServer != null && HttpServer.UrlPrefix.Equals(urlPrefix, StringComparison.OrdinalIgnoreCase))
- {
- return;
- }
-
DisposeHttpServer();
_logger.Info("Loading Http Server");
@@ -169,7 +163,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
{
HttpServer = _applicationHost.Resolve();
HttpServer.EnableHttpRequestLogging = enableHttpLogging;
- HttpServer.StartServer(urlPrefix);
+ HttpServer.StartServer(urlPrefixes);
}
catch (SocketException ex)
{
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index 59fc11c07c..c657117048 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -33,6 +33,7 @@ namespace MediaBrowser.Server.Mono
var logManager = new NlogManager(appPaths.LogDirectoryPath, "server");
logManager.ReloadLogger(LogSeverity.Info);
+ logManager.AddConsoleOutput();
var logger = _logger = logManager.GetLogger("Main");
diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs
index 13328d622b..bf20c8fb87 100644
--- a/MediaBrowser.ServerApplication/ApplicationHost.cs
+++ b/MediaBrowser.ServerApplication/ApplicationHost.cs
@@ -94,11 +94,16 @@ namespace MediaBrowser.ServerApplication
/// Gets the HTTP server URL prefix.
///
/// The HTTP server URL prefix.
- public string HttpServerUrlPrefix
+ private IEnumerable HttpServerUrlPrefixes
{
get
{
- return "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/";
+ var list = new List
+ {
+ "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/"
+ };
+
+ return list;
}
}
@@ -212,6 +217,8 @@ namespace MediaBrowser.ServerApplication
Logger.ErrorException("Error in {0}", ex, entryPoint.GetType().Name);
}
});
+
+ LogManager.RemoveConsoleOutput();
}
///
@@ -462,7 +469,7 @@ namespace MediaBrowser.ServerApplication
{
try
{
- ServerManager.Start(HttpServerUrlPrefix, ServerConfigurationManager.Configuration.EnableHttpLevelLogging);
+ ServerManager.Start(HttpServerUrlPrefixes, ServerConfigurationManager.Configuration.EnableHttpLevelLogging);
}
catch (Exception ex)
{
@@ -494,7 +501,7 @@ namespace MediaBrowser.ServerApplication
HttpServer.EnableHttpRequestLogging = ServerConfigurationManager.Configuration.EnableHttpLevelLogging;
- if (!string.Equals(HttpServer.UrlPrefix, HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase))
+ if (!HttpServer.UrlPrefixes.SequenceEqual(HttpServerUrlPrefixes, StringComparer.OrdinalIgnoreCase))
{
NotifyPendingRestart();
}
@@ -695,8 +702,10 @@ namespace MediaBrowser.ServerApplication
try
{
- ServerAuthorization.AuthorizeServer(ServerConfigurationManager.Configuration.HttpServerPortNumber,
- HttpServerUrlPrefix, ServerConfigurationManager.Configuration.LegacyWebSocketPortNumber,
+ ServerAuthorization.AuthorizeServer(
+ ServerConfigurationManager.Configuration.HttpServerPortNumber,
+ HttpServerUrlPrefixes.First(),
+ ServerConfigurationManager.Configuration.LegacyWebSocketPortNumber,
UdpServerEntryPoint.PortNumber,
ConfigurationManager.CommonApplicationPaths.TempDirectory);
}
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index 7da17bc225..3021363213 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/MediaBrowser.ServerApplication/MainStartup.cs
@@ -42,6 +42,7 @@ namespace MediaBrowser.ServerApplication
var logManager = new NlogManager(appPaths.LogDirectoryPath, "server");
logManager.ReloadLogger(LogSeverity.Debug);
+ logManager.AddConsoleOutput();
var logger = _logger = logManager.GetLogger("Main");