From 811bc1f6088b9208609f969333448e1eb2d1b92a Mon Sep 17 00:00:00 2001 From: Florian Date: Thu, 9 Nov 2023 20:22:14 -0600 Subject: [PATCH] [WM] Check input fields content before saving (#1795) Avoid entering nonvalid data into the input fields by checking their content, also hiding passwords, and making the relevant fields compulsory --- main/User_config.h | 2 +- main/main.ino | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/main/User_config.h b/main/User_config.h index 7440308..1b42e05 100644 --- a/main/User_config.h +++ b/main/User_config.h @@ -146,7 +146,7 @@ const byte mac[] = {0xDE, 0xED, 0xBA, 0xFE, 0x54, 0x95}; //W5100 ethernet shield /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ //MQTT Parameters definition #if defined(ESP8266) || defined(ESP32) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) -# define parameters_size 64 +# define parameters_size 65 # define mqtt_topic_max_size 150 # ifndef mqtt_max_packet_size # ifdef MQTT_HTTPS_FW_UPDATE diff --git a/main/main.ino b/main/main.ino index 19814bc..68ad8f7 100644 --- a/main/main.ino +++ b/main/main.ino @@ -224,11 +224,11 @@ void setupTLS(bool self_signed = false, uint8_t index = 0); //adding this to bypass the problem of the arduino builder issue 50 void callback(char* topic, byte* payload, unsigned int length); -char mqtt_user[parameters_size + 1] = MQTT_USER; // not compulsory only if your broker needs authentication -char mqtt_pass[parameters_size + 1] = MQTT_PASS; // not compulsory only if your broker needs authentication -char mqtt_server[parameters_size + 1] = MQTT_SERVER; +char mqtt_user[parameters_size] = MQTT_USER; // not compulsory only if your broker needs authentication +char mqtt_pass[parameters_size] = MQTT_PASS; // not compulsory only if your broker needs authentication +char mqtt_server[parameters_size] = MQTT_SERVER; char mqtt_port[6] = MQTT_PORT; -char ota_pass[parameters_size + 1] = gw_password; +char ota_pass[parameters_size] = gw_password; #ifdef USE_MAC_AS_GATEWAY_NAME # undef WifiManager_ssid # undef ota_hostname @@ -1713,15 +1713,15 @@ void setup_wifimanager(bool reset_settings) { // After connecting, parameter.getValue() will get you the configured value // id/name placeholder/prompt default length # ifndef WIFIMNG_HIDE_MQTT_CONFIG - WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, parameters_size); - WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6); - WiFiManagerParameter custom_mqtt_user("user", "mqtt user", mqtt_user, parameters_size); - WiFiManagerParameter custom_mqtt_pass("pass", "mqtt pass", mqtt_pass, parameters_size); - WiFiManagerParameter custom_mqtt_topic("topic", "mqtt base topic", mqtt_topic, mqtt_topic_max_size); + WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, parameters_size, " minlength='1' maxlength='64' required"); + WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6, " minlength='1' maxlength='5' required"); + WiFiManagerParameter custom_mqtt_user("user", "mqtt user", mqtt_user, parameters_size, " maxlength='64'"); + WiFiManagerParameter custom_mqtt_pass("pass", "mqtt pass", mqtt_pass, parameters_size, " input type='password' maxlength='64'"); + WiFiManagerParameter custom_mqtt_topic("topic", "mqtt base topic", mqtt_topic, mqtt_topic_max_size, " minlength='1' maxlength='64' required"); WiFiManagerParameter custom_mqtt_secure("secure", "mqtt secure", "1", 2, mqtt_secure ? "type=\"checkbox\" checked" : "type=\"checkbox\""); WiFiManagerParameter custom_mqtt_cert("cert", "
mqtt broker cert", mqtt_cert.c_str(), 4096); - WiFiManagerParameter custom_gateway_name("name", "gateway name", gateway_name, parameters_size); - WiFiManagerParameter custom_ota_pass("ota", "gateway password", ota_pass, parameters_size); + WiFiManagerParameter custom_gateway_name("name", "gateway name", gateway_name, parameters_size, " minlength='1' maxlength='64' required"); + WiFiManagerParameter custom_ota_pass("ota", "gateway password", ota_pass, parameters_size, " input type='password' minlength='8' maxlength='64' required"); # endif //WiFiManager //Local intialization. Once its business is done, there is no need to keep it around @@ -1818,7 +1818,7 @@ void setup_wifimanager(bool reset_settings) { strcpy(mqtt_user, custom_mqtt_user.getValue()); strcpy(mqtt_pass, custom_mqtt_pass.getValue()); strcpy(mqtt_topic, custom_mqtt_topic.getValue()); - if (mqtt_topic[strlen(mqtt_topic) - 1] != '/' && strlen(mqtt_topic) < parameters_size + 1) { + if (mqtt_topic[strlen(mqtt_topic) - 1] != '/' && strlen(mqtt_topic) < parameters_size) { strcat(mqtt_topic, "/"); }