summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2025-08-13 14:31:13 +0200
committerSimon Rettberg2025-08-13 14:31:13 +0200
commit3eee292d792a2ae6e6b0650f76edc80f1a133244 (patch)
tree7c245b1592c8fde69d2f455582b04e39117c524b
parent[sysconfig] Minor cleanup, response code overrides for audit (diff)
downloadslx-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.php15
-rw-r--r--modules-available/webinterface/page.inc.php1
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');