diff --git a/ampel-firmware/web_server.cpp b/ampel-firmware/web_server.cpp index 9cba04f27e880890b72310241ab985f652cc1737..032566016fd0078c7e3010a6f1385da48e34159b 100644 --- a/ampel-firmware/web_server.cpp +++ b/ampel-firmware/web_server.cpp @@ -22,6 +22,7 @@ namespace web_server { const char *script_template; void handleWebServerRoot(); void handlePageNotFound(); + void handleWebServerCommand(); #ifdef AMPEL_CSV void handleDeleteCSV(); @@ -173,6 +174,7 @@ namespace web_server { // Web-server http.on("/", handleWebServerRoot); + http.on("/command", handleWebServerCommand); #ifdef AMPEL_CSV http.on("/" + csv_writer::filename, handleWebServerCSV); http.on("/delete_csv", HTTP_POST, handleDeleteCSV); @@ -275,6 +277,15 @@ namespace web_server { } #endif + void handleWebServerCommand() { + if (!shouldBeAllowed()) { + return http.requestAuthentication(DIGEST_AUTH); + } + sensor_commands::run(http.arg("send").c_str()); + http.sendHeader("Location", "/"); + http.send(303); + } + void handlePageNotFound() { http.send(404, F("text/plain"), F("404: Not found")); }