51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
#pragma once
|
||
|
||
// =============================================================================
|
||
// web_server.h – HTTP-Webinterface für Statusanzeige und Konfiguration
|
||
// Projekt: MQTT-Display LaserCutter
|
||
//
|
||
// Basierend auf ESPAsyncWebServer (non-blocking, Task-safe).
|
||
//
|
||
// Routen:
|
||
// GET / – Statusseite (Session, Gesamtzeit, WLAN/MQTT-Status)
|
||
// GET /config – Konfigurationsformular (MQTT, Gratiszeit, Polarität)
|
||
// POST /config – Konfiguration speichern (NVS via SettingsManager)
|
||
// POST /reset – Gesamtzeit zurücksetzen (laserTracker.resetTotal())
|
||
// GET /update – OTA-Update-Seite (ElegantOTA)
|
||
// POST /update – Firmware-Upload (ElegantOTA)
|
||
//
|
||
// Verwendung:
|
||
// webServer.begin(); // einmalig in setup(), nach WiFi-Connect
|
||
// // kein loop() nötig – ESPAsyncWebServer ist vollständig async
|
||
// =============================================================================
|
||
|
||
#include <Arduino.h>
|
||
|
||
// Forward-Declarations: ESPAsyncWebServer.h nur in web_server.cpp einbinden
|
||
// (verhindert HTTP_GET/POST-Enum-Konflikt mit WiFiManager in main.cpp)
|
||
class AsyncWebServer;
|
||
class AsyncWebServerRequest;
|
||
|
||
class WebServerManager {
|
||
public:
|
||
WebServerManager();
|
||
|
||
// Routen registrieren und Server starten (einmalig in setup())
|
||
void begin();
|
||
|
||
private:
|
||
AsyncWebServer* _server; // PIMPL: Pointer, full type only in web_server.cpp
|
||
|
||
void registerRoutes();
|
||
|
||
// HTTP-Basic-Auth pruefen; gibt false zurueck und sendet 401 wenn nicht autorisiert
|
||
bool requireAuth(AsyncWebServerRequest* request);
|
||
|
||
// HTML-Seiten als Strings aufbauen
|
||
String buildStatusPage();
|
||
String buildConfigPage();
|
||
};
|
||
|
||
// Globale Instanz
|
||
extern WebServerManager webServer;
|