diff options
Diffstat (limited to 'MediaBrowser.Server.Mono/Program.cs')
| -rw-r--r-- | MediaBrowser.Server.Mono/Program.cs | 147 |
1 files changed, 24 insertions, 123 deletions
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index d4d7b2b07..1cd0b5ae6 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -1,30 +1,18 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Constants; +using System.IO; +using MediaBrowser.Common.Implementations.IO; using MediaBrowser.Common.Implementations.Logging; -using MediaBrowser.Common.Implementations.Updates; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations; -using MediaBrowser.ServerApplication; -using MediaBrowser.ServerApplication.Native; -using MediaBrowser.ServerApplication.IO; +using MediaBrowser.Server.Mono.Native; +using MediaBrowser.Server.Startup.Common; using Microsoft.Win32; using System; using System.Diagnostics; -using System.IO; -using System.Threading; -using System.Windows; using System.Net; using System.Net.Security; +using System.Reflection; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; -using System.Reflection; -using System.Linq; -// MONOMKBUNDLE: For the embedded version, mkbundle tool -#if MONOMKBUNDLE -using Mono.Unix; -using Mono.Unix.Native; -using System.Text; -#endif namespace MediaBrowser.Server.Mono { @@ -36,12 +24,7 @@ namespace MediaBrowser.Server.Mono public static void Main (string[] args) { - //GetEntryAssembly is empty when running from a mkbundle package - #if MONOMKBUNDLE - var applicationPath = GetExecutablePath(); - #else - var applicationPath = Assembly.GetEntryAssembly ().Location; - #endif + var applicationPath = Assembly.GetEntryAssembly().Location; var options = new StartupOptions(); @@ -56,16 +39,10 @@ namespace MediaBrowser.Server.Mono var logger = _logger = logManager.GetLogger("Main"); - BeginLog(logger, appPaths); + ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - if (PerformUpdateIfNeeded(appPaths, logger)) - { - logger.Info("Exiting to perform application update."); - return; - } - try { RunApplication(appPaths, logManager, options); @@ -82,48 +59,31 @@ namespace MediaBrowser.Server.Mono { if (string.IsNullOrEmpty(programDataPath)) { - return new ServerApplicationPaths(applicationPath); + programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath); } - return new ServerApplicationPaths(programDataPath, applicationPath); - } - - /// <summary> - /// Determines whether this instance [can self restart]. - /// </summary> - /// <returns><c>true</c> if this instance [can self restart]; otherwise, <c>false</c>.</returns> - public static bool CanSelfRestart - { - get - { - return false; - } + return new ServerApplicationPaths(programDataPath, applicationPath, Path.GetDirectoryName(applicationPath)); } - /// <summary> - /// Gets a value indicating whether this instance can self update. - /// </summary> - /// <value><c>true</c> if this instance can self update; otherwise, <c>false</c>.</value> - public static bool CanSelfUpdate - { - get - { - return false; - } - } - - private static RemoteCertificateValidationCallback _ignoreCertificates = new RemoteCertificateValidationCallback(delegate { return true; }); - - private static TaskCompletionSource<bool> _applicationTaskCompletionSource = new TaskCompletionSource<bool>(); + private static readonly TaskCompletionSource<bool> ApplicationTaskCompletionSource = new TaskCompletionSource<bool>(); private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options) { SystemEvents.SessionEnding += SystemEvents_SessionEnding; // Allow all https requests - ServicePointManager.ServerCertificateValidationCallback = _ignoreCertificates; + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); - _appHost = new ApplicationHost(appPaths, logManager, false, false, options); + var fileSystem = new CommonFileSystem(logManager.GetLogger("FileSystem"), false, true); + + var nativeApp = new NativeApp(); + + _appHost = new ApplicationHost(appPaths, logManager, options, fileSystem, "MBServer.Mono", false, nativeApp); + + if (options.ContainsOption("-v")) { + Console.WriteLine (_appHost.ApplicationVersion.ToString()); + return; + } Console.WriteLine ("appHost.Init"); @@ -137,7 +97,7 @@ namespace MediaBrowser.Server.Mono task = _appHost.RunStartupTasks(); Task.WaitAll (task); - task = _applicationTaskCompletionSource.Task; + task = ApplicationTaskCompletionSource.Task; Task.WaitAll (task); } @@ -156,16 +116,6 @@ namespace MediaBrowser.Server.Mono } /// <summary> - /// Begins the log. - /// </summary> - /// <param name="logger">The logger.</param> - private static void BeginLog(ILogger logger, IApplicationPaths appPaths) - { - logger.Info("Media Browser Server started"); - ApplicationHost.LogEnvironmentInfo(logger, appPaths); - } - - /// <summary> /// Handles the UnhandledException event of the CurrentDomain control. /// </summary> /// <param name="sender">The source of the event.</param> @@ -174,7 +124,7 @@ namespace MediaBrowser.Server.Mono { var exception = (Exception)e.ExceptionObject; - LogUnhandledException(exception); + new UnhandledExceptionWriter(_appHost.ServerConfigurationManager.ApplicationPaths, _logger, _appHost.LogManager).Log(exception); if (!Debugger.IsAttached) { @@ -182,59 +132,10 @@ namespace MediaBrowser.Server.Mono } } - private static void LogUnhandledException(Exception ex) - { - _logger.ErrorException("UnhandledException", ex); - - _appHost.LogManager.Flush (); - - var path = Path.Combine(_appHost.ServerConfigurationManager.ApplicationPaths.LogDirectoryPath, "crash_" + Guid.NewGuid() + ".txt"); - - var builder = LogHelper.GetLogMessage(ex); - - Console.WriteLine ("UnhandledException"); - Console.WriteLine (builder.ToString()); - - File.WriteAllText(path, builder.ToString()); - } - - /// <summary> - /// Performs the update if needed. - /// </summary> - /// <param name="appPaths">The app paths.</param> - /// <param name="logger">The logger.</param> - /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> - private static bool PerformUpdateIfNeeded(ServerApplicationPaths appPaths, ILogger logger) - { - return false; - } - public static void Shutdown() { - _applicationTaskCompletionSource.SetResult (true); - } - - public static void Restart() - { - // Second instance will start first, so dispose so that the http ports will be available to the new instance - _appHost.Dispose(); - - // Right now this method will just shutdown, but not restart - Shutdown (); + ApplicationTaskCompletionSource.SetResult (true); } - - // Return the running process path - #if MONOMKBUNDLE - public static string GetExecutablePath() - { - var builder = new StringBuilder (8192); - if (Syscall.readlink("/proc/self/exe", builder) >= 0) - return builder.ToString (); - else - return null; - } - #endif - } class NoCheckCertificatePolicy : ICertificatePolicy |
