mirror of
https://github.com/wled/WLED.git
synced 2025-07-24 19:26:40 +00:00
First version of captive portal
This commit is contained in:
parent
4a6755c28a
commit
a3e28d3c66
@ -180,6 +180,7 @@ void beginStrip()
|
|||||||
void initAP(){
|
void initAP(){
|
||||||
bool set = apSSID[0];
|
bool set = apSSID[0];
|
||||||
if (!set) strcpy(apSSID,"WLED-AP");
|
if (!set) strcpy(apSSID,"WLED-AP");
|
||||||
|
WiFi.softAPConfig(IPAddress(4, 3, 2, 1), IPAddress(4, 3, 2, 1), IPAddress(255,255,255,0));
|
||||||
WiFi.softAP(apSSID, apPass, apChannel, apHide);
|
WiFi.softAP(apSSID, apPass, apChannel, apHide);
|
||||||
if (!set) apSSID[0] = 0;
|
if (!set) apSSID[0] = 0;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,33 @@
|
|||||||
* Server page definitions
|
* Server page definitions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//Is this an IP?
|
||||||
|
bool isIp(String str) {
|
||||||
|
for (size_t i = 0; i < str.length(); i++) {
|
||||||
|
int c = str.charAt(i);
|
||||||
|
if (c != '.' && (c < '0' || c > '9')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool captivePortal(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
String hostH;
|
||||||
|
if (!request->hasHeader("Host")) return false;
|
||||||
|
hostH = request->getHeader("Host")->value();
|
||||||
|
|
||||||
|
if (!isIp(hostH) && hostH.indexOf("wled.me") < 0 && hostH.indexOf(cmDNS) < 0) {
|
||||||
|
DEBUG_PRINTLN("Captive portal");
|
||||||
|
AsyncWebServerResponse *response = request->beginResponse(302);
|
||||||
|
response->addHeader("Location", "http://local.wled.me");
|
||||||
|
request->send(response);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void initServer()
|
void initServer()
|
||||||
{
|
{
|
||||||
//CORS compatiblity
|
//CORS compatiblity
|
||||||
@ -161,13 +188,20 @@ void initServer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||||
|
if (captivePortal(request)) return;
|
||||||
serveIndexOrWelcome(request);
|
serveIndexOrWelcome(request);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*server.on("/generate_204", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||||
|
//if (captivePortal(request)) return;
|
||||||
|
serveIndexOrWelcome(request);
|
||||||
|
});*/
|
||||||
|
|
||||||
//called when the url is not defined here, ajax-in; get-settings
|
//called when the url is not defined here, ajax-in; get-settings
|
||||||
server.onNotFound([](AsyncWebServerRequest *request){
|
server.onNotFound([](AsyncWebServerRequest *request){
|
||||||
DEBUG_PRINTLN("Not-Found HTTP call:");
|
DEBUG_PRINTLN("Not-Found HTTP call:");
|
||||||
DEBUG_PRINTLN("URI: " + request->url());
|
DEBUG_PRINTLN("URI: " + request->url());
|
||||||
|
if (captivePortal(request)) return;
|
||||||
|
|
||||||
//make API CORS compatible
|
//make API CORS compatible
|
||||||
if (request->method() == HTTP_OPTIONS)
|
if (request->method() == HTTP_OPTIONS)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user