Extend browser admin lifecycle actions

Support browser reboot and HTTPS stop through deferred control, plus
exact
`web certificate rotate --force` handoff to the dispatcher. Add typed
request
validation and focused boundary and lifecycle coverage.
This commit is contained in:
2026-09-07 09:36:38 +02:00
parent 17520b15b7
commit 326119812f
23 changed files with 699 additions and 47 deletions
+20
View File
@@ -2,6 +2,7 @@
/* UART0 HTTPS lifecycle, legacy recovery credential, and certificate commands. */
#include "web_console.h"
#include "admin_ssh_console.h"
#include <inttypes.h>
#include <stdio.h>
@@ -394,6 +395,15 @@ static int command_web(int argc, char **argv)
return 0;
}
if (argc == 2 && strcmp(argv[1], "stop") == 0) {
if (admin_ssh_console_dispatch_is_web()) {
esp_err_t error = admin_ssh_console_dispatch_defer(ADMIN_CONSOLE_DEFER_WEB_STOP, 0U);
if (error != ESP_OK) {
printf("Could not schedule HTTPS stop: %s\n", esp_err_to_name(error));
return 1;
}
printf("HTTPS stop scheduled after console output drains; both browser connections will close.\n");
return 0;
}
esp_err_t error = web_server_stop();
if (error != ESP_OK) {
printf("Could not stop HTTPS: %s\n", esp_err_to_name(error));
@@ -439,6 +449,16 @@ static int command_web(int argc, char **argv)
printf("Certificate rotation requires: web certificate rotate --force\n");
return 1;
}
if (admin_ssh_console_dispatch_is_web()) {
esp_err_t error = admin_ssh_console_dispatch_defer(
ADMIN_CONSOLE_DEFER_WEB_CERTIFICATE_ROTATE, 0U);
if (error != ESP_OK) {
printf("Could not schedule HTTPS certificate rotation: %s\n", esp_err_to_name(error));
return 1;
}
printf("HTTPS certificate rotation scheduled after console output drains; both browser connections will close. Reconnect and verify the new certificate. If restart fails, use UART0 or SSH recovery.\n");
return 0;
}
return rotate_certificate();
}
if (strcmp(argv[1], "reset") == 0) {