Files
Alex Alvarado f6a075e641 Cleanup
2022-05-17 12:10:23 +02:00

177 lines
7.8 KiB
C++

/* 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 "<html><h3>Error 500</h3><p>Internal server error</p></html>"
String compiler(String input)
{
input.replace("<!--Compiler1-->", "<h1>Compilation done</h1>");
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("<!--Compiler1-->", &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", "<html><meta charset='UTF-8'><head><link href='bootstrap.min.css' rel='stylesheet' media='screen'><link rel='stylesheet' href='sweetalert2.min.css'>"
// "<script src='jquery-1.9.1.min.js'><script src='bootstrap.min.js'></script></script><script src='sweetalert2.min.js'></script></head><body><script>"
// "Swal.fire({title: 'Error!',"
// " text: 'Error 500 Internal Server Error',"
// with " icon: 'error',"
// " confirmButtonText: 'Cerrar'}).then((result) => {"
// "if (result.isConfirmed){"
// "window.location = '/';"
// "};"
// "})"
// "</script><body></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", "<html><meta charset='UTF-8'><head><link href='bootstrap.min.css' rel='stylesheet' media='screen'><link rel='stylesheet' href='sweetalert2.min.css'>"
// "<script src='jquery-1.9.1.min.js'><script src='bootstrap.min.js'></script></script><script src='sweetalert2.min.js'></script></head><body><script>"
// "Swal.fire({title: 'Error!',"
// " text: 'Error 500 Internal Server Error',"
// " icon: 'error',"
// " confirmButtonText: 'Cerrar'}).then((result) => {"
// "if (result.isConfirmed){"
// "window.location = '/';"
// "};"
// "})"
// "</script><body></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");
}