public CertVault(DirectoryPath baseDir, CertVaultSettings?defaultSettings = null, CertificateStore?defaultCertificate = null, TcpIpSystem?tcpIp = null, bool isGlobalVault = false) { try { Util.PutGitIgnoreFileOnDirectory(baseDir, flags: FileFlags.AutoCreateDirectory); this.AutoGeneratingRootCA = DevTools.CoresDebugCACert.PkiCertificateStore; this.DefaultCertificate = defaultCertificate; this.TcpIp = tcpIp ?? LocalNet; this.IsGlobalCertVault = isGlobalVault; if (defaultSettings == null) { defaultSettings = new CertVaultSettings(EnsureSpecial.Yes); } this.DefaultSettings = (CertVaultSettings)defaultSettings.Clone(); this.BaseDir = baseDir; this.StaticDir = this.BaseDir.GetSubDirectory("StaticCerts"); this.AcmeDir = this.BaseDir.GetSubDirectory("AcmeCerts"); this.AutoGeneratedDir = this.BaseDir.GetSubDirectory("AutoGeneratedCerts"); this.SettingsFilePath = this.BaseDir.Combine(Consts.FileNames.CertVault_Settings); this.AcmeAccountKeyFilePath = this.AcmeDir.Combine(Consts.FileNames.CertVault_AcmeAccountKey); this.AcmeCertKeyFilePath = this.AcmeDir.Combine(Consts.FileNames.CertVault_AcmeCertKey); this.CertificateSelectorCache = new SyncCache <string, CertificateStore>(CoresConfig.CertVaultSettings.CertificateSelectorCacheLifetime, CacheFlags.IgnoreUpdateError, hostname => this.SelectBestFitCertificate(hostname, out _, false)); this.CertificateSelectorCache_NoAcme = new SyncCache <string, CertificateStore>(CoresConfig.CertVaultSettings.CertificateSelectorCacheLifetime, CacheFlags.IgnoreUpdateError, hostname => this.SelectBestFitCertificate(hostname, out _, true)); Reload(); this.StartMainLoop(MainLoopAsync); } catch (Exception ex) { this._DisposeSafe(); ex._Debug(); throw; } }
void InternalReload() { List <CertVaultCertificate> list = new List <CertVaultCertificate>(); // Create directories try { this.BaseDir.CreateDirectory(); } catch { } try { this.StaticDir.CreateDirectory(); } catch { } Util.PutGitIgnoreFileOnDirectory(this.BaseDir, flags: FileFlags.AutoCreateDirectory); // Load settings CertVaultSettings tmpSettings = this.SettingsFilePath.ReadAndParseDataFile(ReadParseFlags.Both, data => { var ret = data._GetString_UTF8()._JsonToObject <CertVaultSettings>(); ret !.Normalize(); return(ret); },