From 365061df29caafce1c06407535c33d3882a82ec3 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Thu, 12 Jan 2023 20:17:37 +0100 Subject: [PATCH] Some changes after testing --- lib/SvelteUi/app/src/lib/StatusPage.svelte | 2 +- lib/SvelteUi/include/AmsWebServer.h | 5 ++ lib/SvelteUi/json/firmware.html | 7 ++- lib/SvelteUi/src/AmsWebServer.cpp | 54 ++++++++++++++++++++-- 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/lib/SvelteUi/app/src/lib/StatusPage.svelte b/lib/SvelteUi/app/src/lib/StatusPage.svelte index dda8bd3a..3b8344a1 100644 --- a/lib/SvelteUi/app/src/lib/StatusPage.svelte +++ b/lib/SvelteUi/app/src/lib/StatusPage.svelte @@ -108,7 +108,7 @@ Gateway: {sysinfo.net.gw}
- DNS: {sysinfo.net.dns1} {#if sysinfo.net.dns2 != '0.0.0.0'}/ {sysinfo.net.dns2}{/if} + DNS: {sysinfo.net.dns1} {#if sysinfo.net.dns2 && sysinfo.net.dns2 != '0.0.0.0'}/ {sysinfo.net.dns2}{/if}
{/if} diff --git a/lib/SvelteUi/include/AmsWebServer.h b/lib/SvelteUi/include/AmsWebServer.h index b5714da5..9955baab 100644 --- a/lib/SvelteUi/include/AmsWebServer.h +++ b/lib/SvelteUi/include/AmsWebServer.h @@ -61,6 +61,11 @@ private: bool performUpgrade = false; bool rebootForUpgrade = false; String priceRegion = ""; + #if defined(AMS2MQTT_FIRMWARE_URL) + String customFirmwareUrl = AMS2MQTT_FIRMWARE_URL; + #else + String customFirmwareUrl; + #endif static const uint16_t BufferSize = 2048; char* buf; diff --git a/lib/SvelteUi/json/firmware.html b/lib/SvelteUi/json/firmware.html index da27f421..a6faa73f 100644 --- a/lib/SvelteUi/json/firmware.html +++ b/lib/SvelteUi/json/firmware.html @@ -1,6 +1,9 @@
- - + File:
+ or
+ URL:
+
+
\ No newline at end of file diff --git a/lib/SvelteUi/src/AmsWebServer.cpp b/lib/SvelteUi/src/AmsWebServer.cpp index 7c2d0d98..4abe05da 100644 --- a/lib/SvelteUi/src/AmsWebServer.cpp +++ b/lib/SvelteUi/src/AmsWebServer.cpp @@ -1429,7 +1429,6 @@ void AmsWebServer::upgrade() { server.handleClient(); delay(250); - String customFirmwareUrl = ""; if(server.hasArg(F("url"))) { customFirmwareUrl = server.arg(F("url")); } @@ -1493,8 +1492,55 @@ void AmsWebServer::firmwarePost() { if(debugger->isActive(RemoteDebug::DEBUG)) debugger->printf(PSTR("Handling firmware post...")); if(!checkSecurity(1)) return; + + if(rebootForUpgrade) { + server.send(200); + } else { + if(server.hasArg(F("url"))) { + String url = server.arg(F("url")); + if(!url.isEmpty() && (url.startsWith(F("http://")) || url.startsWith(F("https://")))) { + if(debugger->isActive(RemoteDebug::DEBUG)) debugger->printf(PSTR("Custom firmware URL was provided")); - server.send(200); + WiFiClient client; + #if defined(ESP8266) + String chipType = F("esp8266"); + #elif defined(CONFIG_IDF_TARGET_ESP32S2) + String chipType = F("esp32s2"); + #elif defined(ESP32) + #if defined(CONFIG_FREERTOS_UNICORE) + String chipType = F("esp32solo"); + #else + String chipType = F("esp32"); + #endif + #endif + + #if defined(ESP8266) + ESPhttpUpdate.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS); + t_httpUpdate_return ret = ESPhttpUpdate.update(client, url, VERSION); + #elif defined(ESP32) + HTTPUpdate httpUpdate; + httpUpdate.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS); + HTTPUpdateResult ret = httpUpdate.update(client, url, String(VERSION) + "-" + chipType); + #endif + + switch(ret) { + case HTTP_UPDATE_FAILED: + debugger->printf(PSTR("Update failed")); + break; + case HTTP_UPDATE_NO_UPDATES: + debugger->printf(PSTR("No Update")); + break; + case HTTP_UPDATE_OK: + debugger->printf(PSTR("Update OK")); + break; + } + server.send(200, MIME_PLAIN, "OK"); + return; + } + } + server.sendHeader(HEADER_LOCATION,F("/firmware")); + server.send(303); + } } @@ -1503,7 +1549,9 @@ void AmsWebServer::firmwareUpload() { return; HTTPUpload& upload = server.upload(); - if(upload.status == UPLOAD_FILE_START) { + if(upload.totalSize == 0) { + return; + } else if(upload.status == UPLOAD_FILE_START) { String filename = upload.filename; if(!filename.endsWith(".bin")) { server.send(500, MIME_PLAIN, "500: couldn't create file");