From b9a3ef486ebcde18a5ade37865ff8f397185d24f Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Sun, 24 Jul 2016 05:30:59 -0400
Subject: [PATCH] Fixed #3979 Mailbox users unable to save autoresponders

---
 server/lib/classes/cron.d/900-letsencrypt.inc.php |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php
index 55be1b1..5441ac2 100644
--- a/server/lib/classes/cron.d/900-letsencrypt.inc.php
+++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php
@@ -36,9 +36,28 @@
 	public function onRunJob() {
 		global $app, $conf;
 
-		if(file_exists("/root/.local/share/letsencrypt/bin/letsencrypt")) {
-			exec('/root/.local/share/letsencrypt/bin/letsencrypt -n renew');
-			$app->services->restartServiceDelayed('httpd', 'reload');
+		$letsencrypt = array_shift( explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt')) );
+		if(is_executable($letsencrypt)) {
+			$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' && $type != 'certbot') || 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