public void LoadConfigFile(string configFileName) { WebServerConfig config = new WebServerConfig(); string appDirectory = ConfigurationManager.AppSettings.Get("AppDirectory"); if (appDirectory == null) { appDirectory = Environment.CurrentDirectory; } else { appDirectory = appDirectory?.Replace("[ProgramDataDirectory]", Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); } Directory.CreateDirectory(appDirectory); string configFilePath = Path.Combine(appDirectory, configFileName); if (File.Exists(configFilePath)) { string configJSONStr = File.ReadAllText(configFilePath); config = JsonConvert.DeserializeObject <WebServerConfig>(configJSONStr, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }); } else { string jsonString = JsonConvert.SerializeObject(config, Formatting.Indented); File.WriteAllText(configFilePath, jsonString); } //config.LogDirectory = config.LogDirectory.Replace("[ProgramDataDirectory]", Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); //config.WWWDirectory = config.WWWDirectory.Replace("[ProgramDataDirectory]", Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); this.EnableHTTP = config.EnableHTTP; this.HTTPPort = config.HTTPPort; this.EnableHTTPS = config.EnableHTTPS; this.HTTPSPort = config.HTTPSPort; this.SSLCertificateSubjectName = config.SSLCertificateSubjectName; this.SSLCertificateStoreName = config.SSLCertificateStoreName; this.LogDirectory = config.LogDirectory; this.MaximumCacheSizeInMB = config.MaximumCacheSizeInMB; this.OnlyCacheItemsLessThenMB = config.OnlyCacheItemsLessThenMB; this.WWWDirectory = config.WWWDirectory; this.AllowLocalhostConnectionsOnlyForHttp = config.AllowLocalhostConnectionsOnlyForHttp; this.EnableCache = config.EnableCache; this.UtilityConfig.AllowLocalhostConnectionsOnlyForHttp = config.UtilityConfig.AllowLocalhostConnectionsOnlyForHttp; this.UtilityConfig.ConfigUsername = config.UtilityConfig.ConfigUsername; this.UtilityConfig.ConfigPasswordHash = config.UtilityConfig.ConfigPasswordHash; this.UtilityConfig.EnableHTTPS = config.UtilityConfig.EnableHTTPS; this.UtilityConfig.HTTPPort = config.UtilityConfig.HTTPPort; this.UtilityConfig.HTTPSPort = config.UtilityConfig.HTTPSPort; this.UtilityConfig.SSLCertificateStoreName = config.UtilityConfig.SSLCertificateStoreName; this.UtilityConfig.SSLCertificateSubjectName = config.UtilityConfig.SSLCertificateSubjectName; this.Rules.Clear(); foreach (var r in config.Rules) { this.Rules.Add(r); } }
public void Update(WebServerConfig webServerConfig, ObservableCollection <string> sANs) { this.ConfigUsername = webServerConfig.UtilityConfig.ConfigUsername; this.ConfigPasswordHash = webServerConfig.UtilityConfig.ConfigPasswordHash; this.ConfigHTTPPort = webServerConfig.UtilityConfig.HTTPPort; this.ConfigLocalhostOnly = webServerConfig.UtilityConfig.AllowLocalhostConnectionsOnlyForHttp; this.ConfigEnableHTTPS = webServerConfig.UtilityConfig.EnableHTTPS; this.ConfigHTTPSPort = webServerConfig.UtilityConfig.HTTPSPort; this.ConfigSSLCertificateSubjectName = webServerConfig.UtilityConfig.SSLCertificateSubjectName; this.ConfigSSLCertificateStoreName = webServerConfig.UtilityConfig.SSLCertificateStoreName; this.ConfigSubjectAlternativeNames.Clear(); foreach (var sAN in sANs) { this.ConfigSubjectAlternativeNames.Add(sAN); } }