/* Instancia de AsyncWebServer */ #include "HttpHandler.cpp" #include "logger.cpp" AsyncWebServer server(80); StringDictionary dataset = StringDictionary(); CompilerDictionary compilers = CompilerDictionary(); PageProcessor mainPageCgi = PageProcessor("/index.html", &dataset); PageProcessor settingsPageCgi = PageProcessor("/config.html", &dataset); #define MIME_HTML "text/html" #define MIME_JSON "application/json" #define ERROR_500 "

Error 500

Internal server error

" String compiler(String input) { input.replace("", "

Compilation done

"); return input; } void RefreshDataset() { dataset.Set("&DeviceName&", id); dataset.Set("&APSSID&", nameap); dataset.Set("&APPASS&", passwordap); } void InitServer() { // Servir las dependencias estáticas server.serveStatic("/bootstrap.min.css", SPIFFS, "/bootstrap.min.css").setDefaultFile("bootstrap.min.css"); server.serveStatic("/style.css", SPIFFS, "/style.css").setDefaultFile("style.css"); /**********************************************/ // Inicializar los compiladores de texto para las páginas mainPageCgi.Compilers = &compilers; settingsPageCgi.Compilers = &compilers; compilers.Set("", &compiler); // Handler (server, "/", HTTP_GET); server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) { RefreshDataset(); request->send(200, MIME_HTML, mainPageCgi.Execute()); }); server.on("/config", HTTP_GET, [](AsyncWebServerRequest *request) { RefreshDataset(); request->send(200, MIME_HTML, settingsPageCgi.Execute()); }); /**********************************************/ // server.on("/configwifi", HTTP_GET, [](AsyncWebServerRequest *request){ // // Config // File file = SPIFFS.open(F("/configwifi.html"), "r"); // if (file){ // file.setTimeout(100); // String s = file.readString(); // file.close(); // // Atualiza el contenido al cargar // s.replace(F("#id#"), id); // s.replace(F("#ssid#"), ssid); // //sección ap // s.replace(F("#nameap#"), String(nameap)); // // Send data // request->send(200, "text/html", s); // }else{ // request->send(500, "text/html", "" // ""); // log(F("\nError: Config - ERROR leyendo el archivo")); // } // }); ///**********************************************/ // server.on("/configmqtt", HTTP_GET, [](AsyncWebServerRequest *request){ // // Config // File file = SPIFFS.open(F("/configmqtt.html"), "r"); // if (file){ // file.setTimeout(100); // String s = file.readString(); // file.close(); // // Atualiza el contenido al cargar // s.replace(F("#idMqtt#"), idMqtt); // s.replace(F("#mqttuser#"), mqttuser); // s.replace(F("#mqttserver#"), mqttserver); // // Send data // request->send(200, "text/html", s); // }else{ // request->send(500, "text/html", "" // ""); // log(F("\nError: Config - ERROR leyendo el archivo")); // } // }); /**********************************************/ server.on("/confwifiSave", HTTP_POST, [](AsyncWebServerRequest *request) { String response; StaticJsonDocument<300> doc; // Graba Configuración desde Config // Verifica número de campos recebidos // ESP32 envia 5 campos if (request->params() == 5){ String s; // ID if(request->hasArg("id")) s = request->arg("id"); s.trim(); if (s == ""){ s = deviceID(); } strlcpy(id, s.c_str(), sizeof(id)); // SSID if(request->hasArg("ssid")) s = request->arg("ssid"); s.trim(); if (s == ""){ s = ssid; } strlcpy(ssid, s.c_str(), sizeof(ssid)); // PW SSID if(request->hasArg("pw")) s = request->arg("pw"); s.trim(); if (s != ""){ // Actualiza contraseña strlcpy(pw, s.c_str(), sizeof(pw)); } // Nombre AP if(request->hasArg("nameap")) s = request->arg("nameap"); s.trim(); if (s != ""){ // Atualiza ssid ap strlcpy(nameap, s.c_str(), sizeof(nameap)); } // Contraseña AP if(request->hasArg("passwordap")) s = request->arg("passwordap"); s.trim(); if (s != ""){ // Atualiza contraseña ap strlcpy(passwordap, s.c_str(), sizeof(passwordap)); } // Graba configuracion if (Config::Save()){ request->send(200, "text/html", "Configuración WIFI guardada, se requiere reiniciar el Equipo"); }else{ request->send(500, "text/html", "ERROR salvando Configuración"); Logger::Log(Logger::ERROR, "/configSave: ERROR salvando Configuración"); } }else{ request->send(500, "text/html", "Error en parámetros WiFi"); } }); server.onNotFound([](AsyncWebServerRequest *request) { request->send(404, "text/html", "404 Not Found"); }); server.begin(); Logger::Log("Servidor HTTP Iniciado"); }