Esempio n. 1
0
        public static async Task <Client> Login(string mail, Func <HttpClient> httpClientGenerator, string dnsimpleToken, Account?account = null, bool production = true)
        {
            var acmeHttpClient = new AcmeHttpClient(GetServer(production), httpClientGenerator());

            AcmeContext acme;

            if (account == null)
            {
                acme = new AcmeContext(GetServer(production), null, acmeHttpClient);
                await acme.NewAccount(mail, true);

                account = new Account(acme.AccountKey);
            }
            else
            {
                acme = new AcmeContext(GetServer(production), account.Key, acmeHttpClient);
            }

            var client = new DNSimple.Client(httpClientGenerator());

            client.UseToken(dnsimpleToken);

            var dnsimple = await client.GetAccount(mail);

            return(new Client(acme, dnsimple, account));
        }
Esempio n. 2
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         client  = null;
         context = null;
     }
 }
Esempio n. 3
0
 public AutoAcmeContext(Uri serverAddress)
 {
     if (serverAddress == null)
     {
         throw new ArgumentNullException(nameof(serverAddress));
     }
     if (serverAddress == WellKnownServers.LetsEncrypt)
     {
         serverAddress = WellKnownServers.LetsEncryptV2;
     }
     else if (serverAddress == WellKnownServers.LetsEncryptStaging)
     {
         serverAddress = WellKnownServers.LetsEncryptStagingV2;
     }
     Log.WriteVerboseLine($"Using server {serverAddress}");
     this.serverAddress = serverAddress;
     client             = new AcmeHttpClient(serverAddress);
 }
Esempio n. 4
0
        /// <summary>
        /// setup the basic settings before we init the acme context
        /// </summary>
        /// <param name="acmeDirectoryUrl"></param>
        private void PreInitAcmeContext()
        {
            _lastInitDateTime = DateTime.Now;

            _loggingHandler = new LoggingHandler(new HttpClientHandler(), _log);
            var customHttpClient = new System.Net.Http.HttpClient(_loggingHandler);

            if (customHttpClient.DefaultRequestHeaders.Contains("User-Agent"))
            {
                customHttpClient.DefaultRequestHeaders.Remove("User-Agent");
            }
            customHttpClient.DefaultRequestHeaders.Add("User-Agent", _userAgentName);

#if DEBUG
            customHttpClient.Timeout = TimeSpan.FromSeconds(10);
#endif

            _httpClient = new AcmeHttpClient(_serviceUri, customHttpClient);
        }
Esempio n. 5
0
        /// <summary>
        /// Initialise provider settings, loading current account key if present
        /// </summary>
        public async Task <bool> InitProvider(ILog log = null)
        {
            if (log != null)
            {
                _log = log;
            }

            _lastInitDateTime = DateTime.Now;

            _loggingHandler = new LoggingHandler(new HttpClientHandler(), _log);
            var customHttpClient = new System.Net.Http.HttpClient(_loggingHandler);

            customHttpClient.DefaultRequestHeaders.Add("User-Agent", _userAgentName);

            _httpClient = new AcmeHttpClient(_serviceUri, customHttpClient);

            LoadSettings();

            if (!string.IsNullOrEmpty(_settings.AccountKey))
            {
                if (System.IO.File.Exists(_settingsFolder + "\\c-acc.key"))
                {
                    //remove legacy key info
                    System.IO.File.Delete(_settingsFolder + "\\c-acc.key");
                }
                SetAcmeContextAccountKey(_settings.AccountKey);
            }
            else
            {
                // no account key in settings, check .key (legacy key file)
                if (System.IO.File.Exists(_settingsFolder + "\\c-acc.key"))
                {
                    string pem = System.IO.File.ReadAllText(_settingsFolder + "\\c-acc.key");
                    SetAcmeContextAccountKey(pem);
                }
            }

            _currentOrders = new Dictionary <string, IOrderContext>();

            return(await Task.FromResult(true));
        }