Skip to content

Commit 5f3c733

Browse files
author
Marius Burkard
committed
do not create or renew LE certificates on active migration mode, fixes #4702
1 parent 71aeb3b commit 5f3c733

File tree

2 files changed

+40
-29
lines changed

2 files changed

+40
-29
lines changed

server/lib/classes/cron.d/900-letsencrypt.inc.php

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,35 @@ public function onBeforeRun() {
4949

5050
public function onRunJob() {
5151
global $app, $conf;
52-
53-
$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt'));
54-
$letsencrypt = reset($letsencrypt);
55-
if(is_executable($letsencrypt)) {
56-
$version = exec($letsencrypt . ' --version 2>&1', $ret, $val);
57-
if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $version, $matches)) {
58-
$type = strtolower($matches[1]);
59-
$version = $matches[2];
60-
if(($type != 'letsencrypt' && $type != 'certbot') || version_compare($version, '0.7.0', '<')) {
61-
exec($letsencrypt . ' -n renew');
62-
$app->services->restartServiceDelayed('httpd', 'force-reload');
63-
} else {
64-
$marker_file = '/usr/local/ispconfig/server/le.restart';
65-
$cmd = "echo '1' > " . $marker_file;
66-
exec($letsencrypt . ' -n renew --post-hook ' . escapeshellarg($cmd));
67-
if(file_exists($marker_file) && trim(file_get_contents($marker_file)) == '1') {
68-
unlink($marker_file);
52+
53+
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
54+
if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') {
55+
$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt'));
56+
$letsencrypt = reset($letsencrypt);
57+
if(is_executable($letsencrypt)) {
58+
$version = exec($letsencrypt . ' --version 2>&1', $ret, $val);
59+
if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $version, $matches)) {
60+
$type = strtolower($matches[1]);
61+
$version = $matches[2];
62+
if(($type != 'letsencrypt' && $type != 'certbot') || version_compare($version, '0.7.0', '<')) {
63+
exec($letsencrypt . ' -n renew');
6964
$app->services->restartServiceDelayed('httpd', 'force-reload');
65+
} else {
66+
$marker_file = '/usr/local/ispconfig/server/le.restart';
67+
$cmd = "echo '1' > " . $marker_file;
68+
exec($letsencrypt . ' -n renew --post-hook ' . escapeshellarg($cmd));
69+
if(file_exists($marker_file) && trim(file_get_contents($marker_file)) == '1') {
70+
unlink($marker_file);
71+
$app->services->restartServiceDelayed('httpd', 'force-reload');
72+
}
7073
}
74+
} else {
75+
exec($letsencrypt . ' -n renew');
76+
$app->services->restartServiceDelayed('httpd', 'force-reload');
7177
}
72-
} else {
73-
exec($letsencrypt . ' -n renew');
74-
$app->services->restartServiceDelayed('httpd', 'force-reload');
7578
}
79+
} else {
80+
$app->log('Migration mode active, not running Let\'s Encrypt renewal.', LOGLEVEL_DEBUG);
7681
}
7782

7883
parent::onRunJob();

server/lib/classes/letsencrypt.inc.php

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public function request_certificates($data, $server_type = 'apache') {
181181

182182
$app->uses('getconf');
183183
$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
184+
$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
184185

185186
$tmp = $app->letsencrypt->get_website_certificate_paths($data);
186187
$domain = $tmp['domain'];
@@ -233,7 +234,7 @@ public function request_certificates($data, $server_type = 'apache') {
233234

234235
$le_domains = array();
235236
foreach($temp_domains as $temp_domain) {
236-
if(isset($web_config['skip_le_check']) && $web_config['skip_le_check'] == 'y') {
237+
if((isset($web_config['skip_le_check']) && $web_config['skip_le_check'] == 'y') || (isset($server_config['migration_mode']) && $server_config['migration_mode'] == 'y')) {
237238
$le_domains[] = $temp_domain;
238239
} else {
239240
$le_hash_check = trim(@file_get_contents('http://' . $temp_domain . '/.well-known/acme-challenge/' . $le_rnd_file));
@@ -261,14 +262,19 @@ public function request_certificates($data, $server_type = 'apache') {
261262
$letsencrypt_cmd = '';
262263
$success = false;
263264
if(!empty($cli_domain_arg)) {
264-
$app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG);
265-
$app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG);
266-
267-
$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt'));
268-
$letsencrypt = reset($letsencrypt);
269-
if(is_executable($letsencrypt)) {
270-
$letsencrypt_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain $cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme";
271-
$success = $app->system->_exec($letsencrypt_cmd);
265+
if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') {
266+
$app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG);
267+
$app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG);
268+
269+
$letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt'));
270+
$letsencrypt = reset($letsencrypt);
271+
if(is_executable($letsencrypt)) {
272+
$letsencrypt_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain $cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme";
273+
$success = $app->system->_exec($letsencrypt_cmd);
274+
}
275+
} else {
276+
$app->log("Migration mode active, skipping Let's Encrypt SSL Cert creation for: $domain", LOGLEVEL_DEBUG);
277+
$success = true;
272278
}
273279
}
274280

0 commit comments

Comments
 (0)