コード例 #1
0
        public static void RenewalInProgress(RenewalParameters renewalParams)
        {
            if (!TelemetryHelper.TelemetryInitialized)
            {
                return;
            }

            if (renewalParams == null)
            {
                TelemetryHelper.TrackInternalError(new ArgumentNullException(nameof(renewalParams)));
                return;
            }

            foreach (var host in renewalParams.Hosts) // normalize events so only one per host is fired
            {
                TelemetryHelper.Client.TrackEvent(
                    "CertRenewal",
                    new Dictionary <string, string>
                {
                    { "subscriptionId", renewalParams.SubscriptionId.ToString() },
                    { "tenantId", renewalParams.TenantId },
                    { "resourceGroup", renewalParams.ResourceGroup },
                    { "webApp", renewalParams.WebApp },
                    { "host", host },
                    { "email", TelemetryHelper.Hash(renewalParams.Email) },
                    { "clientId", renewalParams.ClientId.ToString() },
                    { "useIpBasedSsl", renewalParams.UseIpBasedSsl.ToString() },
                    { "acmeBaseUri", renewalParams.AcmeBaseUri == null ? "[DEFAULT]" : renewalParams.AcmeBaseUri.ToString() },
                },
                    new Dictionary <string, double>
                {
                    { "rsaKeyLength", renewalParams.RsaKeyLength },
                });
            }
        }
コード例 #2
0
        public async Task NotifyAsync(RenewalParameters renewalParams)
        {
            if (renewalParams == null)
            {
                throw new ArgumentNullException(nameof(renewalParams));
            }

            if (m_apiKey == null)
            {
                Trace.TraceWarning(
                    "E-mail notification for web app {0} skipped because the '{1}' connection string was not set",
                    renewalParams.WebApp,
                    Constants.SendGridApiKey);
                return;
            }

            var message = MailHelper.CreateSingleEmail(
                new EmailAddress("*****@*****.**", "Azure Web App Let's Encrypt Renewer"),
                new EmailAddress(renewalParams.Email),
                "SSL Certificate renewal complete for web app: " + renewalParams.WebApp,
                "Renewal parameters:" + Environment.NewLine + renewalParams,
                null);

            Trace.TraceInformation("Sending e-mail notification for {0}... ", renewalParams.WebApp);
            await new SendGridClient(m_apiKey).SendEmailAsync(message);
            Trace.TraceInformation("Finished sending e-mail notification for: {0}", renewalParams.WebApp);
        }
        public RenewalParameters Read(string[] args)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            ParserResult <Options> parserResult;

            using (var parser = new Parser())
            {
                parserResult = parser.ParseArguments <Options>(args);
            }

            if (parserResult.Tag != ParserResultType.Parsed)
            {
                throw new ArgumentParsingException("Could not parse command-line arguments", GetUsage(parserResult));
            }

            var parsed = ((Parsed <Options>)parserResult).Value;

            RenewalParameters renewalParameters;

            try
            {
                renewalParameters = new RenewalParameters(
                    parsed.SubscriptionId,
                    parsed.TenantId,
                    parsed.ResourceGroup,
                    parsed.WebApp,
                    parsed.Hosts,
                    parsed.Email,
                    parsed.ClientId,
                    parsed.ClientSecret,
                    parsed.ServicePlanResourceGroup,
                    groupName: null,
                    parsed.SiteSlotName,
                    parsed.OtherWebAppResourceGroup,
                    parsed.OtherWebApp,
                    parsed.OtherSlotName,
                    parsed.StorageConnectionString,
                    parsed.StorageContainer,
                    parsed.UseIpBasedSsl,
                    parsed.RsaKeyLength,
                    parsed.AcmeBaseUri,
                    parsed.RenewXNumberOfDaysBeforeExpiration,
                    parsed.AzureAuthenticationEndpoint,
                    parsed.AzureTokenAudience,
                    parsed.AzureManagementEndpoint,
                    parsed.AzureDefaultWebsiteDomainName);
            }
            catch (ArgumentException e)
            {
                throw new ArgumentValidationException(e);
            }

            return(renewalParameters);
        }
コード例 #4
0
        public Task NotifyAsync(RenewalParameters renewalParams)
        {
            if (renewalParams == null)
            {
                throw new ArgumentNullException(nameof(renewalParams));
            }

            return(NotifyAsyncCore(renewalParams));
        }
コード例 #5
0
        private async Task NotifyAsyncCore(RenewalParameters renewalParams)
        {
            if (m_apiKey == null)
            {
                Trace.TraceWarning(
                    "E-mail notification for web app {0} skipped because the '{1}' connection string was not set",
                    renewalParams.WebApp,
                    Constants.SendGridApiKey);
                return;
            }

            var message = MailHelper.CreateSingleEmail(
                new EmailAddress(renewalParams.FromEmail, name: $"Azure Web App Let's Encrypt Renewer"),
                new EmailAddress(renewalParams.ToEmail),
                "SSL Certificate renewal complete for web app: " + renewalParams.WebApp,
                "Renewal parameters:" + Environment.NewLine + renewalParams,
                null);

            Trace.TraceInformation("Sending e-mail notification for {0}... ", renewalParams.WebApp);
            await new SendGridClient(m_apiKey).SendEmailAsync(message).ConfigureAwait(false);
            Trace.TraceInformation("Finished sending e-mail notification for: {0}", renewalParams.WebApp);
        }
コード例 #6
0
 public Task Renew(RenewalParameters renewalParams)
 {
     m_renewalParams.Enqueue(renewalParams);
     return(Task.CompletedTask);
 }