Configured HTTP server
This commit is contained in:
188
include/Server.hpp
Normal file
188
include/Server.hpp
Normal file
@ -0,0 +1,188 @@
|
||||
/* 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");
|
||||
// server.serveStatic("/bootstrap-responsive.min.css", SPIFFS, "/bootstrap-responsive.min.css").setDefaultFile("bootstrap-responsive.min.css");
|
||||
// server.serveStatic("/jquery.easy-pie-chart.css", SPIFFS, "/jquery.easy-pie-chart.css").setDefaultFile("jquery.easy-pie-chart.css");
|
||||
// server.serveStatic("/bootstrap.min.js", SPIFFS, "/bootstrap.min.js").setDefaultFile("bootstrap.min.js");
|
||||
// server.serveStatic("/jquery-1.9.1.min.js", SPIFFS, "/jquery-1.9.1.min.js").setDefaultFile("jquery-1.9.1.min.js");
|
||||
// server.serveStatic("/jquery.easy-pie-chart.js", SPIFFS, "/jquery.easy-pie-chart.js").setDefaultFile("jquery.easy-pie-chart.js");
|
||||
// server.serveStatic("/modernizr.min.js", SPIFFS, "/modernizr.min.js").setDefaultFile("modernizr.min.js");
|
||||
// server.serveStatic("/sweetalert2.min.css", SPIFFS, "/sweetalert2.min.css").setDefaultFile("sweetalert2.min.css");
|
||||
// server.serveStatic("/sweetalert2.min.js", SPIFFS, "/sweetalert2.min.js").setDefaultFile("sweetalert2.min.js");
|
||||
// server.serveStatic("/scripts.js", SPIFFS, "/scripts.js").setDefaultFile("scripts.js");
|
||||
// server.serveStatic("/glyphicons-halflings.png", SPIFFS, "/glyphicons-halflings.png").setDefaultFile("glyphicons-halflings.png");
|
||||
// server.serveStatic("/glyphicons-halflings-white.png", SPIFFS, "/glyphicons-halflings-white.png").setDefaultFile("glyphicons-halflings-white.png");
|
||||
// server.serveStatic("/logo.png", SPIFFS, "/logo.png").setDefaultFile("logo.png");
|
||||
|
||||
/**********************************************/
|
||||
// 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");
|
||||
}
|
||||
Reference in New Issue
Block a user