From 31ab2b67d0120267ffc4c79bef118cb97bfb061d Mon Sep 17 00:00:00 2001 From: Shawn A Date: Thu, 14 Sep 2017 17:09:17 -0500 Subject: [PATCH] ability to disable captiveportal Sometimes the redirect to captive portal is unwanted or a nuisance, eg wehn using as a webserver etc. --- WiFiManager.cpp | 8 +++++++- WiFiManager.h | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 5e6fdc5..7b9ddb4 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -536,7 +536,7 @@ void WiFiManager::handleWifi(boolean scan) { String WiFiManager::getScanItemOut(){ String page; - + int n = WiFi.scanNetworks(); DEBUG_WM(F("Scan done")); if (n == 0) { @@ -987,6 +987,9 @@ void WiFiManager::handleNotFound() { */ boolean WiFiManager::captivePortal() { DEBUG_WM(server->hostHeader()); + + if(!_enableCaptivePortal) return true; // skip redirections + if (!isIp(server->hostHeader())) { DEBUG_WM(F("Request redirected to captive portal")); server->sendHeader("Location", String("http://") + toStringIp(server->client().localIP()), true); @@ -1034,6 +1037,9 @@ void WiFiManager::setShowStaticFields(boolean alwaysShow){ _sta_show_static_fields = alwaysShow; } +void WiFiManager::setCaptivePortalEnable(boolean enabled){ + _enableCaptivePortal = enabled; +} // HELPERS diff --git a/WiFiManager.h b/WiFiManager.h index 7535feb..0be462f 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -148,6 +148,8 @@ class WiFiManager //if true, always show static net inputs, IP, subnet, gateway, if false, only show when already set. void setShowStaticFields(boolean alwaysShow); + void setCaptivePortalEnable(boolean enabled); + private: std::unique_ptr dnsServer; std::unique_ptr server; @@ -175,6 +177,7 @@ class WiFiManager unsigned long _configPortalStart = 0; boolean _userpersistent = true; WiFiMode_t _usermode = WIFI_OFF; + boolean _enableCaptivePortal = true; IPAddress _ap_static_ip; IPAddress _ap_static_gw;