Filter based on first byte of file

This commit is contained in:
Stephan Hadinger 2022-05-02 21:25:35 +02:00
parent c8148a623f
commit a4c71c1652
3 changed files with 45 additions and 20 deletions

View File

@ -2,7 +2,7 @@
// compressed by tools/unishox/compress-html-uncompressed.py // 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" 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" "\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" "\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" "\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" "\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" "\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" "\x77\x8F\x2A\x01\x8B\xC2\x08\xB1\x81\x1D\xDA\x04\x1E\x10\xBC\x11\xF0\x10\x70\x43"
"\x21\xA4\x11\x0A\xAA\x18\x5F\x66\xA1\x6F\xD4\x77\x4E\xF1\xE0\xD8\x74\xC1\x8F\x8E" "\xDE\x3E\xC5\x9C\xA3\xEC\xF7\xCE\x84\x63\x42\x7E\x3D\xE3\x8C\xF7\xCE\x85\xE0\xB4"
"\xE9\xF6\x43\xC4\xCA\x8F\xB3\xA8\xFB\x3B\x05\x9C\xC3\xB4\x42\xCE\x61\xF0\x8C\x07" "\x36\x77\x4E\x33\xAA\x1D\xE3\xC1\x19\xDF\xD7\xC4\x3E\x73\x1F\x44\x63\x42\x65\xF7"
"\x47\xEA\xC6\x69\xF0\xFB\x3A\xAB\xE2\xD9\xDE\x3C\x1B\x0E\x99\xDF\x76\x21\x97\xAA" "\x62\x3F\x9D\xD3\xBC\x78\xF8\x87\x4C\xE0\xB2\xC4\x3E\x1D\xD3\xBC\x7C\x3F\x0F\x69"
"\xE9\x86\x2A\x2B\xF8\x79\x9F\x0E\xE9\xDE\x3E\x1F\x87\xB7\x4C\x1D\xD3\x61\xD3\xEE" "\x9D\xFD\x0E\x1C\x7C\xE6\x3E\x88\x5E\xF5\x1C\xF9\x15\xFF\xF6\x64\x77\x7E\x21\xD3"
"\xC4\x32\x2F\x55\xD3\x3E\x1F\x0E\x61\xFA\x3F\x44\x6C\x3A\x7A\xAE\x85\xF8\xF8\x7C" "\xEF\xC2\xC2\xA3\xBC\x78\xD3\x07\x74\x70\xE0\x42\xE2\x14\xF8\x7C\x39\x0F\xD1\xFA"
"\x39\x4D\x90\x20\xEB\x3E\x3E\x1B\x0E\x9F\x7E\x19\x9D\xE6\x54\xCD\x94\x78\xD3\x07" "\x21\xC3\x8F\x78\xE3\x3D\xF3\xE1\xF1\x91\xB0\x99\xC4\x77\x8F\x69\x18\x0E\x8E\xED"
"\x77\xC7\xC3\xE1\xF6\x62\xC2\xF3\x3E\xCE\xF7\x9D\x15\x68\xD7\x82\xE8\xEE\x9D\xD3" "\x1D\xE3\xC1\xEE\x61\x79\x9E\xD0\x4C\xE0\x60\xF0\x7B\x8F\x1F\x10\xE9\xF7\x62\x15"
"\xBC\x7C\x3F\x0F\x68\x20\xF0\x26\x78\x3D\xC7\x51\xCE\x6D\x9D\xE2\x04\x3C\x26\xBE" "\xF8\xAF\xFF\xB3\x22\x1C\x2C\xC1\x87\xF3\xBB\xE0\x8E\xF1\xE3\xEE\x85\xFF\x91\x8B"
"\x2D\x9F\x67\x7B\xC2\xCE\xED\x1D\xE3\xC1\xEE\x61\x79\xA0\x59\xD6\x8E\x33\xBC\x7B" "\x0B\xCC\xF0\x7B\x81\x17\x8A\x2A\x01\x41\xCB\x8F\x69\x9D\xFD\x1B\x0F\x9C\xC7\xD1"
"\x48\x15\x33\x53\x94\xDB\x3B\xC7\x83\xDC\x78\x3D\xC7\x82\x36\x1D\x3C\xF8\x43\xBA" "\x1B\x08\x69\x04\x42\xAA\x86\x17\xD9\xA8\x5B\xF5\x1D\xD3\xBC\x78\x36\x1D\x30\x63"
"\x77\x8F\x1F\x74\x2F\xFC\x8C\x58\x5E\x67\x83\xDC\x7A\x1D\x9E\x0F\xFA\x32\x8F\xC3"; "\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() #define HTTP_HEAD_LAST_SCRIPT32 Decompress(HTTP_HEAD_LAST_SCRIPT32_COMPRESSED,HTTP_HEAD_LAST_SCRIPT32_SIZE).c_str()

View File

@ -25,9 +25,27 @@ const char HTTP_HEAD_LAST_SCRIPT32[] PROGMEM =
"eb('f2').style.display='block';" "eb('f2').style.display='block';"
"t.form.submit();" "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){" "function fct(t){"
// "console.log('running fct');"
// "console.log(t);"
"var x=new XMLHttpRequest();" "var x=new XMLHttpRequest();"
"x.open('GET','/u4?u4=fct&api=',true);" "x.open('GET','/u4?u4=fct&api=',true);"
"x.onreadystatechange=()=>{" "x.onreadystatechange=()=>{"
@ -43,6 +61,5 @@ const char HTTP_HEAD_LAST_SCRIPT32[] PROGMEM =
"};" "};"
"x.send();" "x.send();"
// "console.log('after send');" // "console.log('after send');"
"return false;"
"}" "}"
"</script>"; "</script>";

View File

@ -354,17 +354,17 @@ const char HTTP_FORM_RST_UPG[] PROGMEM =
"<br><button type='submit' onclick='eb(\"f1\").style.display=\"none\";eb(\"f2\").style.display=\"block\";this.form.submit();'>" D_START " %s</button></form>" "<br><button type='submit' onclick='eb(\"f1\").style.display=\"none\";eb(\"f2\").style.display=\"block\";this.form.submit();'>" D_START " %s</button></form>"
"</fieldset>" "</fieldset>"
"</div>" "</div>"
"<div id='f2' style='display:none;text-align:center;'><b>" D_UPLOAD_STARTED " ...</b></div>"; "<div id='f2' style='display:none;text-align:center;'><b>" D_UPLOAD_STARTED "...</b></div>";
// upload via factory partition // upload via factory partition
const char HTTP_FORM_RST_UPG_FCT[] PROGMEM = const char HTTP_FORM_RST_UPG_FCT[] PROGMEM =
"<form method='post' action='u2' enctype='multipart/form-data'>" "<form method='post' action='u2' enctype='multipart/form-data'>"
"<br><input type='file' name='u2'><br>" "<br><input type='file' name='u2'><br>"
"<br><button type='submit' onclick='eb(\"f1\").style.display=\"none\";eb(\"f3\").style.display=\"block\";return fct(this);'>" D_START " %s</button></form>" "<br><button type='submit' onclick='eb(\"f1\").style.display=\"none\";eb(\"f3\").style.display=\"block\";return upl(this);'>" D_START " %s</button></form>"
"</fieldset>" "</fieldset>"
"</div>" "</div>"
"<div id='f3' style='display:none;text-align:center;'><b>" D_UPLOAD_FACTORY " ...</b></div>" "<div id='f3' style='display:none;text-align:center;'><b>" D_UPLOAD_FACTORY "...</b></div>"
"<div id='f2' style='display:none;text-align:center;'><b>" D_UPLOAD_STARTED " ...</b></div>"; "<div id='f2' style='display:none;text-align:center;'><b>" D_UPLOAD_STARTED "...</b></div>";
const char HTTP_FORM_CMND[] PROGMEM = const char HTTP_FORM_CMND[] PROGMEM =
"<br><textarea readonly id='t1' cols='340' wrap='off'></textarea><br><br>" "<br><textarea readonly id='t1' cols='340' wrap='off'></textarea><br><br>"