\n"; my ($ok, $cert, $key, $chain) = &request_letsencrypt_cert( \@doms, $webroot, undef, $size, $mode, $in{'staging'}, undef, undef, undef, undef, undef, undef, $in{'subset'}); if (!$ok) { print &text('letsencrypt_failed', $cert),"
\n"; } else { # Worked, now copy to Webmin print $text{'letsencrypt_done'},"
\n"; # Save the renewal schedule &save_renewal_only(\@doms, $webroot, $mode, $size, $in{'subset'}, $in{'use'}); # Copy cert, key and chain to Webmin if ($in{'use'}) { print $text{'letsencrypt_webmin'},"\n"; &lock_file($ENV{'MINISERV_CONFIG'}); &get_miniserv_config(\%miniserv); $miniserv{'keyfile'} = $config_directory. "/letsencrypt-key.pem"; &lock_file($miniserv{'keyfile'}); ©_source_dest($key, $miniserv{'keyfile'}, 1); &unlock_file($miniserv{'keyfile'}); $miniserv{'certfile'} = $config_directory. "/letsencrypt-cert.pem"; &lock_file($miniserv{'certfile'}); ©_source_dest($cert, $miniserv{'certfile'}, 1); &unlock_file($miniserv{'certfile'}); if ($chain) { $miniserv{'extracas'} = $config_directory. "/letsencrypt-ca.pem"; &lock_file($miniserv{'extracas'}); ©_source_dest($chain, $miniserv{'extracas'}, 1); &unlock_file($miniserv{'extracas'}); } else { delete($miniserv{'extracas'}); } &put_miniserv_config(\%miniserv); &unlock_file($ENV{'MINISERV_CONFIG'}); &webmin_log("letsencrypt"); &restart_miniserv(1); print $text{'letsencrypt_wdone'},"
\n"; } # Tell the user what was done print $text{'letsencrypt_show'},"
\n"; my @grid = ( $text{'letsencrypt_cert'}, $cert, $text{'letsencrypt_key'}, $key ); push(@grid, $text{'letsencrypt_chain'}, $chain) if ($chain); print &ui_grid_table(\@grid, 2); } &ui_print_footer("", $text{'index_return'}); } # save_renewal_only(&doms, webroot, mode, size, subset-mode, used-by-webmin) # Save for future renewals sub save_renewal_only { my ($doms, $webroot, $mode, $size, $subset, $usewebmin) = @_; $config{'letsencrypt_doms'} = join(" ", @$doms); $config{'letsencrypt_webroot'} = $webroot; $config{'letsencrypt_mode'} = $mode; $config{'letsencrypt_size'} = $size; $config{'letsencrypt_subset'} = $subset; $config{'letsencrypt_nouse'} = $usewebmin ? 0 : 1; &save_module_config(); if (&foreign_check("webmincron")) { my $job = &find_letsencrypt_cron_job(); if ($in{'renew_def'}) { &webmincron::delete_webmin_cron($job) if ($job); } else { my @tm = localtime(time() - 60); $job ||= { 'module' => $module_name, 'func' => 'renew_letsencrypt_cert' }; $job->{'mins'} ||= $tm[1]; $job->{'hours'} ||= $tm[2]; $job->{'days'} ||= $tm[3]; $job->{'months'} = '*/'.$in{'renew'}; $job->{'weekdays'} = '*'; &webmincron::create_webmin_cron($job); } } }