From 0e9baed3a4768ee226969259bfd84e04a568ee43 Mon Sep 17 00:00:00 2001 From: technyon Date: Fri, 29 Apr 2022 20:48:33 +0200 Subject: [PATCH] wifi webserver works again --- CMakeLists.txt | 26 ++- Network.cpp | 1 + WebCfgServer.cpp | 58 +++--- WebCfgServer.h | 5 +- .../src/EthernetServerImpl.cpp | 29 --- .../src/EthernetServerImpl.h | 15 -- .../AdvancedWebServer/AdvancedWebServer.ino | 2 +- .../examples/FSBrowser/FSBrowser.ino | 6 +- .../examples/FSBrowser/data/edit.htm.gz | Bin .../examples/FSBrowser/data/favicon.ico | Bin .../examples/FSBrowser/data/graphs.js.gz | Bin .../examples/FSBrowser/data/index.htm | 2 +- .../examples/HelloServer/HelloServer.ino | 2 +- .../HttpAdvancedAuth/HttpAdvancedAuth.ino | 2 +- .../examples/HttpBasicAuth/HttpBasicAuth.ino | 2 +- .../examples/PathArgServer/PathArgServer.ino | 2 +- .../examples/SDWebServer/SDWebServer.ino | 6 +- .../SDWebServer/SdRoot/edit/index.htm | 0 .../examples/SDWebServer/SdRoot/index.htm | 0 .../examples/SDWebServer/SdRoot/pins.png | Bin .../SimpleAuthentification.ino | 2 +- .../examples/WebUpdate/WebUpdate.ino | 2 +- .../keywords.txt | 0 .../library.properties | 0 lib/WebServer/src/EthClient.h | 22 +++ lib/WebServer/src/EthServer.h | 20 ++ .../src/HTTP_Method.h | 0 .../src/Parsing.cpp | 84 ++++---- .../src/Uri.h | 0 .../src/WebServer.cpp} | 182 ++++++++---------- .../src/WebServer.h} | 34 ++-- lib/WebServer/src/WifiEthClient.cpp | 77 ++++++++ lib/WebServer/src/WifiEthClient.h | 28 +++ lib/WebServer/src/WifiEthServer.cpp | 56 ++++++ lib/WebServer/src/WifiEthServer.h | 25 +++ .../src/detail/RequestHandler.h | 4 +- .../src/detail/RequestHandlersImpl.h | 12 +- .../src/detail/mimetable.cpp | 0 .../src/detail/mimetable.h | 0 .../src/uri/UriBraces.h | 0 .../src/uri/UriGlob.h | 0 .../src/uri/UriRegex.h | 0 lib/WiFiManager/WiFiManager.cpp | 7 +- .../examples/mqtt_auth/mqtt_auth.ino | 2 +- main.cpp | 4 +- webserver/AbstractWebServer.h | 24 --- webserver/EthWebServer.cpp | 58 ------ webserver/EthWebServer.h | 24 --- webserver/WifiWebServer.cpp | 57 ------ webserver/WifiWebServer.h | 24 --- 50 files changed, 440 insertions(+), 466 deletions(-) delete mode 100644 lib/EthernetWebServer/src/EthernetServerImpl.cpp delete mode 100644 lib/EthernetWebServer/src/EthernetServerImpl.h rename lib/{EthernetWebServer => WebServer}/examples/AdvancedWebServer/AdvancedWebServer.ino (99%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/FSBrowser.ino (97%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/edit.htm.gz (100%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/favicon.ico (100%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/graphs.js.gz (100%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/index.htm (97%) rename lib/{EthernetWebServer => WebServer}/examples/HelloServer/HelloServer.ino (98%) rename lib/{EthernetWebServer => WebServer}/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino (98%) rename lib/{EthernetWebServer => WebServer}/examples/HttpBasicAuth/HttpBasicAuth.ino (96%) rename lib/{EthernetWebServer => WebServer}/examples/PathArgServer/PathArgServer.ino (97%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SDWebServer.ino (97%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SdRoot/edit/index.htm (100%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SdRoot/index.htm (100%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SdRoot/pins.png (100%) rename lib/{EthernetWebServer => WebServer}/examples/SimpleAuthentification/SimpleAuthentification.ino (99%) rename lib/{EthernetWebServer => WebServer}/examples/WebUpdate/WebUpdate.ino (98%) rename lib/{EthernetWebServer => WebServer}/keywords.txt (100%) rename lib/{EthernetWebServer => WebServer}/library.properties (100%) create mode 100644 lib/WebServer/src/EthClient.h create mode 100644 lib/WebServer/src/EthServer.h rename lib/{EthernetWebServer => WebServer}/src/HTTP_Method.h (100%) rename lib/{EthernetWebServer => WebServer}/src/Parsing.cpp (89%) rename lib/{EthernetWebServer => WebServer}/src/Uri.h (100%) rename lib/{EthernetWebServer/src/EthernetWebServer.cpp => WebServer/src/WebServer.cpp} (77%) rename lib/{EthernetWebServer/src/EthernetWebServer.h => WebServer/src/WebServer.h} (91%) create mode 100644 lib/WebServer/src/WifiEthClient.cpp create mode 100644 lib/WebServer/src/WifiEthClient.h create mode 100644 lib/WebServer/src/WifiEthServer.cpp create mode 100644 lib/WebServer/src/WifiEthServer.h rename lib/{EthernetWebServer => WebServer}/src/detail/RequestHandler.h (68%) rename lib/{EthernetWebServer => WebServer}/src/detail/RequestHandlersImpl.h (88%) rename lib/{EthernetWebServer => WebServer}/src/detail/mimetable.cpp (100%) rename lib/{EthernetWebServer => WebServer}/src/detail/mimetable.h (100%) rename lib/{EthernetWebServer => WebServer}/src/uri/UriBraces.h (100%) rename lib/{EthernetWebServer => WebServer}/src/uri/UriGlob.h (100%) rename lib/{EthernetWebServer => WebServer}/src/uri/UriRegex.h (100%) delete mode 100644 webserver/AbstractWebServer.h delete mode 100644 webserver/EthWebServer.cpp delete mode 100644 webserver/EthWebServer.h delete mode 100644 webserver/WifiWebServer.cpp delete mode 100644 webserver/WifiWebServer.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f4da33..7f5c579 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,11 @@ set(ARDUINO_BOARD "ESP32 Dev Module [esp32.esp32]") project(nuki_hub CXX) +# ARDUHAL_LOG_LEVEL_NONE, define ARDUHAL_LOG_LEVEL_ERROR, define ARDUHAL_LOG_LEVEL_WARN, define ARDUHAL_LOG_LEVEL_INFO, +# define ARDUHAL_LOG_LEVEL_DEBUG, define ARDUHAL_LOG_LEVEL_VERBOSE + +set(LOG_LEVEL ARDUHAL_LOG_LEVEL_NONE) + include_directories(${PROJECT_NAME} PRIVATE lib/Crc16 @@ -12,10 +17,12 @@ include_directories(${PROJECT_NAME} lib/ESP32_BLE_Arduino-1.0.1/src lib/WiFiManager lib/pubsubclient/src - lib/EthernetWebServer/src + lib/WebServer/src ) file(GLOB SRCFILES +# "Lib/FreeRTOS/src/*.c" +# "Lib/FreeRTOS/src/*.cpp" Pins.h Network.cpp networkDevices/NetworkDevice.h @@ -28,9 +35,6 @@ file(GLOB SRCFILES PreferencesKeys.h SpiffsCookie.cpp Version.h - webserver/AbstractWebServer.h - webserver/EthWebServer.cpp - webserver/WifiWebServer.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.h lib/WiFiManager/WiFiManager.cpp @@ -47,8 +51,8 @@ file(GLOB_RECURSE SRCFILESREC lib/NimBLE-Arduino/src/*.c lib/NimBLE-Arduino/src/*.cpp lib/NimBLE-Arduino/src/*.h - lib/EthernetWebServer/src/*.cpp - lib/EthernetWebServer/src/*.h + lib/WebServer/src/*.cpp + lib/WebServer/src/*.h ) add_executable(${PROJECT_NAME} @@ -57,13 +61,19 @@ add_executable(${PROJECT_NAME} ${SRCFILESREC} ) -# Arduino.h is included in hello_world.cpp, so link with Arduino core +target_compile_definitions(${PROJECT_NAME} + PRIVATE + ARDUHAL_LOG_LEVEL=${LOG_LEVEL} + CORE_DEBUG_LEVEL=${LOG_LEVEL} + CONFIG_NIMBLE_CPP_LOG_LEVEL=0 + ) + target_link_arduino_libraries(${PROJECT_NAME} PRIVATE core WiFi Update - WebServer +# WebServer DNSServer Preferences SPIFFS diff --git a/Network.cpp b/Network.cpp index d21700b..882d8ac 100644 --- a/Network.cpp +++ b/Network.cpp @@ -1,4 +1,5 @@ #include "Network.h" +#include // https://github.com/tzapu/WiFiManager #include "Arduino.h" #include "MqttTopics.h" #include "PreferencesKeys.h" diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index a9aa5f6..8e940bf 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -1,10 +1,10 @@ #include "WebCfgServer.h" #include "PreferencesKeys.h" #include "Version.h" -#include "webserver/EthWebServer.h" +#include "WifiEthServer.h" WebCfgServer::WebCfgServer(NukiWrapper* nuki, Network* network, Preferences* preferences) -: _server(new EthWebServer(80)), +: _server(new WifiEthServer(80)), _nuki(nuki), _network(network), _preferences(preferences) @@ -26,43 +26,43 @@ WebCfgServer::WebCfgServer(NukiWrapper* nuki, Network* network, Preferences* pre void WebCfgServer::initialize() { - _server->on("/", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildHtml(response); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); }); - _server->on("/cred", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/cred", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildCredHtml(response); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); }); - _server->on("/wifi", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/wifi", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildConfigureWifiHtml(response); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); }); - _server->on("/wifimanager", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/wifimanager", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildConfirmHtml(response, "Restarting. Connect to ESP access point to reconfigure WiFi.", 0); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); waitAndProcess(true, 2000); _network->restartAndConfigureWifi(); }); - _server->on("/method=get", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/method=get", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String message = ""; bool restartEsp = processArgs(message); @@ -70,7 +70,7 @@ void WebCfgServer::initialize() { String response = ""; buildConfirmHtml(response, message); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); Serial.println(F("Restarting")); waitAndProcess(true, 1000); @@ -80,12 +80,12 @@ void WebCfgServer::initialize() { String response = ""; buildConfirmHtml(response, message, 3); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); waitAndProcess(false, 1000); } }); - _server->begin(); + _server.begin(); } bool WebCfgServer::processArgs(String& message) @@ -94,11 +94,11 @@ bool WebCfgServer::processArgs(String& message) bool clearMqttCredentials = false; bool clearCredentials = false; - int count = _server->args(); + int count = _server.args(); for(int index = 0; index < count; index++) { - String key = _server->argName(index); - String value = _server->arg(index); + String key = _server.argName(index); + String value = _server.arg(index); if(key == "MQTTSERVER") { @@ -215,7 +215,7 @@ void WebCfgServer::update() { if(!_enabled) return; - _server->handleClient(); + _server.handleClient(); } void WebCfgServer::buildHtml(String& response) @@ -399,7 +399,7 @@ void WebCfgServer::waitAndProcess(const bool blocking, const uint32_t duration) unsigned long timeout = millis() + duration; while(millis() < timeout) { - _server->handleClient(); + _server.handleClient(); if(blocking) { delay(10); diff --git a/WebCfgServer.h b/WebCfgServer.h index 49f6a03..5f86982 100644 --- a/WebCfgServer.h +++ b/WebCfgServer.h @@ -1,10 +1,9 @@ #pragma once #include -#include +#include #include "NukiWrapper.h" #include "Network.h" -#include "webserver/AbstractWebServer.h" enum class TokenType { @@ -43,7 +42,7 @@ private: void waitAndProcess(const bool blocking, const uint32_t duration); - AbstractWebServer* _server; + WebServer _server; NukiWrapper* _nuki; Network* _network; Preferences* _preferences; diff --git a/lib/EthernetWebServer/src/EthernetServerImpl.cpp b/lib/EthernetWebServer/src/EthernetServerImpl.cpp deleted file mode 100644 index 6b25a9d..0000000 --- a/lib/EthernetWebServer/src/EthernetServerImpl.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "EthernetServerImpl.h" - -EthernetServerImpl::EthernetServerImpl(IPAddress addr, int port) - : EthernetServer(port) -{} - -EthernetServerImpl::EthernetServerImpl(int port) - : EthernetServer(port) -{} - -void EthernetServerImpl::begin(uint16_t port) -{ - EthernetServer::begin(); -} - -void EthernetServerImpl::begin() -{ - EthernetServer::begin(); -} - -void EthernetServerImpl::close() -{ - -} - -int EthernetServerImpl::setNoDelay(bool nodelay) -{ - return 0; -} diff --git a/lib/EthernetWebServer/src/EthernetServerImpl.h b/lib/EthernetWebServer/src/EthernetServerImpl.h deleted file mode 100644 index 76ad3bf..0000000 --- a/lib/EthernetWebServer/src/EthernetServerImpl.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include - -class EthernetServerImpl : public EthernetServer -{ -public: - EthernetServerImpl(IPAddress addr, int port); - EthernetServerImpl(int port); - - void begin(); - void begin(uint16_t port); - void close(); - int setNoDelay(bool nodelay); -}; \ No newline at end of file diff --git a/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/lib/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino similarity index 99% rename from lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino rename to lib/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino index 22ae426..e8e8153 100644 --- a/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/lib/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -30,7 +30,7 @@ #include #include -#include +#include #include const char *ssid = "YourSSIDHere"; diff --git a/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino b/lib/WebServer/examples/FSBrowser/FSBrowser.ino similarity index 97% rename from lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino rename to lib/WebServer/examples/FSBrowser/FSBrowser.ino index 7c04a79..f33f5db 100644 --- a/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino +++ b/lib/WebServer/examples/FSBrowser/FSBrowser.ino @@ -1,7 +1,7 @@ /* - FSWebServer - Example EthernetWebServer with FS backend for esp8266/esp32 + FSWebServer - Example WebServer with FS backend for esp8266/esp32 Copyright (c) 2015 Hristo Gochkov. All rights reserved. - This file is part of the EthernetWebServer library for Arduino environment. + This file is part of the WebServer library for Arduino environment. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -24,7 +24,7 @@ */ #include #include -#include +#include #include #define FILESYSTEM SPIFFS diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz b/lib/WebServer/examples/FSBrowser/data/edit.htm.gz similarity index 100% rename from lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz rename to lib/WebServer/examples/FSBrowser/data/edit.htm.gz diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/favicon.ico b/lib/WebServer/examples/FSBrowser/data/favicon.ico similarity index 100% rename from lib/EthernetWebServer/examples/FSBrowser/data/favicon.ico rename to lib/WebServer/examples/FSBrowser/data/favicon.ico diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz b/lib/WebServer/examples/FSBrowser/data/graphs.js.gz similarity index 100% rename from lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz rename to lib/WebServer/examples/FSBrowser/data/graphs.js.gz diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/index.htm b/lib/WebServer/examples/FSBrowser/data/index.htm similarity index 97% rename from lib/EthernetWebServer/examples/FSBrowser/data/index.htm rename to lib/WebServer/examples/FSBrowser/data/index.htm index 7941860..9cb560c 100644 --- a/lib/EthernetWebServer/examples/FSBrowser/data/index.htm +++ b/lib/WebServer/examples/FSBrowser/data/index.htm @@ -1,7 +1,7 @@