From e952f95b430b013f290ba308c5a3b451ebbfe754 Mon Sep 17 00:00:00 2001 From: Hermann Kraus Date: Sat, 22 Jun 2019 20:43:41 +0200 Subject: [PATCH] Add captive portal example from #228. (#241) * Add captive portal example from #228. * Add missing headers. * Update CaptivePortal.ino --- examples/CaptivePortal/CaptivePortal.ino | 42 ++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/CaptivePortal/CaptivePortal.ino diff --git a/examples/CaptivePortal/CaptivePortal.ino b/examples/CaptivePortal/CaptivePortal.ino new file mode 100644 index 0000000..cf3e13c --- /dev/null +++ b/examples/CaptivePortal/CaptivePortal.ino @@ -0,0 +1,42 @@ +#include +#include +#include +#include "ESPAsyncWebServer.h" + +DNSServer dnsServer; +AsyncWebServer server(80); + +class CaptiveRequestHandler : public AsyncWebHandler { +public: + CaptiveRequestHandler() {} + virtual ~CaptiveRequestHandler() {} + + bool canHandle(AsyncWebServerRequest *request){ + //request->addInterestingHeader("ANY"); + return true; + } + + void handleRequest(AsyncWebServerRequest *request) { + AsyncResponseStream *response = request->beginResponseStream("text/html"); + response->print("Captive Portal"); + response->print("

This is out captive portal front page.

"); + response->printf("

You were trying to reach: http://%s%s

", request->host().c_str(), request->url().c_str()); + response->printf("

Try opening this link instead

", WiFi.softAPIP().toString().c_str()); + response->print(""); + request->send(response); + } +}; + + +void setup(){ + //your other setup stuff... + WiFi.softAP("esp-captive"); + dnsServer.start(53, "*", WiFi.softAPIP()); + server.addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER);//only when requested from AP + //more handlers... + server.begin(); +} + +void loop(){ + dnsServer.processNextRequest(); +}