From 6952db02983b553945e38e68465f6a1acff6e69d Mon Sep 17 00:00:00 2001 From: CaCO3 Date: Mon, 24 Feb 2025 23:25:13 +0100 Subject: [PATCH] swap HTML folders after extracting --- .../jomjol_fileserver_ota/server_ota.cpp | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/code/components/jomjol_fileserver_ota/server_ota.cpp b/code/components/jomjol_fileserver_ota/server_ota.cpp index ec6835a6..263dc1aa 100644 --- a/code/components/jomjol_fileserver_ota/server_ota.cpp +++ b/code/components/jomjol_fileserver_ota/server_ota.cpp @@ -76,21 +76,26 @@ void task_do_Update_ZIP(void *pvParameter) LogFile.WriteToFile(ESP_LOG_INFO, TAG, "File: " + _file_name_update + " Filetype: " + filetype); - if (filetype == "ZIP") { - std::string in, out, out2, outbin, zw, retfirmware; + std::string in, outHtml, outHtmlTmp, outHtmlOld, outbin, zw, retfirmware; - out = "/sdcard/html"; - out2 = "/sdcard/html2"; + outHtml = "/sdcard/html"; + outHtmlTmp = "/sdcard/html-temp"; + outHtmlOld = "/sdcard/html-old"; outbin = "/sdcard/firmware"; - delete_all_in_directory(out2); - ::rename(out.c_str(), out2.c_str()); - - retfirmware = unzip_new(_file_name_update, out+"/", outbin+"/", "/sdcard/", initial_setup); + /* Extract the ZIP file. The content of the html folder gets extracted to the temporar folder html-temp. */ + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Extracting ZIP file '" + _file_name_update + "'..."); + retfirmware = unzip_new(_file_name_update, outHtmlTmp+"/", outbin+"/", "/sdcard/", initial_setup); LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Files unzipped."); + /* ZIP file got extracted, replace the old html folder with the new one */ + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Swapping html folder..."); + ::rename(outHtml.c_str(), outHtmlOld.c_str()); + ::rename(outHtmlTmp.c_str(), outHtml.c_str()); + delete_all_in_directory(outHtmlOld); + if (retfirmware.length() > 0) { LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Found firmware.bin");