first seperation of web server

This commit is contained in:
Matthew Frost 2023-06-13 21:11:23 +02:00
parent c5fc4ba15e
commit 6f74811f39
3 changed files with 99 additions and 31 deletions

View file

@ -28,6 +28,9 @@
#ifdef WEB_OTA_UPDATE #ifdef WEB_OTA_UPDATE
#include <AsyncElegantOTA.h> #include <AsyncElegantOTA.h>
#endif #endif
#include "mainwebserver.h"
#endif #endif
#ifdef BUZZER #ifdef BUZZER

95
include/mainwebserver.h Normal file
View file

@ -0,0 +1,95 @@
#ifndef mainwebserver_h
#define mainwebserver_h
#include "Arduino.h"
#include "stdlib_noniso.h"
#include "WiFi.h"
#include "AsyncTCP.h"
#include "Update.h"
#include "esp_int_wdt.h"
#include "esp_task_wdt.h"
#include "ESPAsyncWebServer.h"
#include "SPIFFS.h"
#include "hardware.h"
class MainWebServerClass{
public:
void begin(AsyncWebServer *server, const char* username = "", const char* password = ""){
_server = server;
if(strlen(username) > 0){
_authRequired = true;
_username = username;
_password = password;
}else{
_authRequired = false;
_username = "";
_password = "";
}
_server->on("/test/identity", HTTP_GET, [&](AsyncWebServerRequest *request){
if(_authRequired){
if(!request->authenticate(_username.c_str(), _password.c_str())){
return request->requestAuthentication();
}
}
request->send(200, "application/json");
});
_server->on("/", HTTP_GET, [&](AsyncWebServerRequest *request){
if(_authRequired){
if(!request->authenticate(_username.c_str(), _password.c_str())){
return request->requestAuthentication();
}
}
request->send(SPIFFS, "/index.html", String(), false, processor);
});
_server->onNotFound([&](AsyncWebServerRequest *request){
request->send(200, "application/json", "{\"msg\":\"The content you are looking for was not found\"}");
});
}
// deprecated, keeping for backward compatibility
void loop() {
}
private:
AsyncWebServer *_server;
String _username = "";
String _password = "";
bool _authRequired = false;
static String outputState(int output){
if(digitalRead(output)){
return "checked";
}
else {
return "";
}
}
// Replaces placeholder with button section in your web page
static String processor(const String& var){
//Serial.println(var);
if(var == "BUTTONPLACEHOLDER"){
String buttons = "";
#ifdef RELAY1
buttons += "<h4>Output - Relay 1 </h4><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"relay1\" " + MainWebServerClass::outputState(RELAY1_PIN) + "><span class=\"slider\"></span></label>";
#endif
return buttons;
}
return String();
}
};
MainWebServerClass MainWebServer;
#endif

View file

@ -96,29 +96,7 @@ void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){
#endif #endif
#ifdef WEB_SERVER #ifdef WEB_SERVER
String outputState(int output){
if(digitalRead(output)){
return "checked";
}
else {
return "";
}
}
// Replaces placeholder with button section in your web page
String processor(const String& var){
//Serial.println(var);
if(var == "BUTTONPLACEHOLDER"){
String buttons = "";
#ifdef RELAY1
buttons += "<h4>Output - Relay 1 </h4><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"relay1\" " + outputState(RELAY1_PIN) + "><span class=\"slider\"></span></label>";
#endif
return buttons;
}
return String();
}
#ifdef LOCAL_ACL #ifdef LOCAL_ACL
#ifdef LOCAL_ACL_API #ifdef LOCAL_ACL_API
@ -331,15 +309,6 @@ void setup() {
#ifdef WEB_SERVER #ifdef WEB_SERVER
// Route for root / web page // Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
if(!request->authenticate(http_username, http_password))
return request->requestAuthentication();
request->send(SPIFFS, "/index.html", String(), false, processor);
});
server.onNotFound([](AsyncWebServerRequest *request){
request->send(200, "application/json", "{\"msg\":\"The content you are looking for was not found\"}");
});
#ifdef RELAY1 #ifdef RELAY1
@ -433,6 +402,7 @@ void setup() {
} }
}); });
MainWebServer.begin(&server, http_username, http_password);
#ifdef LOCAL_ACL #ifdef LOCAL_ACL