diff --git a/.gitignore b/.gitignore index 2b05451..6bb3771 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ *.map .DS_Store + +*.pyc diff --git a/esp8266_deauther/wifi.cpp b/esp8266_deauther/wifi.cpp index 6ddc04e..b2e7bfc 100644 --- a/esp8266_deauther/wifi.cpp +++ b/esp8266_deauther/wifi.cpp @@ -185,7 +185,7 @@ namespace wifi { void sendProgmem(const char* ptr, size_t size, const char* type) { server.sendHeader("Content-Encoding", "gzip"); - server.sendHeader("Cache-Control", "max-age=86400"); + server.sendHeader("Cache-Control", "max-age=3600"); server.send_P(200, str(type).c_str(), ptr, size); } @@ -212,11 +212,11 @@ namespace wifi { String getMode() { switch (mode) { case wifi_mode_t::off: - return W_MODE_OFF; + return "OFF"; case wifi_mode_t::ap: - return W_MODE_AP; + return "AP"; case wifi_mode_t::st: - return W_MODE_ST; + return "ST"; default: return String(); } @@ -267,100 +267,117 @@ namespace wifi { server.on("/list", HTTP_GET, handleFileList); // list directory - // ================================================================ - // post here the output of the webConverter.py #ifdef USE_PROGMEM_WEB_FILES - if (!settings::getWebSettings().use_spiffs) { - server.on("/", HTTP_GET, [] () { - sendProgmem(indexhtml, sizeof(indexhtml), W_HTML); - }); - server.on("/attack.html", HTTP_GET, [] () { - sendProgmem(attackhtml, sizeof(attackhtml), W_HTML); - }); - server.on("/index.html", HTTP_GET, [] () { - sendProgmem(indexhtml, sizeof(indexhtml), W_HTML); - }); - server.on("/info.html", HTTP_GET, [] () { - sendProgmem(infohtml, sizeof(infohtml), W_HTML); - }); - server.on("/scan.html", HTTP_GET, [] () { - sendProgmem(scanhtml, sizeof(scanhtml), W_HTML); - }); - server.on("/ap_settings.html", HTTP_GET, [] () { - sendProgmem(settingshtml, sizeof(settingshtml), W_HTML); - }); - server.on("/ssids.html", HTTP_GET, [] () { - sendProgmem(ssidshtml, sizeof(ssidshtml), W_HTML); - }); - server.on("/style.css", HTTP_GET, [] () { - sendProgmem(stylecss, sizeof(stylecss), W_CSS); - }); - server.on("/js/attack.js", HTTP_GET, [] () { - sendProgmem(attackjs, sizeof(attackjs), W_JS); - }); - server.on("/js/scan.js", HTTP_GET, [] () { - sendProgmem(scanjs, sizeof(scanjs), W_JS); - }); - server.on("/js/ap_settings.js", HTTP_GET, [] () { - sendProgmem(settingsjs, sizeof(settingsjs), W_JS); - }); - server.on("/js/site.js", HTTP_GET, [] () { - sendProgmem(sitejs, sizeof(sitejs), W_JS); - }); - server.on("/js/ssids.js", HTTP_GET, [] () { - sendProgmem(ssidsjs, sizeof(ssidsjs), W_JS); - }); - server.on("/lang/cn.lang", HTTP_GET, [] () { - sendProgmem(cnlang, sizeof(cnlang), W_JSON); - }); - server.on("/lang/cs.lang", HTTP_GET, [] () { - sendProgmem(cslang, sizeof(cslang), W_JSON); - }); - server.on("/lang/de.lang", HTTP_GET, [] () { - sendProgmem(delang, sizeof(delang), W_JSON); - }); - server.on("/lang/en.lang", HTTP_GET, [] () { - sendProgmem(enlang, sizeof(enlang), W_JSON); - }); - server.on("/lang/es.lang", HTTP_GET, [] () { - sendProgmem(eslang, sizeof(eslang), W_JSON); - }); - server.on("/lang/fi.lang", HTTP_GET, [] () { - sendProgmem(filang, sizeof(filang), W_JSON); - }); - server.on("/lang/fr.lang", HTTP_GET, [] () { - sendProgmem(frlang, sizeof(frlang), W_JSON); - }); - server.on("/lang/it.lang", HTTP_GET, [] () { - sendProgmem(itlang, sizeof(itlang), W_JSON); - }); - server.on("/lang/ru.lang", HTTP_GET, [] () { - sendProgmem(rulang, sizeof(rulang), W_JSON); - }); - server.on("/lang/tlh.lang", HTTP_GET, [] () { - sendProgmem(tlhlang, sizeof(tlhlang), W_JSON); - }); - } - server.on(str(W_DEFAULT_LANG).c_str(), HTTP_GET, [] () { - if (!settings::getWebSettings().use_spiffs) { - if (String(settings::getWebSettings().lang) == String(F("cn"))) sendProgmem(cnlang, sizeof(cnlang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("cs"))) sendProgmem(cslang, sizeof(cslang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("de"))) sendProgmem(delang, sizeof(delang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("en"))) sendProgmem(enlang, sizeof(enlang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("es"))) sendProgmem(eslang, sizeof(eslang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("fi"))) sendProgmem(filang, sizeof(filang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("fr"))) sendProgmem(frlang, sizeof(frlang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("it"))) sendProgmem(itlang, sizeof(itlang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("ru"))) sendProgmem(rulang, sizeof(rulang), W_JSON); - else if (String(settings::getWebSettings().lang) == String(F("tlh"))) sendProgmem(tlhlang, sizeof(tlhlang), W_JSON); - - else handleFileRead(String(F("/web/lang/")) + String(settings::getWebSettings().lang) + String(F(".lang"))); - } else { - handleFileRead(String(F("/web/lang/")) + String(settings::getWebSettings().lang) + String(F(".lang"))); - } - }); - #endif /* ifdef USE_PROGMEM_WEB_FILES */ // ================================================================ + // paste here the output of the webConverter.py + if(!settings::getWebSettings().use_spiffs){ + server.on("/", HTTP_GET, [](){ + sendProgmem(indexhtml, sizeof(indexhtml), W_HTML); + }); + server.on("/index.html", HTTP_GET, [](){ + sendProgmem(indexhtml, sizeof(indexhtml), W_HTML); + }); + server.on("/scan.html", HTTP_GET, [](){ + sendProgmem(scanhtml, sizeof(scanhtml), W_HTML); + }); + server.on("/info.html", HTTP_GET, [](){ + sendProgmem(infohtml, sizeof(infohtml), W_HTML); + }); + server.on("/ssids.html", HTTP_GET, [](){ + sendProgmem(ssidshtml, sizeof(ssidshtml), W_HTML); + }); + server.on("/attack.html", HTTP_GET, [](){ + sendProgmem(attackhtml, sizeof(attackhtml), W_HTML); + }); + server.on("/settings.html", HTTP_GET, [](){ + sendProgmem(settingshtml, sizeof(settingshtml), W_HTML); + }); + server.on("/style.css", HTTP_GET, [](){ + sendProgmem(stylecss, sizeof(stylecss), W_CSS); + }); + server.on("/js/ssids.js", HTTP_GET, [](){ + sendProgmem(ssidsjs, sizeof(ssidsjs), W_JS); + }); + server.on("/js/site.js", HTTP_GET, [](){ + sendProgmem(sitejs, sizeof(sitejs), W_JS); + }); + server.on("/js/attack.js", HTTP_GET, [](){ + sendProgmem(attackjs, sizeof(attackjs), W_JS); + }); + server.on("/js/scan.js", HTTP_GET, [](){ + sendProgmem(scanjs, sizeof(scanjs), W_JS); + }); + server.on("/js/settings.js", HTTP_GET, [](){ + sendProgmem(settingsjs, sizeof(settingsjs), W_JS); + }); + server.on("/lang/ja.lang", HTTP_GET, [](){ + sendProgmem(jalang, sizeof(jalang), W_JSON); + }); + server.on("/lang/fi.lang", HTTP_GET, [](){ + sendProgmem(filang, sizeof(filang), W_JSON); + }); + server.on("/lang/cn.lang", HTTP_GET, [](){ + sendProgmem(cnlang, sizeof(cnlang), W_JSON); + }); + server.on("/lang/ru.lang", HTTP_GET, [](){ + sendProgmem(rulang, sizeof(rulang), W_JSON); + }); + server.on("/lang/de.lang", HTTP_GET, [](){ + sendProgmem(delang, sizeof(delang), W_JSON); + }); + server.on("/lang/it.lang", HTTP_GET, [](){ + sendProgmem(itlang, sizeof(itlang), W_JSON); + }); + server.on("/lang/en.lang", HTTP_GET, [](){ + sendProgmem(enlang, sizeof(enlang), W_JSON); + }); + server.on("/lang/fr.lang", HTTP_GET, [](){ + sendProgmem(frlang, sizeof(frlang), W_JSON); + }); + server.on("/lang/ro.lang", HTTP_GET, [](){ + sendProgmem(rolang, sizeof(rolang), W_JSON); + }); + server.on("/lang/ptbr.lang", HTTP_GET, [](){ + sendProgmem(ptbrlang, sizeof(ptbrlang), W_JSON); + }); + server.on("/lang/cs.lang", HTTP_GET, [](){ + sendProgmem(cslang, sizeof(cslang), W_JSON); + }); + server.on("/lang/tlh.lang", HTTP_GET, [](){ + sendProgmem(tlhlang, sizeof(tlhlang), W_JSON); + }); + server.on("/lang/es.lang", HTTP_GET, [](){ + sendProgmem(eslang, sizeof(eslang), W_JSON); + }); + server.on("/lang/th.lang", HTTP_GET, [](){ + sendProgmem(thlang, sizeof(thlang), W_JSON); + }); + + } + server.on("/lang/default.lang", HTTP_GET, [](){ + if(!settings::getWebSettings().use_spiffs){ + if(String(settings::getWebSettings().lang) == "ja") sendProgmem(jalang, sizeof(jalang), W_JSON); + else if(String(settings::getWebSettings().lang) == "fi") sendProgmem(filang, sizeof(filang), W_JSON); + else if(String(settings::getWebSettings().lang) == "cn") sendProgmem(cnlang, sizeof(cnlang), W_JSON); + else if(String(settings::getWebSettings().lang) == "ru") sendProgmem(rulang, sizeof(rulang), W_JSON); + else if(String(settings::getWebSettings().lang) == "de") sendProgmem(delang, sizeof(delang), W_JSON); + else if(String(settings::getWebSettings().lang) == "it") sendProgmem(itlang, sizeof(itlang), W_JSON); + else if(String(settings::getWebSettings().lang) == "en") sendProgmem(enlang, sizeof(enlang), W_JSON); + else if(String(settings::getWebSettings().lang) == "fr") sendProgmem(frlang, sizeof(frlang), W_JSON); + else if(String(settings::getWebSettings().lang) == "ro") sendProgmem(rolang, sizeof(rolang), W_JSON); + else if(String(settings::getWebSettings().lang) == "ptbr") sendProgmem(ptbrlang, sizeof(ptbrlang), W_JSON); + else if(String(settings::getWebSettings().lang) == "cs") sendProgmem(cslang, sizeof(cslang), W_JSON); + else if(String(settings::getWebSettings().lang) == "tlh") sendProgmem(tlhlang, sizeof(tlhlang), W_JSON); + else if(String(settings::getWebSettings().lang) == "es") sendProgmem(eslang, sizeof(eslang), W_JSON); + else if(String(settings::getWebSettings().lang) == "th") sendProgmem(thlang, sizeof(thlang), W_JSON); + + else handleFileRead("/web/lang/"+String(settings::getWebSettings().lang)+".lang"); + } else { + handleFileRead("/web/lang/"+String(settings::getWebSettings().lang)+".lang"); + } + }); + // ================================================================ + #endif /* ifdef USE_PROGMEM_WEB_FILES */ server.on("/run", HTTP_GET, [] () { server.send(200, str(W_TXT), str(W_OK).c_str()); diff --git a/utils/web_converter/webConverter.py b/utils/web_converter/webConverter.py index 82d7fd3..1994872 100644 --- a/utils/web_converter/webConverter.py +++ b/utils/web_converter/webConverter.py @@ -89,8 +89,8 @@ for file in html_files: hex_formatted_content += "0x" + char + ", " hex_formatted_content = hex_formatted_content[:-2] progmem_definitions += "const char " + array_name + "[] PROGMEM = {" + hex_formatted_content + "};\n" - copy_files_function += ' if(!LittleFS.exists(String(F("/web/' + base_file + '.gz"))) || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), String(F("/web/' + base_file + '.gz")));\n' - webserver_events += 'server.on(String(F("/' + base_file + '")).c_str(), HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_HTML);\n});\n' + copy_files_function += ' if(!LittleFS.exists("/web/' + base_file + '.gz") || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), "/web/' + base_file + '.gz");\n' + webserver_events += 'server.on("/' + base_file + '", HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_HTML);\n});\n' for file in css_files: base_file = os.path.basename(str(file)) @@ -117,8 +117,8 @@ for file in css_files: hex_formatted_content += "0x" + char + ", " hex_formatted_content = hex_formatted_content[:-2] progmem_definitions += "const char " + array_name + "[] PROGMEM = {" + hex_formatted_content + "};\n" - copy_files_function += ' if(!LittleFS.exists(String(F("/web/' + base_file + '.gz"))) || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), String(F("/web/' + base_file + '.gz")));\n' - webserver_events += 'server.on(String(F("/' + base_file + '")).c_str(), HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_CSS);\n});\n' + copy_files_function += ' if(!LittleFS.exists("/web/' + base_file + '.gz") || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), "/web/' + base_file + '.gz");\n' + webserver_events += 'server.on("/' + base_file + '", HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_CSS);\n});\n' for file in js_files: q = PurePath('js') @@ -149,8 +149,8 @@ for file in js_files: hex_formatted_content += "0x" + char + ", " hex_formatted_content = hex_formatted_content[:-2] progmem_definitions += "const char " + array_name + "[] PROGMEM = {" + hex_formatted_content + "};\n" - copy_files_function += ' if(!LittleFS.exists(String(F("/web/js/' + base_file + '.gz"))) || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), String(F("/web/js/' + base_file + '.gz")));\n' - webserver_events += 'server.on(String(F("/js/' + base_file + '")).c_str(), HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JS);\n});\n' + copy_files_function += ' if(!LittleFS.exists("/web/js/' + base_file + '.gz") || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), "/web/js/' + base_file + '.gz");\n' + webserver_events += 'server.on("/js/' + base_file + '", HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JS);\n});\n' for file in lang_files: q = PurePath('lang') @@ -179,12 +179,12 @@ for file in lang_files: hex_formatted_content += "0x" + char + ", " hex_formatted_content = hex_formatted_content[:-2] progmem_definitions += "const char " + array_name + "[] PROGMEM = {" + hex_formatted_content + "};\n" - copy_files_function += ' if(!LittleFS.exists(String(F("/web/lang/' + base_file + '.gz"))) || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), String(F("/web/lang/' + base_file + '.gz")));\n' - webserver_events += 'server.on(String(F("/lang/' + base_file + '")).c_str(), HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JSON);\n});\n' + copy_files_function += ' if(!LittleFS.exists("/web/lang/' + base_file + '.gz") || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), "/web/lang/' + base_file + '.gz");\n' + webserver_events += 'server.on("/lang/' + base_file + '", HTTP_GET, [](){\n sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JSON);\n});\n' if(len(load_lang) > 0): - load_lang += ' else if(settings::getLang() == String(F("'+lang_name+'"))) sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JSON);\n' + load_lang += ' else if(String(settings::getWebSettings().lang) == "'+lang_name+'") sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JSON);\n' else: - load_lang += ' if(settings::getLang() == String(F("'+lang_name+'"))) sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JSON);\n' + load_lang += ' if(String(settings::getWebSettings().lang) == "'+lang_name+'") sendProgmem(' + array_name + ', sizeof(' + array_name + '), W_JSON);\n' base_file = os.path.basename(license_file_path) new_file = str(os.path.join(str(compressed), str("LICENSE"))) @@ -206,7 +206,7 @@ for char in hex_content: hex_formatted_content += "0x" + char + ", " hex_formatted_content = hex_formatted_content[:-2] progmem_definitions += "const char " + array_name + "[] PROGMEM = {" + hex_formatted_content + "};\n" -copy_files_function += ' if(!LittleFS.exists(String(F("/web/' + base_file + '.gz"))) || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), String(F("/web/' + base_file + '.gz")));\n' +copy_files_function += ' if(!LittleFS.exists("/web/' + base_file + '.gz") || force) progmemToSpiffs(' + array_name + ', sizeof(' + array_name + '), "/web/' + base_file + '.gz");\n' print("[+] Saving everything into webfiles.h...") f = open(arduino_file_path, 'w') @@ -232,19 +232,19 @@ f.write("#endif") f.close() print("\n[+] Done, happy uploading :)") -print("Here are the updated functions for wifi.h, in case you added or removed files:") +print("Here are the updated functions for wifi.cpp, in case you added or removed files:") print(); -print('if(!settings::getWebSpiffs()){') -print(' server.on(String(SLASH).c_str(), HTTP_GET, [](){') +print('if(!settings::getWebSettings().use_spiffs){') +print(' server.on("/", HTTP_GET, [](){') print(' sendProgmem(indexhtml, sizeof(indexhtml), W_HTML);') print('});') print(webserver_events) print('}') -print("server.on(str(W_DEFAULT_LANG).c_str(), HTTP_GET, [](){") -print(" if(!settings::getWebSpiffs()){") +print('server.on("/lang/default.lang", HTTP_GET, [](){') +print(" if(!settings::getWebSettings().use_spiffs){") print(load_lang) -print(' else handleFileRead(String(F("/web/lang/"))+settings::getLang()+String(F(".lang")));') +print(' else handleFileRead("/web/lang/"+String(settings::getWebSettings().lang)+".lang");') print(' } else {') -print(' handleFileRead(String(F("/web/lang/"))+settings::getLang()+String(F(".lang")));') +print(' handleFileRead("/web/lang/"+String(settings::getWebSettings().lang)+".lang");') print(' }') -print("});"); +print("});")