public void Init(string web, IConfig config = null, ILogger logger = null, int mxtry = 10, CancellationToken ct = default(CancellationToken)) { if (config != null) { if (_config == null || (_config.Email != config.Email)) { _config = config; _config.Dir = Global.RegisterNewDirectory(_config.Email); if (logger != null) { _logger = logger; } else { _logger = new Logger( ); _logger.Open(string.Format(@"{0}\log\{1}_{2}_{3}.log", Global.APP_DIR, DateTime.Now.ToString("yyyy'-'MM'-'dd"), _config.Email.Replace("@", "").Replace("_", "").Replace(".", ""), Guid.NewGuid( ).ToString("N"))); } _logger.Write("Working for {0}", _config.Email); } } if (domain != null) { if (domain.ZoneName == web) { return; } } domain = _config.Domain.Find(a => a.DomainName == web); if (domain == null) { string msg = string.Format("No data found for domain {0} against Email {1}!!!", web, _config.Email); _logger.Write(msg); throw new Exception(msg); } _logger.Write("Working for {0}", web); _domainDir = Global.RegisterNewDirectory(domain.ZoneName, _config.Dir); Global.RegisterNewDirectory("order", _domainDir); _orderAbsolute = string.Format(@"{0}\order\new_order.bin", _domainDir); _txtAbsolute = string.Format(@"{0}\order\_acme-challenge.txt", _domainDir); _certDir = string.Format(@"{0}\cert\", _domainDir); FileWorker.CreateDirectory(_certDir); _cfDns = new CFDNS(new CFConfig { CF_API = Global.gConfig.CF_API, CF_URI = Global.gConfig.CF_URI, CF_AUTH_KEY = config.CF_AUTH_KEY, CF_AUTH_EMAIL = config.Email, CF_DNS_ZONE = domain.CF_DNS_ZONE }, _logger); _cancellationTokenSource = new CancellationTokenSource( ); MAX_TRY = mxtry; _appct = _cancellationTokenSource.Token; _ct = ct; }