From 4a95363a94cf259d0c82e4c77a278cb8d998a9fc Mon Sep 17 00:00:00 2001 From: Marius Burkard Date: Tue, 13 Nov 2018 20:40:11 +0100 Subject: [PATCH] - allow return code 2 on acme (non-changed domain) --- server/lib/classes/letsencrypt.inc.php | 4 +++- server/lib/classes/system.inc.php | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index ee7abcdd25..9983354c71 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -376,8 +376,10 @@ class letsencrypt { unset($aliasdomains); $letsencrypt_cmd = ''; + $allow_return_codes = null; if($use_acme) { $letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file); + $allow_return_codes = array(2); } else { $letsencrypt_cmd = $this->get_certbot_command($temp_domains); } @@ -388,7 +390,7 @@ class letsencrypt { $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); $app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG); - $success = $app->system->_exec($letsencrypt_cmd); + $success = $app->system->_exec($letsencrypt_cmd, $allow_return_codes); } else { $app->log("Migration mode active, skipping Let's Encrypt SSL Cert creation for: $domain", LOGLEVEL_DEBUG); $success = true; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 5cd9d3f76d..adcc39f840 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1672,14 +1672,24 @@ class system{ } - function _exec($command) { + function _exec($command, $return_codes_ok = null) { global $app; + + if(!is_null($return_codes_ok) && !is_array($return_codes_ok)) { + $return_codes_ok = array($return_codes_ok); + } + $out = array(); $ret = 0; $app->log('exec: '.$command, LOGLEVEL_DEBUG); exec($command, $out, $ret); - if($ret != 0) return false; - else return true; + if($ret == 0) { + return true; + } elseif(is_array($return_codes_ok) && !empty($return_codes_ok) && in_array($ret, $return_codes_ok)) { + return true; + } else { + return false; + } } //* Check if a application is installed -- GitLab