From a4c71c16523837e82ea8bfafab6926ae1020804a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 2 May 2022 21:25:35 +0200 Subject: [PATCH] Filter based on first byte of file --- .../html_compressed/HTTP_HEAD_LAST_SCRIPT32.h | 34 ++++++++++++------- .../HTTP_HEAD_LAST_SCRIPT32.h | 23 +++++++++++-- tasmota/xdrv_01_webserver.ino | 8 ++--- 3 files changed, 45 insertions(+), 20 deletions(-) diff --git a/tasmota/html_compressed/HTTP_HEAD_LAST_SCRIPT32.h b/tasmota/html_compressed/HTTP_HEAD_LAST_SCRIPT32.h index 15d227b30..fcf228aad 100644 --- a/tasmota/html_compressed/HTTP_HEAD_LAST_SCRIPT32.h +++ b/tasmota/html_compressed/HTTP_HEAD_LAST_SCRIPT32.h @@ -2,7 +2,7 @@ // compressed by tools/unishox/compress-html-uncompressed.py ///////////////////////////////////////////////////////////////////// -const size_t HTTP_HEAD_LAST_SCRIPT32_SIZE = 771; +const size_t HTTP_HEAD_LAST_SCRIPT32_SIZE = 989; const char HTTP_HEAD_LAST_SCRIPT32_COMPRESSED[] PROGMEM = "\x30\x2F\x83\xAD\xCE\x46\xB1\x0E\xE9\xDE\x3D\xA6\x77\xF5\x47\xC3\x8C\xEA\x2D\x3E" "\x09\x81\x8B\x1A\xFA\x8E\x86\xA1\x6F\xE6\x45\xE6\x13\x0E\xB3\xE5\x61\x04\x77\x4F" "\xBD\xE1\x82\xE8\xEA\x1C\x2E\xAB\x38\xEA\xA6\x6C\xAB\xFB\xB3\xAB\xCC\x26\x1D\x1F" @@ -16,17 +16,25 @@ const char HTTP_HEAD_LAST_SCRIPT32_COMPRESSED[] PROGMEM = "\x30\x2F\x83\xAD\xCE\ "\x9C\xCF\xB0\x43\xD7\x47\xC2\x3B\xA6\xB1\x0E\xF1\xE0\x11\x76\x41\x67\x76\x8E\xF1" "\xED\x63\x8E\xE9\xF6\x60\xE5\x9F\x67\x78\x81\x2B\x21\x04\x2C\x5D\x8E\x3B\xA7\xD9" "\x83\x94\x40\x9B\x68\x10\x73\xD3\xC5\x1D\x0C\x67\xC6\x9D\x3C\x2C\x70\xDD\xA3\xBA" - "\x77\x8F\x2A\x01\x8B\xC2\x09\x80\xE8\xEE\xD0\x20\xF0\x84\x6C\x3E\x73\x1F\x44\x6C" - "\x21\xA4\x11\x0A\xAA\x18\x5F\x66\xA1\x6F\xD4\x77\x4E\xF1\xE0\xD8\x74\xC1\x8F\x8E" - "\xE9\xF6\x43\xC4\xCA\x8F\xB3\xA8\xFB\x3B\x05\x9C\xC3\xB4\x42\xCE\x61\xF0\x8C\x07" - "\x47\xEA\xC6\x69\xF0\xFB\x3A\xAB\xE2\xD9\xDE\x3C\x1B\x0E\x99\xDF\x76\x21\x97\xAA" - "\xE9\x86\x2A\x2B\xF8\x79\x9F\x0E\xE9\xDE\x3E\x1F\x87\xB7\x4C\x1D\xD3\x61\xD3\xEE" - "\xC4\x32\x2F\x55\xD3\x3E\x1F\x0E\x61\xFA\x3F\x44\x6C\x3A\x7A\xAE\x85\xF8\xF8\x7C" - "\x39\x4D\x90\x20\xEB\x3E\x3E\x1B\x0E\x9F\x7E\x19\x9D\xE6\x54\xCD\x94\x78\xD3\x07" - "\x77\xC7\xC3\xE1\xF6\x62\xC2\xF3\x3E\xCE\xF7\x9D\x15\x68\xD7\x82\xE8\xEE\x9D\xD3" - "\xBC\x7C\x3F\x0F\x68\x20\xF0\x26\x78\x3D\xC7\x51\xCE\x6D\x9D\xE2\x04\x3C\x26\xBE" - "\x2D\x9F\x67\x7B\xC2\xCE\xED\x1D\xE3\xC1\xEE\x61\x79\xA0\x59\xD6\x8E\x33\xBC\x7B" - "\x48\x15\x33\x53\x94\xDB\x3B\xC7\x83\xDC\x78\x3D\xC7\x82\x36\x1D\x3C\xF8\x43\xBA" - "\x77\x8F\x1F\x74\x2F\xFC\x8C\x58\x5E\x67\x83\xDC\x7A\x1D\x9E\x0F\xFA\x32\x8F\xC3"; + "\x77\x8F\x2A\x01\x8B\xC2\x08\xB1\x81\x1D\xDA\x04\x1E\x10\xBC\x11\xF0\x10\x70\x43" + "\xDE\x3E\xC5\x9C\xA3\xEC\xF7\xCE\x84\x63\x42\x7E\x3D\xE3\x8C\xF7\xCE\x85\xE0\xB4" + "\x36\x77\x4E\x33\xAA\x1D\xE3\xC1\x19\xDF\xD7\xC4\x3E\x73\x1F\x44\x63\x42\x65\xF7" + "\x62\x3F\x9D\xD3\xBC\x78\xF8\x87\x4C\xE0\xB2\xC4\x3E\x1D\xD3\xBC\x7C\x3F\x0F\x69" + "\x9D\xFD\x0E\x1C\x7C\xE6\x3E\x88\x5E\xF5\x1C\xF9\x15\xFF\xF6\x64\x77\x7E\x21\xD3" + "\xEF\xC2\xC2\xA3\xBC\x78\xD3\x07\x74\x70\xE0\x42\xE2\x14\xF8\x7C\x39\x0F\xD1\xFA" + "\x21\xC3\x8F\x78\xE3\x3D\xF3\xE1\xF1\x91\xB0\x99\xC4\x77\x8F\x69\x18\x0E\x8E\xED" + "\x1D\xE3\xC1\xEE\x61\x79\x9E\xD0\x4C\xE0\x60\xF0\x7B\x8F\x1F\x10\xE9\xF7\x62\x15" + "\xF8\xAF\xFF\xB3\x22\x1C\x2C\xC1\x87\xF3\xBB\xE0\x8E\xF1\xE3\xEE\x85\xFF\x91\x8B" + "\x0B\xCC\xF0\x7B\x81\x17\x8A\x2A\x01\x41\xCB\x8F\x69\x9D\xFD\x1B\x0F\x9C\xC7\xD1" + "\x1B\x08\x69\x04\x42\xAA\x86\x17\xD9\xA8\x5B\xF5\x1D\xD3\xBC\x78\x36\x1D\x30\x63" + "\xE3\xBA\x7D\x90\xF1\x32\xA3\xEC\xEA\x3E\xCE\xC1\x67\x30\xED\x10\xB3\x98\x7C\x23" + "\x01\xD1\xFA\xB1\x9A\x7C\x3E\xCE\xAA\xF8\xB6\x77\x8F\x06\xC3\xA6\x77\xDD\x88\x65" + "\xEA\xBA\x61\x8A\xBE\x1E\x60\x83\xC2\x76\x98\x3B\xA6\xC3\xA7\xDD\x88\x64\x5E\xAB" + "\xA6\x7C\x3E\x1C\xC3\xF4\x7E\x88\xD8\x74\xF5\x5D\x0B\xF1\xF0\xF8\x72\x9B\x20\x42" + "\xE3\x2A\x01\xF8\x6C\x3A\x7D\xF8\x66\x77\x99\x53\x36\x51\xE3\x4C\x1D\xDF\x1F\x0F" + "\x87\xD9\x8B\x0B\xCC\xFB\x3B\xDE\x74\x55\xA3\x5E\x0B\xA3\xBA\x77\x4E\xF1\xF0\xFC" + "\x04\x4E\x19\x4E\xA3\x9C\xDB\x3B\xC4\x08\x78\x4D\x7C\x5B\x3E\xCE\xF7\x85\x82\x27" + "\x10\x08\x16\x75\xA3\x8C\xEF\x1E\xD2\x05\x4C\xD4\xE5\x36\xC8\x10\x78\xB0\x36\x1D" + "\x3C\xF8\x43\xBA\x77\x8F\x07\xB8\xF4\x3B\x3C\x1F\xF4\x65\x1F\x86"; #define HTTP_HEAD_LAST_SCRIPT32 Decompress(HTTP_HEAD_LAST_SCRIPT32_COMPRESSED,HTTP_HEAD_LAST_SCRIPT32_SIZE).c_str() \ No newline at end of file diff --git a/tasmota/html_uncompressed/HTTP_HEAD_LAST_SCRIPT32.h b/tasmota/html_uncompressed/HTTP_HEAD_LAST_SCRIPT32.h index 1b651cc52..3b8a1ebff 100644 --- a/tasmota/html_uncompressed/HTTP_HEAD_LAST_SCRIPT32.h +++ b/tasmota/html_uncompressed/HTTP_HEAD_LAST_SCRIPT32.h @@ -25,9 +25,27 @@ const char HTTP_HEAD_LAST_SCRIPT32[] PROGMEM = "eb('f2').style.display='block';" "t.form.submit();" "}" + "function upl(t){" // check file's first byte to decide next step + "var sl=t.form['u2'].files[0].slice(0,1);" // load only first byte of file + // "console.log(sl);" + // "console.log(sl.length);" + "var rd=new FileReader();" + "rd.onload=()=>{" + // "console.log(\"rd.onload\");" + "var bb=new Uint8Array(rd.result);" + // "console.log(bb[0]);" + // "console.log(bb.length);" + "if(bb.length==1&&bb[0]==0xE9){" + "fct(t);" // upload via factory + "}else{" + "t.form.submit();" // normal upload + "};" + "};" + "rd.readAsArrayBuffer(sl);" + "return false;" + "};" + "function fct(t){" - // "console.log('running fct');" - // "console.log(t);" "var x=new XMLHttpRequest();" "x.open('GET','/u4?u4=fct&api=',true);" "x.onreadystatechange=()=>{" @@ -43,6 +61,5 @@ const char HTTP_HEAD_LAST_SCRIPT32[] PROGMEM = "};" "x.send();" // "console.log('after send');" - "return false;" "}" ""; diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 3b129e3c6..683dc0b00 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -354,17 +354,17 @@ const char HTTP_FORM_RST_UPG[] PROGMEM = "
" "" "" - ""; + ""; // upload via factory partition const char HTTP_FORM_RST_UPG_FCT[] PROGMEM = "
" "

" - "
" + "
" "" "" - "" - ""; + "" + ""; const char HTTP_FORM_CMND[] PROGMEM = "


"