Example #1
0
 public CertificateAcquirer(ILogger <CertificateAcquirer> logger, DataContext dataContext, CertesAcmeProvider certesAcmeProvider,
                            NotificationService notificationService)
 {
     _logger              = logger;
     _dataContext         = dataContext;
     _certesAcmeProvider  = certesAcmeProvider;
     _notificationService = notificationService;
 }
Example #2
0
 public CertificateAcquirer(ILogger <CertificateAcquirer> logger, DataContext dataContext, CertesAcmeProvider certesAcmeProvider,
                            IOptionsSnapshot <MailSenderInfo> mailSenderInfo, MailSender mailSender)
 {
     _logger             = logger;
     _dataContext        = dataContext;
     _certesAcmeProvider = certesAcmeProvider;
     _mailSenderInfo     = mailSenderInfo;
     _mailSender         = mailSender;
 }
Example #3
0
 public CreateModel(ILogger <CreateModel> logger, DataContext context, KeyGenerator keyGenerator,
                    UserManager <ApplicationUser> userManager,
                    CertesAcmeProvider certesAcmeProvider)
 {
     _logger             = logger;
     _context            = context;
     _keyGenerator       = keyGenerator;
     _userManager        = userManager;
     _certesAcmeProvider = certesAcmeProvider;
 }
Example #4
0
 public AcmeModel(ILogger <IndexModel> logger,
                  DataContext dataContext,
                  CertesAcmeProvider certesAcmeProvider,
                  UserManager <ApplicationUser> userManager,
                  IWritableOptions <HttpServer> httpServerOptions,
                  IWritableOptions <Options.Setup> setupOptions,
                  KeyGenerator keyGenerator)
 {
     _logger             = logger;
     _dataContext        = dataContext;
     _certesAcmeProvider = certesAcmeProvider;
     _userManager        = userManager;
     _httpServerOptions  = httpServerOptions;
     _setupOptions       = setupOptions;
     _keyGenerator       = keyGenerator;
 }
        public async Task Invoke(HttpContext httpContext,
                                 ILogger <SetupAcmeCertMiddleware> logger,
                                 CertesAcmeProvider certes,
                                 DataContext dataContext,
                                 IOptionsSnapshot <HttpServer> httpServerOptions)
        {
            if (httpContext.Request.Method != "POST")
            {
                httpContext.Response.Redirect("/");
                return;
            }

            var host = httpServerOptions.Value.SiteHostname;

            await httpContext.Response.WriteAsync(ConsoleHeader);

            await httpContext.Response.WriteAsync($@"
        Starting certificate acquisition for {host}... <br />");

            var acmeCert = await dataContext.AcmeCertificates
                           .Include(x => x.Key)
                           .Include(x => x.AcmeAccount)
                           .ThenInclude(x => x.Key)
                           .FirstAsync(x => x.Subject == host);

            await httpContext.Response.WriteAsync($@"
        Initializing ACME client and ensuring account... <br />");

            certes.Initialize(acmeCert);

            // Begin the order
            await httpContext.Response.WriteAsync($@"
        Creating order... <br />");

            var acmeOrder = await certes.BeginOrder();

            dataContext.AcmeOrders.Add(acmeOrder);
            dataContext.SaveChanges();

            // Validate (i.e. ask ACME to check via HTTP-01 or DNS-01)
            await httpContext.Response.WriteAsync($@"
        Requesting ACME validation... <br />");

            await certes.Validate();

            dataContext.SaveChanges();

            // Complete the order (i.e. obtain the certifiate)
            await httpContext.Response.WriteAsync($@"
        Completing order... (this can take up to 30 seconds)<br />");

            await certes.Complete();

            // Remove old ACME requests because they're irrelevant
            await httpContext.Response.WriteAsync($@"
        Cleaning up... <br />");

            acmeOrder.AcmeRequests.Clear();
            dataContext.SaveChanges();

            await httpContext.Response.WriteAsync($@"
        Done. Status: {acmeOrder.Status}... <br />");

            bool restart = false;

            if (!acmeOrder.Completed)
            {
                var errors = acmeOrder.Errors.Replace("\r\n", "<br />");
                await httpContext.Response.WriteAsync($@"
        <div class=""red""><p>Errors:<br />{errors}</p></div><br />");
            }
            else
            {
                restart = true;
                await httpContext.Response.WriteAsync(@"
        <br />
        Setup finished successfully! 
        <br />
        <hr />
        <br />
        Certera is restarting...
        <br />
        <script>
            var restartFinished = setInterval(checkLoaded, 5000);
            var tries = 5;
        
            function checkLoaded() {
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                        window.location.href=""/"";
                    }
                };
                xhttp.open(""GET"", ""/api/test"", true);
                xhttp.send();
            }
        </script>
        <noscript>
            Please wait 10 seconds for server to restart. Then, <a href=""/"">click here to continue</a>.
        </noscript>");
            }

            await httpContext.Response.WriteAsync(@"
    </p>
</body>
</html>");

            if (restart)
            {
                Program.Restart();
            }
        }
Example #6
0
 public KeyGenerator(DataContext dataContext, CertesAcmeProvider certesAcmeProvider)
 {
     _dataContext        = dataContext;
     _certesAcmeProvider = certesAcmeProvider;
 }
Example #7
0
 public HistoryModel(DataContext context, CertesAcmeProvider certesAcmeProvider, ILogger <HistoryModel> logger)
 {
     _context            = context;
     _certesAcmeProvider = certesAcmeProvider;
     _logger             = logger;
 }