From b4014a0279ad6aef96e2c18cff9b9c8f5c2fd415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20=C3=96ster?= Date: Wed, 24 Sep 2025 18:29:55 +0300 Subject: [PATCH] Add configuration options for auth --- Software/src/communication/nvm/comm_nvm.cpp | 1 + .../src/devboard/webserver/settings_html.cpp | 29 +++++++++++++++++++ .../src/devboard/webserver/settings_html.h | 1 + Software/src/devboard/webserver/webserver.cpp | 8 +++-- Software/src/devboard/wifi/wifi.cpp | 1 + Software/src/devboard/wifi/wifi.h | 1 + 6 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Software/src/communication/nvm/comm_nvm.cpp b/Software/src/communication/nvm/comm_nvm.cpp index e30812ff..9456af16 100644 --- a/Software/src/communication/nvm/comm_nvm.cpp +++ b/Software/src/communication/nvm/comm_nvm.cpp @@ -172,6 +172,7 @@ void init_stored_settings() { ha_autodiscovery_enabled = settings.getBool("HADISC", false); mqtt_transmit_all_cellvoltages = settings.getBool("MQTTCELLV", false); custom_hostname = settings.getString("HOSTNAME").c_str(); + webserver_auth = settings.getBool("AUTHREQUIRED", false); static_IP_enabled = settings.getBool("STATICIP", false); static_local_IP1 = settings.getUInt("LOCALIP1", 192); diff --git a/Software/src/devboard/webserver/settings_html.cpp b/Software/src/devboard/webserver/settings_html.cpp index b5e6f813..90708032 100644 --- a/Software/src/devboard/webserver/settings_html.cpp +++ b/Software/src/devboard/webserver/settings_html.cpp @@ -291,6 +291,18 @@ String settings_processor(const String& var, BatteryEmulatorSettingsStore& setti return settings.getBool("CANFDASCAN") ? "checked" : ""; } + if (var == "AUTHREQUIRED") { + return settings.getBool("AUTHREQUIRED", webserver_auth) ? "checked" : ""; + } + + if (var == "AUTHNAME") { + return settings.getString("AUTHNAME", "Admin"); + } + + if (var == "AUTHPASSWORD") { + return settings.getString("AUTHPASSWORD", "Password"); + } + if (var == "WIFIAPENABLED") { return settings.getBool("WIFIAPENABLED", wifiap_enabled) ? "checked" : ""; } @@ -965,6 +977,11 @@ const char* getCANInterfaceName(CAN_Interface interface) { display: contents; } + form .if-authrequired { display: none; } + form[data-authrequired="true"] .if-authrequired { + display: contents; + } + form .if-mqtt { display: none; } form[data-mqttenabled="true"] .if-mqtt { display: contents; @@ -1222,6 +1239,17 @@ const char* getCANInterfaceName(CAN_Interface interface) {

Connectivity settings

+ + + +
+ + + + + +
+ @@ -1264,6 +1292,7 @@ const char* getCANInterfaceName(CAN_Interface interface) { .
+
diff --git a/Software/src/devboard/webserver/settings_html.h b/Software/src/devboard/webserver/settings_html.h index 227f2607..47ce0028 100644 --- a/Software/src/devboard/webserver/settings_html.h +++ b/Software/src/devboard/webserver/settings_html.h @@ -6,6 +6,7 @@ extern std::string ssid; extern std::string password; +extern bool webserver_auth; #include "../../communication/nvm/comm_nvm.h" diff --git a/Software/src/devboard/webserver/webserver.cpp b/Software/src/devboard/webserver/webserver.cpp index 9350652d..ec73e45b 100644 --- a/Software/src/devboard/webserver/webserver.cpp +++ b/Software/src/devboard/webserver/webserver.cpp @@ -23,8 +23,6 @@ extern std::string http_username; extern std::string http_password; -bool webserver_auth = false; - // Create AsyncWebServer object on port 80 AsyncWebServer server(80); @@ -397,7 +395,7 @@ void init_webserver() { "DBLBTR", "CNTCTRL", "CNTCTRLDBL", "PWMCNTCTRL", "PERBMSRESET", "SDLOGENABLED", "STATICIP", "REMBMSRESET", "EXTPRECHARGE", "USBENABLED", "CANLOGUSB", "WEBENABLED", "CANFDASCAN", "CANLOGSD", "WIFIAPENABLED", "MQTTENABLED", "NOINVDISC", "HADISC", "MQTTTOPICS", "MQTTCELLV", "INVICNT", - "GTWRHD", "DIGITALHVIL", "PERFPROFILE", "INTERLOCKREQ", "SOCESTIMATED", + "GTWRHD", "DIGITALHVIL", "PERFPROFILE", "INTERLOCKREQ", "SOCESTIMATED", "AUTHREQUIRED", }; // Handles the form POST from UI to save settings of the common image @@ -506,6 +504,10 @@ void init_webserver() { } else if (p->name() == "SUBNET4") { auto type = atoi(p->value().c_str()); settings.saveUInt("SUBNET4", type); + } else if (p->name() == "AUTHNAME") { + settings.saveString("AUTHNAME", p->value().c_str()); + } else if (p->name() == "AUTHPASSWORD") { + settings.saveString("AUTHPASSWORD", p->value().c_str()); } else if (p->name() == "APNAME") { settings.saveString("APNAME", p->value().c_str()); } else if (p->name() == "APPASSWORD") { diff --git a/Software/src/devboard/wifi/wifi.cpp b/Software/src/devboard/wifi/wifi.cpp index 9179f0e2..2f005d9e 100644 --- a/Software/src/devboard/wifi/wifi.cpp +++ b/Software/src/devboard/wifi/wifi.cpp @@ -6,6 +6,7 @@ bool wifi_enabled = true; bool wifiap_enabled = true; bool mdns_enabled = true; //If true, allows battery monitor te be found by .local address +bool webserver_auth = false; uint16_t wifi_channel = 0; std::string custom_hostname; //If not set, the default naming format 'esp32-XXXXXX' will be used diff --git a/Software/src/devboard/wifi/wifi.h b/Software/src/devboard/wifi/wifi.h index ed6a9a89..a35ee4de 100644 --- a/Software/src/devboard/wifi/wifi.h +++ b/Software/src/devboard/wifi/wifi.h @@ -10,6 +10,7 @@ extern uint16_t wifi_channel; extern std::string ssidAP; extern std::string passwordAP; extern std::string custom_hostname; +extern bool webserver_auth; void init_WiFi(); void wifi_monitor();