diff --git a/src/WebCfgServer.cpp b/src/WebCfgServer.cpp index 541d633..a0c972a 100644 --- a/src/WebCfgServer.cpp +++ b/src/WebCfgServer.cpp @@ -269,6 +269,18 @@ void WebCfgServer::initialize() { return buildMqttConfigHtml(request); } + else if (value == "mqttcaconfig") + { + return buildMqttSSLConfigHtml(request, 0); + } + else if (value == "mqttcrtconfig") + { + return buildMqttSSLConfigHtml(request, 1); + } + else if (value == "mqttkeyconfig") + { + return buildMqttSSLConfigHtml(request, 2); + } else if (value == "nukicfg") { return buildNukiConfigHtml(request); @@ -394,7 +406,14 @@ void WebCfgServer::initialize() { String message = ""; bool restart = processArgs(request, message); - return buildConfirmHtml(request, message, 3, true); + if(request->hasParam("mqttssl")) + { + return buildConfirmHtml(request, message, 3, true, "/get?page=mqttconfig"); + } + else + { + return buildConfirmHtml(request, message, 3, true); + } } else if (value == "savegpiocfg") { @@ -1098,7 +1117,7 @@ esp_err_t WebCfgServer::handleOtaUpload(PsychicRequest *request, const String& f } } -esp_err_t WebCfgServer::buildConfirmHtml(PsychicRequest *request, const String &message, uint32_t redirectDelay, bool redirect) +esp_err_t WebCfgServer::buildConfirmHtml(PsychicRequest *request, const String &message, uint32_t redirectDelay, bool redirect, String redirectTo) { PsychicStreamResponse response(request, "text/html"); response.beginSend(); @@ -1112,7 +1131,7 @@ esp_err_t WebCfgServer::buildConfirmHtml(PsychicRequest *request, const String & else { String delay(redirectDelay * 1000); - header = ""; + header = ""; } buildHtmlHeader(&response, header); response.print(message); @@ -3628,9 +3647,9 @@ esp_err_t WebCfgServer::buildMqttConfigHtml(PsychicRequest *request) { printCheckBox(&response, "OPENERCONT", "Set Nuki Opener Lock/Unlock action in Home Assistant to Continuous mode", _preferences->getBool(preference_opener_continuous_mode), ""); } - printTextarea(&response, "MQTTCA", "MQTT SSL CA Certificate (*, optional)", _preferences->getString(preference_mqtt_ca).c_str(), TLS_CA_MAX_SIZE, true, true); - printTextarea(&response, "MQTTCRT", "MQTT SSL Client Certificate (*, optional)", _preferences->getString(preference_mqtt_crt).c_str(), TLS_CERT_MAX_SIZE, true, true); - printTextarea(&response, "MQTTKEY", "MQTT SSL Client Key (*, optional)", _preferences->getString(preference_mqtt_key).c_str(), TLS_KEY_MAX_SIZE, true, true); + response.print("Set MQTT SSL CA Certificate"); + response.print("Set MQTT SSL Client Certificate"); + response.print("Set MQTT SSL Client Key"); printInputField(&response, "NETTIMEOUT", "MQTT Timeout until restart (seconds; -1 to disable)", _preferences->getInt(preference_network_timeout), 5, ""); printCheckBox(&response, "MQTTLOG", "Enable MQTT logging", _preferences->getBool(preference_mqtt_log_enabled), ""); printCheckBox(&response, "UPDATEMQTT", "Allow updating using MQTT", _preferences->getBool(preference_update_from_mqtt), ""); @@ -3649,6 +3668,37 @@ esp_err_t WebCfgServer::buildMqttConfigHtml(PsychicRequest *request) return response.endSend(); } +esp_err_t WebCfgServer::buildMqttSSLConfigHtml(PsychicRequest *request, int type) +{ + PsychicStreamResponse response(request, "text/html"); + response.beginSend(); + buildHtmlHeader(&response); + response.print("
"); + response.print(""); + response.print(""); + response.print("

MQTT SSL Configuration

"); + response.print(""); + + if (type == 0) + { + printTextarea(&response, "MQTTCA", "MQTT SSL CA Certificate (*, optional)", _preferences->getString(preference_mqtt_ca).c_str(), TLS_CA_MAX_SIZE, true, true); + } + else if (type == 1) + { + printTextarea(&response, "MQTTCRT", "MQTT SSL Client Certificate (*, optional)", _preferences->getString(preference_mqtt_crt).c_str(), TLS_CERT_MAX_SIZE, true, true); + } + else + { + printTextarea(&response, "MQTTKEY", "MQTT SSL Client Key (*, optional)", _preferences->getString(preference_mqtt_key).c_str(), TLS_KEY_MAX_SIZE, true, true); + } + response.print("
"); + response.print("
"); + response.print("
"); + response.print(""); + response.print(""); + return response.endSend(); +} + esp_err_t WebCfgServer::buildAdvancedConfigHtml(PsychicRequest *request) { PsychicStreamResponse response(request, "text/html"); diff --git a/src/WebCfgServer.h b/src/WebCfgServer.h index 6d23a46..68359e4 100644 --- a/src/WebCfgServer.h +++ b/src/WebCfgServer.h @@ -58,6 +58,7 @@ private: esp_err_t buildImportExportHtml(PsychicRequest *request); esp_err_t buildNetworkConfigHtml(PsychicRequest *request); esp_err_t buildMqttConfigHtml(PsychicRequest *request); + esp_err_t buildMqttSSLConfigHtml(PsychicRequest *request, int type=0); esp_err_t buildStatusHtml(PsychicRequest *request); esp_err_t buildAdvancedConfigHtml(PsychicRequest *request); esp_err_t buildNukiConfigHtml(PsychicRequest *request); @@ -100,7 +101,7 @@ private: String _confirmCode = "----"; esp_err_t buildSSIDListHtml(PsychicRequest *request); - esp_err_t buildConfirmHtml(PsychicRequest *request, const String &message, uint32_t redirectDelay = 5, bool redirect = false); + esp_err_t buildConfirmHtml(PsychicRequest *request, const String &message, uint32_t redirectDelay = 5, bool redirect = false, String redirectTo = "/"); esp_err_t buildOtaHtml(PsychicRequest *request, bool debug = false); esp_err_t sendCss(PsychicRequest *request); esp_err_t sendFavicon(PsychicRequest *request);