Fake Captive Portal
Eine Kollegin hatte mir ihre Karte als „Miss Gently - Holistische Detective Agency“ in die Hand gedrückt. Da musste ich ihr doch gleich eine Webseite machen, einen WiFi-Accesss Point und dahinter natürlich Werbung für sie. Das ganze mit einem ESP8266.
Mit dem ESP8266WebServer, WiFiClient und ESP8266WiFi sowie DNSServer konnte ich einen AccessPoint mit Webserver und Anzeige von ein paar Informationen im 'CaptivePortal' erreichen. Der Aufruf irgendwelcher http-Seiten wurde per FakeDNS auf eine zweite lokale Seite umgelenkt. Leider kann man das wohl bei https nicht machen.
Ich fragte mittels 'server.on(„/“' bzw. 'server.onNotFound' die Standards ab, aber was, wenn man z.B. „http://hitze2019.ddnss.de/wohnung.php“ eingibt? In der Methode, die bei 'onNotFound' aufgerufen wird, mache ich dann weitere Unterscheidungen über die übergeben URL, indem ich sie mittels 'String url = server.uri();' abfrage. Da ist dann sowas drin, wie 'if (url == „/generate_204“ || url == „/hotspot-detect.html“) {'
Nächstes Problem war, wie man denn Bilder einbinden kann. Im Sketchbook-Speicherort (siehe Einstellungen Arduino - /Users/user/Documents/Arduino), einen Ordner 'tools' anlegen. Dort die entdeckten source von https://github.com/esp8266/arduino-esp8266fs-plugin/releases hineinlegen. In dem Ordner, wo der Sketch liegt, einen Ordner 'Data' anlegen und dort die kleine Dateien reinlegen. Dann in Arduino unter Werkzeuge→ESP8266 Sketch Data Upload„ die Dateien hochladen.
Um die Client Informationen zu bekommen, habe ich es mit den Zeilen von der Webseite probiert. https://www.esp8266.com/viewtopic.php?f=32&t=8329&start=4
Erst die Zeile korrigieren hat geholfen: IPaddress = (ip_addr *)&stat_info→ip;