| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <DNSServer.h>
- #ifdef ESP32
- #include <WiFi.h>
- #include <AsyncTCP.h>
- #elif defined(ESP8266)
- #include <ESP8266WiFi.h>
- #include <ESPAsyncTCP.h>
- #endif
- #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("<!DOCTYPE html><html><head><title>Captive Portal</title></head><body>");
- response->print("<p>This is out captive portal front page.</p>");
- response->printf("<p>You were trying to reach: http://%s%s</p>", request->host().c_str(), request->url().c_str());
- response->printf("<p>Try opening <a href='http://%s'>this link</a> instead</p>", WiFi.softAPIP().toString().c_str());
- response->print("</body></html>");
- 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();
- }
|