MQTT-Display-LaserCutter/include/web_server.h

51 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;