From b11557203e368d036e42fdf681a20b86eb98ccfe Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 31 May 2016 05:20:39 -0400
Subject: [PATCH] - only restart web server if cert was renewed
---
server/lib/classes/cron.d/900-letsencrypt.inc.php | 22 ++++++++++++++++++++--
1 files 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 163dec2..5174951 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 @@
$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();
--
Gitblit v1.9.1