diff --git a/README.md b/README.md index 5b4a91b..1cfb0a8 100644 --- a/README.md +++ b/README.md @@ -42,13 +42,10 @@ It will provide a webpage for updating the firmware/filesystem of `ESP8266` or ` ### Install This Library is available in `Arduino Library Repository` and `PIO` and you can install it from: -- Arduino IDE Library Manager - -Arduino library manager -- PlatformIO Libraries - -pltformio library +| Arduino IDE Library Manager | PlatformIO Libraries | +|:---:|:---:| +|Arduino library manager|pltformio library| `ipdotsetaf/ESPAsyncHTTPUpdateServer@^2.0.0` ### Setup @@ -82,42 +79,35 @@ _updateServer.setup(&_server, "/customroute", "username", "password"); ### Styling and Customizing OTA Page - - - - - - - - - - - - - - - - - - - - - -
OTA ModeStylizedMinimal(default)
DefaultStylized OTA PageMinimal OTA Page
Firmware OnlyStylized OTA Firmware Only PageMinimal OTA Firmware Only Page
Filesystem OnlyStylized OTA Filesystem OnlyPageMinimal OTA Filesystem Only Page
+| Stylized | Minimal | +|:---:|:---:| +|Stylized OTA Page | Minimal OTA Page | > [!IMPORTANT] > By default styling is disabled to save ~350 bytes of flash memory. > > You can enable the styling by adding the `-DESPASYNCHTTPUPDATESERVER_PRETTY` Build Flag to your environment. + +### Customizing OTA Page + +> [!IMPORTANT] +> Adding the `-DESPASYNCHTTPUPDATESERVER_MODE` Build Flag to choose different update mode. choose the right value based on your needs: > -> Adding the `-DESPASYNCHTTPUPDATESERVER_MODE` Build Flag to choose different update mode. this flag has three values: -> -> `-DESPASYNCHTTPUPDATESERVER_MODE=0` firmware and filesystem, which is the default. -> -> `-DESPASYNCHTTPUPDATESERVER_MODE=1` update firmware only. -> -> `-DESPASYNCHTTPUPDATESERVER_MODE=2` update filesystem only. +> | Update mode | value | +> |:---:|:---:| +> |Firmaware and FileSystem|0| +> |Firmaware only|1| +> |FileSystem only|2| + +#### Modifying Htmls + +in case you liked to modify the html of any of the pages, you need to run the `scripts/codeGenerator.py` afterwards so html contents get processed and placed in the source. +Instructions: +1. Make sure you have python installed +2. In your python environment run the following +3. `pip install -r requirements.txt` +4. `python codeGenerator.py` ### Selecting FileSystem > [!IMPORTANT] diff --git a/image-1.png b/image-1.png deleted file mode 100644 index 9b0f848..0000000 Binary files a/image-1.png and /dev/null differ diff --git a/image-4_n_filesystem.png b/image-4_n_filesystem.png deleted file mode 100644 index fc06f39..0000000 Binary files a/image-4_n_filesystem.png and /dev/null differ diff --git a/image-4_n_firmware.png b/image-4_n_firmware.png deleted file mode 100644 index 35861aa..0000000 Binary files a/image-4_n_firmware.png and /dev/null differ diff --git a/image-4_s_filesystem.png b/image-4_s_filesystem.png deleted file mode 100644 index b2a4836..0000000 Binary files a/image-4_s_filesystem.png and /dev/null differ diff --git a/image-4_s_firmware.png b/image-4_s_firmware.png deleted file mode 100644 index b7f6ebb..0000000 Binary files a/image-4_s_firmware.png and /dev/null differ diff --git a/image.png b/image.png deleted file mode 100644 index efaf281..0000000 Binary files a/image.png and /dev/null differ diff --git a/previews/arduino.png b/previews/arduino.png new file mode 100644 index 0000000..e3d41eb Binary files /dev/null and b/previews/arduino.png differ diff --git a/image-3.png b/previews/minimal.png similarity index 100% rename from image-3.png rename to previews/minimal.png diff --git a/previews/pio.png b/previews/pio.png new file mode 100644 index 0000000..ac234c9 Binary files /dev/null and b/previews/pio.png differ diff --git a/image-2.png b/previews/stylized.png similarity index 100% rename from image-2.png rename to previews/stylized.png diff --git a/scripts/codeGenerator.py b/scripts/codeGenerator.py new file mode 100644 index 0000000..bf55b45 --- /dev/null +++ b/scripts/codeGenerator.py @@ -0,0 +1,83 @@ +import re +import gzip +import htmlmin +import csscompressor + +def minify_html(content): + """Minifies HTML and embedded CSS within " + + # Apply CSS minification to ", minify_css_in_style_tags, content, flags=re.DOTALL) + + # Minify the entire HTML + return htmlmin.minify(content, remove_empty_space=True, remove_all_empty_space=True) + +def gzip_compress(content): + """Gzips the given content.""" + return gzip.compress(content.encode('utf-8')) + +def convert_to_decimal(byte_data): + """Converts bytes to a comma-separated decimal list.""" + return ",".join(str(b) for b in byte_data) + +def process_file(file_path): + """Processes input HTML files and returns minified, gzipped, and decimal-converted data.""" + with open(file_path, "r", encoding="utf-8") as f: + content = f.read() + + minified = minify_html(content) + gzipped = gzip_compress(minified) + decimal_data = convert_to_decimal(gzipped) + + return decimal_data + +def update_cpp_file(destination_file): + """Updates the .cpp file with generated data between the start and end markers.""" + start_marker = "//generated code start" + end_marker = "//generated code end" + + with open(destination_file, "r", encoding="utf-8") as f: + cpp_content = f.read() + + pattern = re.compile(f"{start_marker}.*?{end_marker}", re.DOTALL) + if not pattern.search(cpp_content): + raise ValueError("Start and End markers not found in the destination file.") + + generated_code = f"""{start_marker} +#if ESPASYNCHTTPUPDATESERVER_MODE == 0 + #ifdef ESPASYNCHTTPUPDATESERVER_PRETTY + static const uint8_t serverIndex[] PROGMEM = {{ {process_file("../www/stylized.html")} }}; + #else + static const uint8_t serverIndex[] PROGMEM = {{ {process_file("../www/minimal.html")} }}; + #endif +#elif ESPASYNCHTTPUPDATESERVER_MODE == 1 + #ifdef ESPASYNCHTTPUPDATESERVER_PRETTY + static const uint8_t serverIndex[] PROGMEM = {{ {process_file("../www/stylized-flash.html")} }}; + #else + static const uint8_t serverIndex[] PROGMEM = {{ {process_file("../www/minimal-flash.html")} }}; + #endif +#elif ESPASYNCHTTPUPDATESERVER_MODE == 2 + #ifdef ESPASYNCHTTPUPDATESERVER_PRETTY + static const uint8_t serverIndex[] PROGMEM = {{ {process_file("../www/stylized-fs.html")} }}; + #else + static const uint8_t serverIndex[] PROGMEM = {{ {process_file("../www/minimal-fs.html")} }}; + #endif +#endif +{end_marker}""" + + updated_content = pattern.sub(generated_code, cpp_content) + + with open(destination_file, "w", encoding="utf-8") as f: + f.write(updated_content) + +if __name__ == "__main__": + destination_file = "../src/ESPAsyncHTTPUpdateServer.cpp" # Change to your actual .cpp file + + update_cpp_file(destination_file) + + print(f"Updated {destination_file} with generated code.") diff --git a/scripts/requirements.txt b/scripts/requirements.txt new file mode 100644 index 0000000..2314dc6 --- /dev/null +++ b/scripts/requirements.txt @@ -0,0 +1,2 @@ +htmlmin +csscompressor \ No newline at end of file diff --git a/src/ESPAsyncHTTPUpdateServer.cpp b/src/ESPAsyncHTTPUpdateServer.cpp index 4d9bbbf..e4aaaae 100644 --- a/src/ESPAsyncHTTPUpdateServer.cpp +++ b/src/ESPAsyncHTTPUpdateServer.cpp @@ -30,43 +30,27 @@ #define ESPASYNCHTTPUPDATESERVER_MODE 0 #endif -//https://kangax.github.io/html-minifier/ +//generated code start #if ESPASYNCHTTPUPDATESERVER_MODE == 0 #ifdef ESPASYNCHTTPUPDATESERVER_PRETTY - //https://gchq.github.io/CyberChef/#recipe=Gzip('Dynamic%20Huffman%20Coding','','',false)To_Decimal('Comma',false)&input=PCFkb2N0eXBlaHRtbD48aHRtbCBsYW5nPWVuPjxtZXRhIGNoYXJzZXQ9dXRmLTg%2BPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPXZpZXdwb3J0PjxzdHlsZT4qe2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtib3JkZXItcmFkaXVzOjEwcHh9aDJ7bWFyZ2luLXRvcDowfWgxe2NvbG9yOiNlZWFlY2E7Zm9udC1zaXplOjgwcHh9Ym9keXtiYWNrZ3JvdW5kOiMyMjI7Z2FwOjMwcHg7bWFyZ2luOjA7aGVpZ2h0OjEwMHZofWZvcm17Y29sb3I6IzZiMzU0ZjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgyNzBkZWcsI2VlYWVjYSAwLCM5NGJiZTkgMTAwJSk7cGFkZGluZzozMHB4fWlucHV0e2JvcmRlcjoycHggc29saWQgIzZiMzU0Zjtib3gtc2hhZG93OjAgMTBweCAxMHB4IDJweCAjMDAwMztoZWlnaHQ6MzVweH1pbnB1dDo6ZmlsZS1zZWxlY3Rvci1idXR0b24saW5wdXRbdHlwZT1zdWJtaXRde2JhY2tncm91bmQ6IzZiMzU0Zjtjb2xvcjojZmZmO2hlaWdodDoxMDAlO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtib3JkZXI6bm9uZX0uY3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfTwvc3R5bGU%2BPGJvZHkgY2xhc3M9Yz48aDE%2BKOKMkOKWoF/ilqApIE9UQTwvaDE%2BPGZvcm0gYWN0aW9uPSI/bmFtZT1maXJtd2FyZSJjbGFzcz1jIGVuY3R5cGU9bXVsdGlwYXJ0L2Zvcm0tZGF0YSBtZXRob2Q9UE9TVD48aDI%2BRmlybXdhcmU8L2gyPjxkaXY%2BPGlucHV0IHR5cGU9ZmlsZSBhY2NlcHQ9LmJpbiwuYmluLmd6IG5hbWU9ZmlybXdhcmU%2BIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVXBkYXRlIEZpcm13YXJlIj48L2Rpdj48L2Zvcm0%2BPGZvcm0gYWN0aW9uPSI/bmFtZT1maWxlc3lzdGVtImNsYXNzPWMgZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPjxoMj5GaWxlU3lzdGVtPC9oMj48ZGl2PjxpbnB1dCB0eXBlPWZpbGUgYWNjZXB0PS5iaW4sLmJpbi5neiBuYW1lPWZpbGVzeXN0ZW0%2BIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVXBkYXRlIEZpbGVTeXN0ZW0iPjwvZGl2PjwvZm9ybT4&oeol=FF - static const uint8_t serverIndex[] PROGMEM = - {31,139,8,0,54,195,148,102,0,255,157,146,77,110,219,60,16,134,175,194,218,8,144,20,102,44,203,73,155,80,63,31,186,233,54,5,146,174,138,162,160,200,145,52,45,69,10,36,229,159,24,190,65,23,93,117,253,157,45,39,9,37,203,69,82,32,64,145,133,6,16,201,121,159,121,103,38,125,35,141,240,219,22,106,223,168,60,237,35,81,92,87,25,232,60,109,192,115,34,106,110,29,248,172,243,37,189,58,158,25,237,65,251,108,178,70,233,235,76,194,10,5,208,225,103,134,26,61,114,69,157,224,10,178,197,68,243,6,178,21,194,186,53,214,231,169,243,91,5,249,219,93,25,36,104,201,27,84,91,214,24,109,92,203,5,36,133,177,18,44,181,92,98,231,216,34,106,55,251,58,222,53,220,86,168,169,55,45,139,246,245,98,39,140,50,150,77,1,56,8,158,12,74,14,239,129,93,245,239,11,35,183,187,130,139,31,149,53,157,150,108,26,199,113,82,241,150,45,195,109,114,144,98,81,82,3,86,181,15,136,104,85,239,75,99,155,163,234,187,98,121,121,81,38,79,20,20,106,224,150,86,125,85,193,245,105,252,62,146,80,205,70,62,137,102,211,235,139,162,128,107,18,196,78,206,146,150,75,137,186,26,120,123,212,109,231,119,7,91,44,110,55,196,25,133,146,252,161,152,13,117,53,151,102,205,162,144,30,238,135,208,63,156,70,81,180,60,150,185,188,60,106,49,86,162,2,234,64,129,240,198,210,162,243,222,232,208,245,112,247,165,31,100,230,186,162,65,255,245,89,15,70,220,104,177,44,203,39,254,79,14,29,124,97,22,76,27,13,251,115,177,147,232,90,197,183,172,84,176,73,250,64,37,218,80,3,26,205,130,110,215,232,228,123,231,60,150,91,58,174,7,19,33,128,77,184,194,74,83,244,208,184,241,104,159,206,15,123,144,246,211,34,66,113,231,50,17,214,111,145,159,62,252,252,245,240,251,255,111,225,59,35,55,119,31,210,121,56,76,251,1,17,62,192,178,201,127,195,74,149,104,155,53,183,48,25,179,9,232,97,145,179,166,83,30,91,110,253,188,207,162,146,135,133,13,91,91,27,153,125,186,185,189,11,148,56,255,56,38,7,245,56,79,37,174,242,116,232,32,25,20,250,14,7,154,128,214,103,231,5,234,89,31,206,171,123,242,12,156,147,167,57,135,174,147,21,87,29,100,147,207,109,192,2,57,98,38,121,58,31,32,67,73,47,216,81,224,182,46,52,233,149,134,20,220,14,233,175,179,116,132,255,147,169,35,234,47,91,143,204,254,125,32,76,4,0,0}; + static const uint8_t serverIndex[] PROGMEM = { 31,139,8,0,252,60,224,103,2,255,157,146,205,110,212,48,16,199,95,197,236,170,82,139,214,221,108,182,133,214,249,64,92,184,22,169,229,132,16,114,236,73,50,224,216,145,237,236,71,87,251,6,28,56,113,230,217,250,36,56,217,13,106,145,64,168,135,140,20,219,243,255,205,127,102,210,23,210,8,191,109,161,246,141,202,211,62,18,197,117,149,129,206,211,6,60,39,162,230,214,129,207,58,95,210,171,241,204,104,15,218,103,147,53,74,95,103,18,86,40,128,14,63,51,212,232,145,43,234,4,87,144,45,38,68,243,6,178,21,194,186,53,214,231,169,243,91,5,249,203,93,25,52,104,201,27,84,91,214,24,109,92,203,5,36,133,177,18,44,181,92,98,231,216,34,106,55,251,58,222,53,220,86,168,169,55,45,139,246,245,98,39,140,50,150,77,1,56,8,158,12,74,14,239,129,93,245,239,11,35,183,187,130,139,175,149,53,157,150,108,26,199,113,82,241,150,45,195,109,114,144,98,81,82,3,86,181,15,136,104,85,239,75,99,155,81,245,85,177,188,188,40,147,71,10,10,53,112,75,171,190,170,96,251,52,126,29,73,168,102,71,62,137,102,211,235,139,162,128,107,18,196,78,206,146,150,75,137,186,26,120,123,212,109,231,119,7,91,44,110,55,196,25,133,146,252,166,152,13,117,53,151,102,205,34,210,219,61,132,254,225,52,138,162,229,88,230,242,114,212,98,172,68,5,212,129,2,225,141,165,69,231,189,209,179,225,238,99,63,201,204,117,69,131,254,211,147,30,28,113,71,139,101,89,62,242,127,146,252,107,22,161,227,231,98,39,209,181,138,111,89,169,96,147,244,129,74,180,161,0,52,154,5,209,174,209,201,151,206,121,44,183,244,184,28,76,132,0,54,225,10,43,77,209,67,227,142,71,251,116,126,88,130,180,31,21,17,138,59,151,137,176,124,139,252,244,225,219,247,135,31,63,63,135,239,140,220,220,189,77,231,225,48,237,167,67,248,0,203,38,111,134,125,42,209,54,107,110,97,50,166,19,208,195,30,103,77,167,60,182,220,250,121,159,70,37,15,251,26,150,182,54,50,123,127,115,123,23,48,113,254,238,152,29,228,227,60,149,184,202,211,161,127,100,80,232,251,27,112,2,90,159,157,23,168,103,125,56,175,238,201,19,242,147,148,67,203,201,138,171,14,178,201,135,54,80,129,140,148,73,158,206,7,198,80,209,95,236,40,112,91,23,154,244,92,67,10,110,135,252,231,89,26,233,255,99,106,36,253,97,235,23,4,247,158,198,74,4,0,0 }; #else - //https://gchq.github.io/CyberChef/#recipe=Gzip('Dynamic%20Huffman%20Coding','','',false)To_Decimal('Comma',false)&input=PCFkb2N0eXBlaHRtbD48aHRtbCBsYW5nPWVuPjxtZXRhIGNoYXJzZXQ9dXRmLTg%2BPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPXZpZXdwb3J0Pjxmb3JtIGFjdGlvbj0iP25hbWU9ZmlybXdhcmUiZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPkZpcm13YXJlOjxicj48aW5wdXQgdHlwZT1maWxlIGFjY2VwdD0uYmluLC5iaW4uZ3ogbmFtZT1maXJtd2FyZT4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJVcGRhdGUgRmlybXdhcmUiPjwvZm9ybT48Zm9ybSBhY3Rpb249Ij9uYW1lPWZpbGVzeXN0ZW0iZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPkZpbGVTeXN0ZW06PGJyPjxpbnB1dCB0eXBlPWZpbGUgYWNjZXB0PS5iaW4sLmJpbi5neiBuYW1lPWZpbGVzeXN0ZW0%2BIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVXBkYXRlIEZpbGVTeXN0ZW0iPjwvZm9ybT4&oeol=FF - static const uint8_t serverIndex[] PROGMEM = - {31,139,8,0,47,63,148,102,0,255,149,142,77,75,196,48,16,64,255,74,204,121,187,226,77,36,19,111,94,21,86,127,192,52,157,110,7,242,69,58,109,89,127,253,182,193,138,30,4,247,50,144,73,94,222,51,119,93,114,114,201,52,72,240,214,108,83,121,140,103,160,104,77,32,65,229,6,44,35,9,76,210,55,143,251,46,69,161,40,160,23,238,100,128,142,102,118,212,212,195,129,35,11,163,111,70,135,158,224,65,71,12,4,51,211,146,83,17,107,250,84,130,66,39,156,34,232,231,122,217,115,9,11,22,210,20,107,10,132,201,11,103,44,114,191,189,110,58,92,149,171,119,72,29,188,189,158,222,237,203,23,240,100,218,98,13,199,60,137,170,96,207,158,214,207,29,101,129,99,203,241,176,141,227,249,83,253,242,88,245,147,25,167,54,176,168,25,253,68,160,63,242,106,35,181,27,180,53,181,225,143,110,79,227,101,20,10,55,148,123,58,85,228,230,246,221,245,175,250,221,242,221,127,5,2,22,24,226,232,1,0,0}; + static const uint8_t serverIndex[] PROGMEM = { 31,139,8,0,252,60,224,103,2,255,149,142,203,106,196,48,12,69,127,197,245,122,50,165,187,82,44,119,215,237,20,166,253,0,197,81,38,2,191,112,148,132,233,215,55,49,77,97,22,133,206,70,160,199,213,57,230,161,75,78,174,153,6,9,222,154,173,42,143,241,2,20,173,9,36,168,220,128,101,36,129,73,250,230,121,159,165,40,20,5,244,194,157,12,208,209,204,142,154,218,28,56,178,48,250,102,116,232,9,158,180,138,24,8,102,166,37,167,34,214,244,169,4,133,78,56,69,208,175,117,217,115,9,11,22,210,138,98,149,129,48,121,225,140,69,30,183,243,166,195,21,186,146,135,212,193,251,233,252,97,223,126,18,47,166,45,214,112,204,147,168,26,236,217,211,250,221,81,22,56,182,28,15,91,57,94,190,212,13,232,38,50,78,109,96,81,51,250,137,64,127,230,21,70,106,7,104,107,170,194,31,222,158,198,235,40,20,238,49,247,116,174,153,187,221,119,216,127,236,119,200,175,255,55,187,114,189,153,233,1,0,0 }; #endif -#endif - -#if ESPASYNCHTTPUPDATESERVER_MODE == 1 +#elif ESPASYNCHTTPUPDATESERVER_MODE == 1 #ifdef ESPASYNCHTTPUPDATESERVER_PRETTY - //https://gchq.github.io/CyberChef/#recipe=Gzip('Dynamic%20Huffman%20Coding','','',false)To_Decimal('Comma',false)&input=PCFkb2N0eXBlaHRtbD48aHRtbCBsYW5nPWVuPjxtZXRhIGNoYXJzZXQ9dXRmLTg%2BPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPXZpZXdwb3J0PjxzdHlsZT4qe2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtib3JkZXItcmFkaXVzOjEwcHh9aDJ7bWFyZ2luLXRvcDowfWgxe2NvbG9yOiNlZWFlY2E7Zm9udC1zaXplOjgwcHh9Ym9keXtiYWNrZ3JvdW5kOiMyMjI7Z2FwOjMwcHg7bWFyZ2luOjA7aGVpZ2h0OjEwMHZofWZvcm17Y29sb3I6IzZiMzU0ZjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgyNzBkZWcsI2VlYWVjYSAwLCM5NGJiZTkgMTAwJSk7cGFkZGluZzozMHB4fWlucHV0e2JvcmRlcjoycHggc29saWQgIzZiMzU0Zjtib3gtc2hhZG93OjAgMTBweCAxMHB4IDJweCAjMDAwMztoZWlnaHQ6MzVweH1pbnB1dDo6ZmlsZS1zZWxlY3Rvci1idXR0b24saW5wdXRbdHlwZT1zdWJtaXRde2JhY2tncm91bmQ6IzZiMzU0Zjtjb2xvcjojZmZmO2hlaWdodDoxMDAlO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtib3JkZXI6bm9uZX0uY3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfTwvc3R5bGU%2BPGJvZHkgY2xhc3M9Yz48aDE%2BKOKMkOKWoF/ilqApIE9UQTwvaDE%2BPGZvcm0gYWN0aW9uPSI/bmFtZT1maXJtd2FyZSJjbGFzcz1jIGVuY3R5cGU9bXVsdGlwYXJ0L2Zvcm0tZGF0YSBtZXRob2Q9UE9TVD48ZGl2PjxpbnB1dCB0eXBlPWZpbGUgYWNjZXB0PS5iaW4sLmJpbi5neiBuYW1lPWZpcm13YXJlPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlVwZGF0ZSBGaXJtd2FyZSI%2BPC9kaXY%2BPC9mb3JtPg&oeol=FF - static const uint8_t serverIndex[] PROGMEM = - {31,139,8,0,245,7,222,103,0,255,117,82,205,110,219,56,16,126,21,214,70,128,164,48,99,217,78,218,132,18,85,244,210,107,22,104,122,90,44,10,138,28,73,211,165,72,130,164,252,19,195,111,176,135,158,122,238,179,229,73,66,201,246,34,57,244,160,1,52,195,249,190,153,111,190,226,157,178,50,238,28,180,177,211,101,49,68,162,133,105,56,152,178,232,32,10,34,91,225,3,68,222,199,154,222,157,115,214,68,48,145,79,54,168,98,203,21,172,81,2,29,127,102,104,48,162,208,52,72,161,129,47,38,70,116,192,215,8,27,103,125,44,139,16,119,26,202,247,251,58,65,208,90,116,168,119,172,179,198,6,39,36,228,149,245,10,60,245,66,97,31,216,34,115,219,67,187,220,119,194,55,104,104,180,142,101,135,118,177,151,86,91,207,166,0,2,164,200,71,164,128,79,192,238,134,247,149,85,187,125,37,228,191,141,183,189,81,108,186,92,46,243,70,56,182,74,213,252,8,197,178,188,5,108,218,152,40,178,117,123,168,173,239,206,168,31,170,213,237,77,157,191,66,208,104,64,120,218,12,83,165,173,47,151,31,51,5,205,236,196,79,178,217,244,254,166,170,224,158,36,176,139,171,220,9,165,208,52,35,223,1,141,235,227,254,184,22,91,186,45,9,86,163,34,255,179,216,45,13,173,80,118,195,178,212,158,234,99,24,30,78,179,44,91,157,199,92,221,158,177,24,171,81,3,13,160,65,70,235,105,213,199,104,77,82,61,213,254,30,14,201,67,95,117,24,255,121,163,193,137,238,180,98,93,215,175,246,191,56,42,248,135,91,48,99,13,28,174,229,94,97,112,90,236,88,173,97,155,15,129,42,244,105,6,180,134,37,220,190,51,249,143,62,68,172,119,244,100,15,38,83,0,159,11,141,141,161,24,161,11,167,212,161,152,31,125,80,12,215,34,82,139,16,184,76,246,91,148,151,207,255,253,124,254,245,251,123,250,174,200,195,227,231,98,158,146,197,112,32,34,70,50,62,249,52,90,170,70,223,109,132,135,201,169,155,128,25,141,204,187,94,71,116,194,199,249,208,69,149,72,134,77,174,109,173,226,127,61,124,125,44,11,133,235,178,24,5,35,99,195,32,104,2,151,224,34,191,174,208,204,134,112,221,60,145,55,60,37,121,221,115,20,153,172,133,238,129,79,190,185,196,2,228,203,121,164,178,152,143,36,227,4,229,11,21,94,161,135,100,3,0,0}; + static const uint8_t serverIndex[] PROGMEM = { 31,139,8,0,252,60,224,103,2,255,125,146,75,110,219,48,16,134,175,194,218,8,144,20,102,44,203,73,155,80,143,162,155,110,83,160,233,170,40,10,138,28,73,211,82,36,65,82,126,196,240,13,186,232,170,235,158,45,39,41,37,219,69,188,233,66,3,136,228,252,223,60,254,252,149,52,34,108,45,180,161,83,101,62,68,162,184,110,10,208,101,222,65,224,68,180,220,121,8,69,31,106,122,119,58,51,58,128,14,197,100,141,50,180,133,132,21,10,160,227,207,12,53,6,228,138,122,193,21,20,139,9,209,188,131,98,133,176,182,198,133,50,247,97,171,160,124,189,171,163,6,173,121,135,106,203,58,163,141,183,92,64,86,25,39,193,81,199,37,246,158,45,18,187,217,183,233,174,227,174,65,77,131,177,44,217,183,139,157,48,202,56,54,5,224,32,120,54,42,121,124,2,118,55,188,175,140,220,238,42,46,126,52,206,244,90,178,105,154,166,89,195,45,91,198,219,236,32,197,146,172,5,108,218,16,17,201,170,221,215,198,117,39,213,55,213,242,246,166,206,94,40,40,212,192,29,109,134,170,98,219,151,233,219,68,66,51,59,242,73,50,155,222,223,84,21,220,147,40,118,113,149,89,46,37,234,102,228,237,81,219,62,236,14,109,177,212,110,136,55,10,37,249,71,49,27,234,91,46,205,154,37,100,104,247,16,134,135,211,36,73,150,167,50,151,183,39,45,198,106,84,64,61,40,16,193,56,90,245,33,24,61,27,239,190,12,155,44,124,95,117,24,190,158,205,224,136,59,182,88,215,245,139,254,47,178,255,237,34,78,252,90,236,36,122,171,248,150,213,10,54,217,16,168,68,23,11,64,163,89,20,237,59,157,125,239,125,192,122,75,143,230,96,34,6,112,25,87,216,104,138,1,58,127,60,218,231,243,131,9,242,97,85,68,40,238,125,33,162,249,22,229,229,243,207,95,207,191,255,124,139,223,21,121,120,124,159,207,227,97,62,108,135,240,17,86,76,222,141,126,170,209,117,107,238,96,114,74,39,160,71,31,23,93,175,2,90,238,194,124,72,163,146,71,191,70,211,182,70,22,31,31,62,61,70,76,90,126,56,102,71,249,180,204,37,174,202,124,156,31,25,21,134,249,70,156,0,27,138,235,10,245,108,8,215,205,19,57,35,159,165,28,70,78,86,92,245,80,76,62,219,72,5,114,162,76,202,124,62,50,198,138,202,191,77,16,113,93,115,3,0,0 }; #else - //https://gchq.github.io/CyberChef/#recipe=Gzip('Dynamic%20Huffman%20Coding','','',false)To_Decimal('Comma',false)&input=PCFkb2N0eXBlaHRtbD48aHRtbCBsYW5nPWVuPjxtZXRhIGNoYXJzZXQ9dXRmLTg%2BPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPXZpZXdwb3J0Pjxmb3JtIGFjdGlvbj0iP25hbWU9ZmlybXdhcmUiZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWZpbGUgYWNjZXB0PS5iaW4sLmJpbi5neiBuYW1lPWZpcm13YXJlPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVXBkYXRlIEZpcm13YXJlIj48L2Zvcm0%2B&oeol=FF - static const uint8_t serverIndex[] PROGMEM = - {31,139,8,0,7,8,222,103,0,255,85,142,177,110,195,48,12,68,127,69,245,28,167,232,214,65,84,183,174,45,208,246,3,24,137,142,9,72,148,32,83,54,154,175,143,45,32,67,150,3,72,30,223,157,125,9,217,235,127,161,89,83,116,246,80,19,81,174,64,226,108,34,69,227,103,172,11,41,52,157,198,247,199,46,139,146,40,12,27,7,157,33,208,202,158,198,62,156,88,88,25,227,184,120,140,4,111,131,96,34,88,153,182,146,171,58,59,229,154,12,122,229,44,48,124,244,227,196,53,109,88,105,32,233,85,32,181,168,92,176,234,235,225,30,3,238,145,123,238,156,3,124,127,253,252,58,203,82,154,154,238,157,56,210,206,243,84,20,206,23,150,211,33,231,235,205,60,161,159,94,150,118,73,172,102,197,216,8,134,191,178,243,201,124,62,74,56,219,83,221,29,72,103,234,133,26,1,0,0}; + static const uint8_t serverIndex[] PROGMEM = { 31,139,8,0,252,60,224,103,2,255,85,142,205,78,196,48,12,132,95,37,228,188,93,196,109,133,226,112,227,10,18,203,3,184,137,187,181,148,63,165,78,43,120,122,218,136,61,236,101,36,123,60,254,198,60,249,236,228,167,208,44,49,88,115,168,10,152,110,64,201,154,72,130,202,205,88,23,18,104,50,13,151,251,46,39,161,36,160,55,246,50,131,167,149,29,13,125,56,113,98,97,12,195,226,48,16,188,104,149,48,18,172,76,91,201,85,172,153,114,141,10,157,112,78,160,223,186,57,113,141,27,86,210,138,82,47,3,177,5,225,130,85,158,143,243,193,227,14,221,201,115,246,240,249,241,117,181,239,255,137,87,51,86,107,56,149,38,170,7,39,14,180,127,119,84,4,206,35,167,211,33,231,219,175,122,0,61,68,150,54,70,22,181,98,104,4,250,187,236,48,82,119,128,182,166,87,176,127,120,226,68,109,41,1,0,0 }; #endif -#endif - -#if ESPASYNCHTTPUPDATESERVER_MODE == 2 +#elif ESPASYNCHTTPUPDATESERVER_MODE == 2 #ifdef ESPASYNCHTTPUPDATESERVER_PRETTY - //https://gchq.github.io/CyberChef/#recipe=Gzip('Dynamic%20Huffman%20Coding','','',false)To_Decimal('Comma',false)&input=PCFkb2N0eXBlaHRtbD48aHRtbCBsYW5nPWVuPjxtZXRhIGNoYXJzZXQ9dXRmLTg%2BPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPXZpZXdwb3J0PjxzdHlsZT4qe2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtib3JkZXItcmFkaXVzOjEwcHh9aDJ7bWFyZ2luLXRvcDowfWgxe2NvbG9yOiNlZWFlY2E7Zm9udC1zaXplOjgwcHh9Ym9keXtiYWNrZ3JvdW5kOiMyMjI7Z2FwOjMwcHg7bWFyZ2luOjA7aGVpZ2h0OjEwMHZofWZvcm17Y29sb3I6IzZiMzU0ZjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgyNzBkZWcsI2VlYWVjYSAwLCM5NGJiZTkgMTAwJSk7cGFkZGluZzozMHB4fWlucHV0e2JvcmRlcjoycHggc29saWQgIzZiMzU0Zjtib3gtc2hhZG93OjAgMTBweCAxMHB4IDJweCAjMDAwMztoZWlnaHQ6MzVweH1pbnB1dDo6ZmlsZS1zZWxlY3Rvci1idXR0b24saW5wdXRbdHlwZT1zdWJtaXRde2JhY2tncm91bmQ6IzZiMzU0Zjtjb2xvcjojZmZmO2hlaWdodDoxMDAlO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtib3JkZXI6bm9uZX0uY3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfTwvc3R5bGU%2BPGJvZHkgY2xhc3M9Yz48aDE%2BKOKMkOKWoF/ilqApIE9UQTwvaDE%2BPGZvcm0gYWN0aW9uPSI/bmFtZT1maWxlc3lzdGVtImNsYXNzPWMgZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPjxkaXY%2BPGlucHV0IHR5cGU9ZmlsZSBhY2NlcHQ9LmJpbiwuYmluLmd6IG5hbWU9ZmlsZXN5c3RlbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlVwZGF0ZSBGaWxlU3lzdGVtIj48L2Rpdj48L2Zvcm0%2B&oeol=FF - static const uint8_t serverIndex[] PROGMEM = - {31,139,8,0,25,8,222,103,0,255,117,82,65,110,219,58,16,189,10,107,35,64,82,152,177,108,39,109,66,137,42,186,249,219,20,72,186,42,62,10,138,28,73,211,82,164,64,82,182,21,195,55,232,162,171,174,123,182,156,36,148,108,23,73,129,46,52,128,56,51,239,205,188,121,217,27,101,101,232,91,168,67,163,243,108,136,68,11,83,113,48,121,214,64,16,68,214,194,121,8,188,11,37,189,57,189,89,19,192,4,62,217,160,10,53,87,176,70,9,116,252,153,161,193,128,66,83,47,133,6,190,152,24,209,0,95,35,108,90,235,66,158,249,208,107,200,223,238,202,8,65,75,209,160,238,89,99,141,245,173,144,144,22,214,41,112,212,9,133,157,103,139,164,221,238,235,229,174,17,174,66,67,131,109,89,178,175,23,59,105,181,117,108,10,32,64,138,116,68,242,248,8,236,102,168,47,172,234,119,133,144,223,43,103,59,163,216,116,185,92,166,149,104,217,42,102,211,3,20,75,210,26,176,170,67,164,72,214,245,190,180,174,57,161,190,43,86,215,87,101,250,2,65,163,1,225,104,53,76,21,183,62,95,190,79,20,84,179,35,63,73,102,211,219,171,162,128,91,18,193,206,46,210,86,40,133,166,26,249,246,104,218,46,236,14,107,177,101,187,37,222,106,84,228,15,139,221,82,95,11,101,55,44,137,237,49,63,134,161,112,154,36,201,234,52,230,234,250,132,197,88,137,26,168,7,13,50,88,71,139,46,4,107,162,234,49,247,101,56,36,247,93,209,96,248,255,149,6,71,186,227,138,101,89,190,216,255,236,160,224,63,110,193,140,53,176,191,148,59,133,190,213,162,103,165,134,109,58,4,170,208,197,25,208,26,22,113,187,198,164,223,58,31,176,236,233,209,30,76,198,0,46,21,26,43,67,49,64,227,143,79,251,108,126,240,65,54,92,139,72,45,188,231,50,218,111,145,159,63,253,248,249,244,235,247,215,248,93,144,187,135,143,217,60,62,102,195,129,136,24,201,248,228,195,104,169,65,6,223,251,136,58,57,246,19,48,163,149,121,211,233,128,173,112,97,62,244,81,37,162,101,163,111,107,171,248,167,187,251,135,60,83,184,206,179,81,50,50,54,12,88,17,94,66,27,248,101,129,102,54,132,203,234,145,252,197,244,170,233,160,51,89,11,221,1,159,124,110,35,13,144,255,98,237,253,97,170,60,155,143,60,227,16,249,51,124,120,193,92,105,3,0,0}; + static const uint8_t serverIndex[] PROGMEM = { 31,139,8,0,252,60,224,103,2,255,125,146,203,110,19,49,20,134,95,197,36,170,212,162,56,153,76,90,104,61,23,196,134,109,43,181,172,16,66,30,251,204,140,193,99,91,182,39,201,52,202,27,176,96,197,154,103,235,147,96,79,18,104,89,176,152,35,141,237,243,127,231,242,231,175,184,102,126,48,208,250,78,150,121,140,72,82,213,20,160,202,188,3,79,17,107,169,117,224,139,222,215,248,250,116,166,149,7,229,139,201,70,112,223,22,28,214,130,1,30,127,102,66,9,47,168,196,142,81,9,197,114,130,20,237,160,88,11,216,24,109,125,153,59,63,72,40,95,239,234,160,129,107,218,9,57,144,78,43,237,12,101,144,85,218,114,176,216,82,46,122,71,150,137,217,238,219,116,215,81,219,8,133,189,54,36,217,183,203,29,211,82,91,50,5,160,192,104,54,42,57,241,8,228,58,190,175,52,31,118,21,101,223,26,171,123,197,201,52,77,211,172,161,134,172,194,109,118,144,34,73,214,130,104,90,31,16,201,186,221,215,218,118,39,213,55,213,234,234,178,206,158,41,72,161,128,90,220,196,170,66,219,231,233,219,132,67,51,59,242,81,50,155,222,92,86,21,220,160,32,118,118,145,25,202,185,80,205,200,219,11,101,122,191,59,180,69,82,179,69,78,75,193,209,31,138,222,98,215,82,174,55,36,65,177,221,67,136,15,167,73,146,172,78,101,174,174,78,90,132,212,66,2,118,32,129,121,109,113,213,123,175,213,108,188,251,20,55,89,184,190,234,132,255,252,98,6,71,220,177,197,186,174,159,245,127,150,253,111,23,97,226,115,182,227,194,25,73,7,82,75,216,102,49,96,46,108,40,64,104,69,130,104,223,169,236,107,239,188,168,7,124,52,7,97,33,128,205,168,20,141,194,194,67,231,142,71,251,124,113,48,65,30,87,133,152,164,206,21,44,152,111,89,158,63,125,255,241,244,243,215,151,240,93,160,219,135,247,249,34,28,230,113,59,136,142,176,98,242,110,244,83,156,129,27,92,80,157,156,4,16,168,209,201,69,215,75,47,12,181,126,17,19,49,167,193,177,193,182,173,230,197,221,237,253,67,0,165,229,135,144,127,63,230,7,68,90,230,92,172,203,124,156,33,26,53,162,126,64,50,48,190,152,87,66,205,98,152,55,143,232,31,250,139,164,195,224,209,154,202,30,138,201,71,19,200,128,254,146,38,101,190,24,57,99,93,229,111,61,86,236,22,123,3,0,0 }; #else - //https://gchq.github.io/CyberChef/#recipe=Gzip('Dynamic%20Huffman%20Coding','','',false)To_Decimal('Comma',false)&input=PCFkb2N0eXBlaHRtbD48aHRtbCBsYW5nPWVuPjxtZXRhIGNoYXJzZXQ9dXRmLTg%2BPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPXZpZXdwb3J0Pjxmb3JtIGFjdGlvbj0iP25hbWU9ZmlybXdhcmUiZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPkZpcm13YXJlOjxicj48aW5wdXQgdHlwZT1maWxlIGFjY2VwdD0uYmluLC5iaW4uZ3ogbmFtZT1maXJtd2FyZT4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJVcGRhdGUgRmlybXdhcmUiPjwvZm9ybT48Zm9ybSBhY3Rpb249Ij9uYW1lPWZpbGVzeXN0ZW0iZW5jdHlwZT1tdWx0aXBhcnQvZm9ybS1kYXRhIG1ldGhvZD1QT1NUPkZpbGVTeXN0ZW06PGJyPjxpbnB1dCB0eXBlPWZpbGUgYWNjZXB0PS5iaW4sLmJpbi5neiBuYW1lPWZpbGVzeXN0ZW0%2BPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJVcGRhdGUgRmlsZVN5c3RlbSI%2BPC9mb3JtPg&oeol=FF - static const uint8_t serverIndex[] PROGMEM = - {31,139,8,0,39,8,222,103,0,255,149,142,61,110,243,48,12,64,175,162,106,142,83,116,43,10,81,221,186,126,5,210,239,0,180,76,199,4,244,7,153,182,145,158,62,182,80,23,205,144,33,11,1,81,122,122,207,60,117,201,201,37,211,32,193,91,179,77,229,49,158,129,162,53,129,4,149,27,176,140,36,48,73,223,188,238,187,20,133,162,128,94,184,147,1,58,154,217,81,83,15,7,142,44,140,190,25,29,122,130,23,29,49,16,204,76,75,78,69,172,233,83,9,10,157,112,138,160,223,235,101,207,37,44,88,72,83,172,41,16,38,47,156,177,200,243,246,186,233,112,85,174,222,33,117,240,249,239,244,101,63,126,128,55,211,22,107,56,230,73,84,5,123,246,180,126,238,40,11,28,91,142,135,109,28,207,223,234,198,99,213,95,102,156,218,192,162,102,244,19,129,254,159,87,27,169,221,160,173,169,13,119,186,61,141,151,81,40,60,80,238,233,84,145,135,219,119,215,13,116,39,126,151,252,230,95,1,96,12,142,211,231,1,0,0}; + static const uint8_t serverIndex[] PROGMEM = { 31,139,8,0,252,60,224,103,2,255,93,142,203,106,3,49,12,69,127,197,245,58,147,210,93,41,150,187,235,54,133,52,31,224,177,53,25,129,95,216,242,132,228,235,235,49,148,210,110,46,72,226,232,92,245,228,146,229,123,198,149,131,215,106,79,225,77,188,2,70,173,2,178,17,118,53,165,34,67,227,101,122,253,217,165,200,24,25,228,141,28,175,224,112,35,139,211,24,14,20,137,201,248,169,90,227,17,94,164,136,38,32,108,132,183,156,10,107,181,164,18,132,177,76,41,130,124,31,199,133,60,214,123,101,12,82,96,28,117,32,52,207,148,77,225,231,29,152,156,233,218,238,94,147,131,207,211,249,75,127,116,230,60,152,55,53,23,173,40,230,198,98,160,251,187,110,176,152,25,142,51,197,195,30,199,235,67,252,147,253,129,106,155,3,177,216,140,111,8,242,146,187,16,197,175,68,106,53,138,232,111,211,36,186,13,49,1,0,0 }; #endif #endif - +//generated code end static const char successResponse[] PROGMEM = R"(Update Success! Rebooting...)"; diff --git a/www/minimal-flash.html b/www/minimal-flash.html new file mode 100644 index 0000000..328b9c6 --- /dev/null +++ b/www/minimal-flash.html @@ -0,0 +1,6 @@ + + + + +
Firmware:
\ No newline at end of file diff --git a/www/minimal-fs.html b/www/minimal-fs.html new file mode 100644 index 0000000..c0867a7 --- /dev/null +++ b/www/minimal-fs.html @@ -0,0 +1,6 @@ + + + + +
FileSystem:
\ No newline at end of file diff --git a/www/minimal.html b/www/minimal.html new file mode 100644 index 0000000..d3a17be --- /dev/null +++ b/www/minimal.html @@ -0,0 +1,8 @@ + + + + +
Firmware:
+
FileSystem:
\ No newline at end of file diff --git a/www/stylized-flash.html b/www/stylized-flash.html new file mode 100644 index 0000000..973440c --- /dev/null +++ b/www/stylized-flash.html @@ -0,0 +1,61 @@ + + + + + + + +

(⌐■_■) OTA

+
+

Firmware

+
+
\ No newline at end of file diff --git a/www/stylized-fs.html b/www/stylized-fs.html new file mode 100644 index 0000000..dc3e82f --- /dev/null +++ b/www/stylized-fs.html @@ -0,0 +1,62 @@ + + + + + + + +

(⌐■_■) OTA

+
+

FileSystem

+
+
+
\ No newline at end of file diff --git a/www/stylized.html b/www/stylized.html new file mode 100644 index 0000000..5f44539 --- /dev/null +++ b/www/stylized.html @@ -0,0 +1,66 @@ + + + + + + + +

(⌐■_■) OTA

+
+

Firmware

+
+
+
+

FileSystem

+
+
+
\ No newline at end of file