From 2ac89dc6a7dca537a2cad7016dc73fe012c01ca0 Mon Sep 17 00:00:00 2001 From: luc lebosse Date: Sun, 3 Jul 2016 18:30:24 +0200 Subject: [PATCH] Use ESP core urlDecode function instead of mine --- esp3d/webinterface.cpp | 75 ++++++++++-------------------------------- esp3d/webinterface.h | 1 - 2 files changed, 18 insertions(+), 58 deletions(-) diff --git a/esp3d/webinterface.cpp b/esp3d/webinterface.cpp index 9bb13531..29ca6e72 100644 --- a/esp3d/webinterface.cpp +++ b/esp3d/webinterface.cpp @@ -1272,8 +1272,8 @@ void handle_password() //is there a correct list of values? if (web_interface->WebServer.hasArg("PASSWORD") && web_interface->WebServer.hasArg("PASSWORD2")) { //Password - web_interface->urldecode(sPassword,web_interface->WebServer.arg("PASSWORD").c_str()); - web_interface->urldecode(sPassword2,web_interface->WebServer.arg("PASSWORD2").c_str()); + sPassword = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("PASSWORD")); + sPassword2 = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("PASSWORD2")); if (!web_interface->isAdminPasswordValid(sPassword.c_str()) ) { msg_alert_error=true; smsg.concat(F("Error: Incorrect password
")); @@ -1394,7 +1394,7 @@ void handle_web_interface_configAP() && web_interface->WebServer.hasArg("GATEWAY")&& web_interface->WebServer.hasArg("SUBNET") && web_interface->WebServer.hasArg("CHANNEL")) { //SSID - web_interface->urldecode(sSSID,web_interface->WebServer.arg("SSID").c_str()); + sSSID = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("SSID")); if (!web_interface->isSSIDValid(sSSID.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect SSID
")); @@ -1402,7 +1402,7 @@ void handle_web_interface_configAP() ValuesList.add(FPSTR(VALUE_HAS_ERROR)); } //Password - web_interface->urldecode(sPassword,web_interface->WebServer.arg("PASSWORD").c_str()); + sPassword = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("PASSWORD")); if (!web_interface->isPasswordValid(sPassword.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect password
")); @@ -1448,7 +1448,7 @@ void handle_web_interface_configAP() } //IP - web_interface->urldecode(sIP,web_interface->WebServer.arg("IP").c_str()); + sIP = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("IP")); if (!web_interface->isIPValid(sIP.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect IP fortmat
")); @@ -1457,7 +1457,7 @@ void handle_web_interface_configAP() } //Gateway - web_interface->urldecode(sGW,web_interface->WebServer.arg("GATEWAY").c_str()); + sGW = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("GATEWAY")); if (!web_interface->isIPValid(sGW.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect gateway
")); @@ -1465,7 +1465,7 @@ void handle_web_interface_configAP() ValuesList.add(FPSTR(VALUE_HAS_ERROR)); } //subnet - web_interface->urldecode(sMask,web_interface->WebServer.arg("SUBNET").c_str()); + sMask = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("SUBNET")); if (!web_interface->isIPValid(sMask.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect subnet
")); @@ -1732,7 +1732,7 @@ void handle_web_interface_configSTA() && web_interface->WebServer.hasArg("IP") && web_interface->WebServer.hasArg("GATEWAY")&& web_interface->WebServer.hasArg("SUBNET") && web_interface->WebServer.hasArg("HOSTNAME")) { //SSID - web_interface->urldecode(sSSID,web_interface->WebServer.arg("SSID").c_str()); + sSSID = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("SSID")); if (!web_interface->isSSIDValid(sSSID.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect SSID
")); @@ -1741,7 +1741,7 @@ void handle_web_interface_configSTA() } //Password - web_interface->urldecode(sPassword,web_interface->WebServer.arg("PASSWORD").c_str()); + sPassword = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("PASSWORD")); if (!web_interface->isPasswordValid(sPassword.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect password
")); @@ -1750,7 +1750,7 @@ void handle_web_interface_configSTA() } //Hostname - web_interface->urldecode(sHostname,web_interface->WebServer.arg("HOSTNAME").c_str()); + sHostname = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("HOSTNAME")); if (!web_interface->isHostnameValid(sHostname.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect hostname
")); @@ -1775,7 +1775,7 @@ void handle_web_interface_configSTA() } //IP - web_interface->urldecode(sIP,web_interface->WebServer.arg("IP").c_str()); + sIP= web_interface->WebServer.urlDecode(web_interface->WebServer.arg("IP")); if (!web_interface->isIPValid(sIP.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect IP format
")); @@ -1784,7 +1784,7 @@ void handle_web_interface_configSTA() } //Gateway - web_interface->urldecode(sGW,web_interface->WebServer.arg("GATEWAY").c_str()); + sGW = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("GATEWAY")); if (!web_interface->isIPValid(sGW.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect gateway
")); @@ -1792,7 +1792,7 @@ void handle_web_interface_configSTA() ValuesList.add(FPSTR(VALUE_HAS_ERROR)); } //subnet - web_interface->urldecode(sMask,web_interface->WebServer.arg("SUBNET").c_str()); + sMask = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("SUBNET")); if (!web_interface->isIPValid(sMask.c_str())) { msg_alert_error=true; smsg.concat(F("Error: Incorrect subnet
")); @@ -2013,8 +2013,6 @@ void handle_web_interface_printer() { static const char NOT_AUTH_PRT [] PROGMEM = "HTTP/1.1 301 OK\r\nLocation: /LOGIN?return=PRINTER\r\nCache-Control: no-cache\r\n\r\n"; - //bool msg_alert_error=false; - //bool msg_alert_success=false; STORESTRINGS_CLASS KeysList ; STORESTRINGS_CLASS ValuesList ; @@ -2744,7 +2742,7 @@ void handleFileList() if(web_interface->WebServer.hasArg("action")) { if(web_interface->WebServer.arg("action")=="delete" && web_interface->WebServer.hasArg("filename")) { String filename; - web_interface->urldecode(filename,web_interface->WebServer.arg("filename").c_str()); + filename = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("filename")); if(!SPIFFS.exists(filename)) { status="Cannot delete, file not found!"; } else { @@ -2907,13 +2905,13 @@ void handle_login() //check is it is a submission or a display smsg=""; if (web_interface->WebServer.hasArg("return")) { - web_interface->urldecode(sReturn,web_interface->WebServer.arg("return").c_str()); + sReturn = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("return")); } if (web_interface->WebServer.hasArg("SUBMIT")) { //is there a correct list of values? if ( web_interface->WebServer.hasArg("PASSWORD")&& web_interface->WebServer.hasArg("USER")) { //USER - web_interface->urldecode(sUser,web_interface->WebServer.arg("USER").c_str()); + sUser = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("USER")); #ifdef AUTHENTICATION_FEATURE if (sUser!="admin") { msg_alert_error=true; @@ -2922,7 +2920,7 @@ void handle_login() ValuesList.add(FPSTR(VALUE_HAS_ERROR)); } //Password - web_interface->urldecode(sPassword,web_interface->WebServer.arg("PASSWORD").c_str()); + sPassword = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("PASSWORD")); String scurrentPassword; if (!CONFIG::read_string(EP_ADMIN_PWD, scurrentPassword , MAX_ADMIN_PASSWORD_LENGTH)) { @@ -3049,7 +3047,7 @@ void handle_web_command() if (web_interface->WebServer.hasArg("COM")) { String scmd; //decode command - web_interface->urldecode(scmd,web_interface->WebServer.arg("COM").c_str()); + scmd = web_interface->WebServer.urlDecode(web_interface->WebServer.arg("COM")); scmd.trim(); //give an ack - we need to be polite, right ? web_interface->WebServer.send(200,"text/plain","Ok"); @@ -3088,43 +3086,6 @@ void handle_SSDP() } #endif -//URI Decoding function -void WEBINTERFACE_CLASS::urldecode( String & dst, const char *src) -{ - char a, b,c; - dst=""; - while (*src) { - if ((*src == '%') && - ((a = src[1]) && (b = src[2])) && - (isxdigit(a) && isxdigit(b))) { - if (a >= 'a') { - a -= 'a'-'A'; - } - if (a >= 'A') { - a -= ('A' - 10); - } else { - a -= '0'; - } - if (b >= 'a') { - b -= 'a'-'A'; - } - if (b >= 'A') { - b -= ('A' - 10); - } else { - b -= '0'; - } - dst+= char(16*a+b); - src+=3; - } else { - c = *src++; - if(c=='+') { - c=' '; - } - dst+= char(c); - } - } -} - //constructor WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port) { diff --git a/esp3d/webinterface.h b/esp3d/webinterface.h index 019d89f2..24aa5d09 100644 --- a/esp3d/webinterface.h +++ b/esp3d/webinterface.h @@ -43,7 +43,6 @@ public: ~WEBINTERFACE_CLASS(); ESP8266WebServer WebServer; File fsUploadFile; - void urldecode( String & dst, const char *src); bool isSSIDValid(const char * ssid); bool isPasswordValid(const char * password); bool isAdminPasswordValid(const char * password);