Added dns forward to configuration web page.

This commit is contained in:
Holger Weber
2026-02-22 23:01:38 +01:00
parent 870456c17b
commit f862672a81

View File

@@ -1,14 +1,24 @@
#include "EggDuino.h"
#include <ArduinoJson.h>
#include <DNSServer.h>
#include <string.h>
namespace
{
const char *kConfigPath = "/config.json";
const size_t kConfigJsonCapacity = 4096;
const byte kDnsPort = 53;
WebServer server(80);
DNSServer dnsServer;
bool configStoreReady = false;
bool apModeActive = false;
void redirectToRoot()
{
server.sendHeader("Location", String("http://") + WiFi.softAPIP().toString() + "/", true);
server.send(302, "text/plain", "");
}
bool isIntType(const ConfigParameter &param)
{
@@ -253,6 +263,11 @@ async function pollLogs() {
void handleNotFound()
{
if (apModeActive)
{
redirectToRoot();
return;
}
if (server.uri().startsWith("/api/"))
{
server.send(404, "text/plain", "API endpoint not found");
@@ -483,6 +498,8 @@ void startWebInterface()
{
initConfigStore();
bool staConnected = false;
apModeActive = false;
dnsServer.stop();
if (!g_sWifiSsid.isEmpty())
{
@@ -510,6 +527,8 @@ void startWebInterface()
WiFi.mode(WIFI_AP);
if (WiFi.softAP("EggDuino"))
{
apModeActive = true;
dnsServer.start(kDnsPort, "*", WiFi.softAPIP());
Serial.println(String("AP aktiv: EggDuino / http://") + WiFi.softAPIP().toString());
}
else
@@ -522,11 +541,21 @@ void startWebInterface()
server.on("/api/config", HTTP_GET, handleGetConfig);
server.on("/api/config", HTTP_POST, handlePostConfig);
server.on("/api/logs", HTTP_GET, handleGetLogs);
server.on("/generate_204", HTTP_GET, redirectToRoot);
server.on("/gen_204", HTTP_GET, redirectToRoot);
server.on("/hotspot-detect.html", HTTP_GET, redirectToRoot);
server.on("/connecttest.txt", HTTP_GET, redirectToRoot);
server.on("/ncsi.txt", HTTP_GET, redirectToRoot);
server.on("/fwlink", HTTP_GET, redirectToRoot);
server.onNotFound(handleNotFound);
server.begin();
}
void handleWebInterface()
{
if (apModeActive)
{
dnsServer.processNextRequest();
}
server.handleClient();
}