implement webui littlefs wipe

This commit is contained in:
Marcus 2024-10-22 01:09:12 +02:00
parent 22fdfc57c2
commit 5af5bcd94d
6 changed files with 73 additions and 5 deletions

View file

@ -127,7 +127,7 @@ void setup() {
// read status from PinWIPE to WIPE
// when PinWIPE is set to LOW, format LittleFS
if(digitalRead(PinWIPE) != PinWIPE_default) {
LFS_format();
LFS_Format();
Restart();
}

View file

@ -123,8 +123,11 @@ case $1 in
;;
w|webupload)
echo ":: Uploading to $IP"
curl -v http://$IP/system/applyUpdate -X POST -H 'Content-Type: multipart/form-data' -F "firmware=@$(pwd)/build/CanGrow.ino.bin"
test -z "$2" && UPLOAD_FILE="$(pwd)/build/CanGrow.ino.bin"
test -n "$2" && UPLOAD_FILE="$2"
echo ":: Uploading $UPLOAD_FILE to $IP"
curl -v http://$IP/system/update -X POST -H 'Content-Type: multipart/form-data' -F "firmware=@${UPLOAD_FILE}"
echo
;;
m|mon|monitor)

View file

@ -47,7 +47,7 @@ void LFS_Init() {
}
}
void LFS_format() {
void LFS_Format() {
Serial.println(":: [LittleFS] formatting...");
// ESP32 LittleFS needs begin() first, otherwise it would crash
// ESP8266 does not need it, so we leave it

View file

@ -96,6 +96,9 @@ void Webserver_Init() {
webserver.on("/system/restart", HTTP_GET, WebPage_system_restart);
webserver.on("/system/restart", HTTP_POST, WebPage_system_restart);
webserver.on("/system/wipe", HTTP_GET, WebPage_system_wipe);
webserver.on("/system/wipe", HTTP_POST, WebPage_system_wipe);
requestLogger.setOutput(Serial);
// this activates the middleware
if(configSystem.httpLogSerial == true) {

View file

@ -75,7 +75,7 @@ void WebPage_system_restart(AsyncWebServerRequest *request) {
if(request->hasParam("confirmed", true)) {
Serial.println(":: [Webserver:system:restart] POST[confirmed]: is set, triggering restart");
// force a small delay to ensure client has received http payload
doRestart = true;
}
@ -138,3 +138,41 @@ void WebPage_system_update(AsyncWebServerRequest *request) {
}
/*
* Subpage restart
*/
String Proc_WebPage_system_wipe(const String& var) {
if(TestHeaderFooter(var)) {
return AddHeaderFooter(var);
} else if(var == "WIPE_MSG") {
return String(Page_system_wipe_HTML_WIPE_MSG);
} else {
return String();
}
}
String Proc_WebPage_system_wipe_POST(const String& var) {
if(var == "WIPE_MSG") {
return String(Page_system_wipe_HTML_WIPE_MSG_POST);
} else {
return Proc_WebPage_system_wipe(var);
}
}
void WebPage_system_wipe(AsyncWebServerRequest *request) {
if(request->method() == HTTP_POST) {
request->send_P(200, "text/html", Page_system_wipe_HTML, Proc_WebPage_system_wipe_POST);
if(request->hasParam("confirmed", true)) {
Serial.println(":: [Webserver:system:wipe] POST[confirmed]: is set, triggering wipe / factory reset");
LFS_Format();
Serial.println(":: [Webserver:system:wipe] triggering restart");
doRestart = true;
}
} else {
request->send_P(200, "text/html", Page_system_wipe_HTML, Proc_WebPage_system_wipe);
}
}

View file

@ -117,3 +117,27 @@ const char* Page_system_restart_HTML_RESTART_MSG PROGMEM = R"(Do you want to res
</form>)";
const char* Page_system_restart_HTML_RESTART_MSG_POST PROGMEM = R"(Restarting...)";
/*
* Subpage wipe
*/
const char* Page_system_wipe_HTML PROGMEM = R"(%HEADER%
<h1>&#x1F4A3; Factory reset</h1>
<div class='warnmsg'>
%WIPE_MSG%
</div>
%FOOTER%)";
const char* Page_system_wipe_HTML_WIPE_MSG PROGMEM = R"(All settings will be removed!!<br><br>
Please confirm wiping LittleFS
<form action='/system/wipe' method='post'><br>
Please confirm: <input type='checkbox' id='confirmed' name='confirmed' required /><br>
<input type='submit' value='Confirm wiping' />
</form>)";
const char* Page_system_wipe_HTML_WIPE_MSG_POST PROGMEM = R"(Restarting...)";