diff options
| author | Simon Rettberg | 2025-08-13 14:31:13 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2025-08-13 14:31:13 +0200 |
| commit | 3eee292d792a2ae6e6b0650f76edc80f1a133244 (patch) | |
| tree | 7c245b1592c8fde69d2f455582b04e39117c524b | |
| parent | [sysconfig] Minor cleanup, response code overrides for audit (diff) | |
| download | slx-admin-3eee292d792a2ae6e6b0650f76edc80f1a133244.tar.gz slx-admin-3eee292d792a2ae6e6b0650f76edc80f1a133244.tar.xz slx-admin-3eee292d792a2ae6e6b0650f76edc80f1a133244.zip | |
[webinterface] Switch type to acme only after successfully requesting cert
| -rw-r--r-- | modules-available/webinterface/inc/acme.inc.php | 15 | ||||
| -rw-r--r-- | modules-available/webinterface/page.inc.php | 1 |
2 files changed, 11 insertions, 5 deletions
diff --git a/modules-available/webinterface/inc/acme.inc.php b/modules-available/webinterface/inc/acme.inc.php index bc26b7b2..689df054 100644 --- a/modules-available/webinterface/inc/acme.inc.php +++ b/modules-available/webinterface/inc/acme.inc.php @@ -103,15 +103,19 @@ class Acme Property::set(self::PROP_DOMAINS, implode(' ', $list)); } - private static function handleErrorAsync($task): void + private static function handleAcmeResultAsync($task): void { if (!is_array($task) || !Taskmanager::isTask($task)) return; $task = Taskmanager::waitComplete($task, 250); - $args = ['user' => User::getLogin()]; + $args = [ + 'user' => User::getLogin(), + 'previous' => Property::get(WebInterface::PROP_TYPE), // Remember in case of failure + ]; if (Taskmanager::isFinished($task)) { self::callbackErrorCheck($task, $args); } else { + Property::set(WebInterface::PROP_TYPE, 'acme'); Property::set(self::PROP_ERROR, false); TaskmanagerCallback::addCallback($task, 'acmeErrors', $args); } @@ -129,6 +133,9 @@ class Acme } } if (Taskmanager::isFailed($task) || $otherError) { + if (isset($args['previous']) && Property::get(WebInterface::PROP_TYPE) === 'acme') { + Property::set(WebInterface::PROP_TYPE, $args['previous']); + } if (($args['user'] ?? null) === null) { EventLog::warning('Automatic ACME renewal of HTTPS certificate failed', print_r($task, true)); } @@ -180,7 +187,7 @@ class Acme 'acmeHmacKey' => self::getHmacKey(), 'acmeWipeAll' => $wipeAll, ]); - self::handleErrorAsync($task); + self::handleAcmeResultAsync($task); return $task['id'] ?? null; } @@ -204,7 +211,7 @@ class Acme 'acmeMode' => 'renew', 'acmeDomains' => $domains, ]); - self::handleErrorAsync($task); + self::handleAcmeResultAsync($task); return $task['id'] ?? null; } diff --git a/modules-available/webinterface/page.inc.php b/modules-available/webinterface/page.inc.php index 880a67b8..b721da27 100644 --- a/modules-available/webinterface/page.inc.php +++ b/modules-available/webinterface/page.inc.php @@ -243,7 +243,6 @@ class Page_WebInterface extends Page private function setAcmeMode(): ?string { - Property::set(WebInterface::PROP_TYPE, 'acme'); $wipeAll = Request::post('acme-wipe-all', false, 'bool'); // Get params $provider = Request::post('acme-provider', Request::REQUIRED, 'string'); |
