khoih-prog / ESPAsync_WiFiManager

This is an ESP32 (including ESP32-S2 and ESP32-C3) / ESP8266 WiFi Connection Manager, using ESPAsyncWebServer, with fallback web configuration portal. Use this library for configuring ESP32, ESP8266 modules' WiFi, etc. Credentials at runtime. You can also specify static DNS servers, personalized HostName, fixed or random AP WiFi channel. With examples supporting ArduinoJson 6.0.0+ as well as 5.13.5- . Using AsyncDNSServer instead of DNSServer now.
MIT License
290 stars 73 forks source link

WiFiManager works only on port 80 #75

Closed deanjott closed 2 years ago

deanjott commented 2 years ago

Symptom: Taking for example the code in Async_ConfigOnSwitch.ino you will find

define HTTP_PORT 80

If any port other than 80 is used, the captive portal fails to connect.

Reproduce: Using the example code, change HTTP_PORT to 81, Activate the captive port by pressing the button. Attempt to connect to http://192.168.4.1:81

Cause: The code in ESPAsync_WiFiManager-Impl.h has a method "bool ESPAsync_WiFiManager::isIp(String str)" which is called from "bool ESPAsync_WiFiManager::captivePortal(AsyncWebServerRequest *request)" The "isIp" method parses the URL and if anything other than numbers and '.' character are found then the rewrite rule in "captivePortal" will be executed to redirect the request to the captive portal IP address but without the port number because "isIp" returns false while parsing something like "http://192.168.4.1:8080" due to the ':' character.

Suggested Remedy: The "isIp" method should be adjusted as follows: Old: if (c != '.' && (c < '0' || c > '9')) New: if (c != '.' && c != ':' && (c < '0' || c > '9'))

The suggested remedy was tested locally and found to correct the issue.

This issue would exist regardless of platform or version however for the sake of including the required info: Arduino IDE 1.8.15 ESP32 Core Version ?? OS: Windows 7 Ultimate 64 bit

khoih-prog commented 2 years ago

Hi @deanjott

Thanks for your bug report and the issue has been fixed by ESPAsync_WiFiManager releases v1.9.7 which has just been published.

Your contribution has been noted in Contributions and Thanks


Releases v1.9.7

  1. Fix bug to permit using HTTP port different from 80. Check WiFiManager works only on port 80 #75

PS:

Even this the real bug, the actual problem is a little bit different