From b11557203e368d036e42fdf681a20b86eb98ccfe Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 31 May 2016 11:20:39 +0200 Subject: [PATCH] - only restart web server if cert was renewed --- .../classes/cron.d/900-letsencrypt.inc.php | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php index 163dec253c..517495160e 100644 --- a/server/lib/classes/cron.d/900-letsencrypt.inc.php +++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php @@ -38,8 +38,26 @@ class cronjob_letsencrypt extends cronjob { $letsencrypt = array_shift( explode("\n", `which letsencrypt /root/.local/share/letsencrypt/bin/letsencrypt`) ); if(is_executable($letsencrypt)) { - exec($letsencrypt . ' -n renew'); - $app->services->restartServiceDelayed('httpd', 'reload'); + $version = trim(exec($letsencrypt . ' --version 2>/dev/null')); + if(preg_match('/^(\S+)\s+(\d+(\.\d+)+)$/', $version, $matches)) { + $type = strtolower($matches[1]); + $version = $matches[2]; + if($type != 'letsencrypt' || version_compare($version, '0.7.0', '<')) { + exec($letsencrypt . ' -n renew'); + $app->services->restartServiceDelayed('httpd', 'reload'); + } else { + $marker_file = '/usr/local/ispconfig/server/le.restart'; + $cmd = "echo '1' > " . $marker_file; + exec($letsencrypt . ' -n renew --post-hook ' . escapeshellarg($cmd)); + if(file_exists($marker_file) && trim(file_get_contents($marker_file)) == '1') { + unlink($marker_file); + $app->services->restartServiceDelayed('httpd', 'reload'); + } + } + } else { + exec($letsencrypt . ' -n renew'); + $app->services->restartServiceDelayed('httpd', 'reload'); + } } parent::onRunJob(); -- GitLab