From bdb9cd77bca63a64abd0f23c0958f9ff2e4a1cd6 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 19 Jan 2015 02:12:01 -0500 Subject: [PATCH] fix restart notification for cert config change --- .../ApplicationHost.cs | 62 +++++++++++-------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 5ce23fa370..a3e389957b 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -780,32 +780,7 @@ namespace MediaBrowser.Server.Startup.Common /// private void StartServer() { - if (string.IsNullOrWhiteSpace(ServerConfigurationManager.Configuration.CertificatePath)) - { - // Generate self-signed cert - var certHost = GetHostnameFromExternalDns(ServerConfigurationManager.Configuration.WanDdns); - var certPath = Path.Combine(ServerConfigurationManager.ApplicationPaths.ProgramDataPath, "ssl", "cert_" + certHost.GetMD5().ToString("N") + ".pfx"); - - if (!File.Exists(certPath)) - { - Directory.CreateDirectory(Path.GetDirectoryName(certPath)); - - try - { - NetworkManager.GenerateSelfSignedSslCertificate(certPath, certHost); - CertificatePath = certHost; - } - catch (Exception ex) - { - Logger.ErrorException("Error creating ssl cert", ex); - } - } - } - else - { - // Custom cert - CertificatePath = ServerConfigurationManager.Configuration.CertificatePath; - } + CertificatePath = GetCertificatePath(true); try { @@ -819,6 +794,39 @@ namespace MediaBrowser.Server.Startup.Common } } + private string GetCertificatePath(bool generateCertificate) + { + if (string.IsNullOrWhiteSpace(ServerConfigurationManager.Configuration.CertificatePath)) + { + // Generate self-signed cert + var certHost = GetHostnameFromExternalDns(ServerConfigurationManager.Configuration.WanDdns); + var certPath = Path.Combine(ServerConfigurationManager.ApplicationPaths.ProgramDataPath, "ssl", "cert_" + certHost.GetMD5().ToString("N") + ".pfx"); + + if (generateCertificate) + { + if (!File.Exists(certPath)) + { + Directory.CreateDirectory(Path.GetDirectoryName(certPath)); + + try + { + NetworkManager.GenerateSelfSignedSslCertificate(certPath, certHost); + } + catch (Exception ex) + { + Logger.ErrorException("Error creating ssl cert", ex); + return null; + } + } + } + + return certPath; + } + + // Custom cert + return ServerConfigurationManager.Configuration.CertificatePath; + } + /// /// Called when [configuration updated]. /// @@ -849,7 +857,7 @@ namespace MediaBrowser.Server.Startup.Common requiresRestart = true; } - if (!string.Equals(CertificatePath, ServerConfigurationManager.Configuration.CertificatePath, StringComparison.OrdinalIgnoreCase)) + if (!string.Equals(CertificatePath, GetCertificatePath(false), StringComparison.OrdinalIgnoreCase)) { requiresRestart = true; }