From 8caffd50b2ab812bb8c3fb619cca6f16ca6ad7af Mon Sep 17 00:00:00 2001 From: Jean Jacques Avril Date: Sun, 20 Mar 2022 16:46:21 +0100 Subject: [PATCH] settings api completed --- Notes.md | 3 +++ src/WebConsole.cpp | 40 +++++++++++++++++++++++++--------------- src/main.cpp | 1 - 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/Notes.md b/Notes.md index a2e11e9..2dd60bf 100644 --- a/Notes.md +++ b/Notes.md @@ -36,3 +36,6 @@ + Mode 0 - station; 1 - client 4C uint8 + AuthError Timeout (secs) 4D + OpenLock hold (secs) 4E +### 20.03.2022 ++ settings API implemented and tested ++ TODO: factory reset \ No newline at end of file diff --git a/src/WebConsole.cpp b/src/WebConsole.cpp index 1e54a2e..0268e2e 100644 --- a/src/WebConsole.cpp +++ b/src/WebConsole.cpp @@ -22,13 +22,13 @@ bool WebConsole::init(Config *config, userdb::UserDb *userdb) Serial.println(WiFi.softAPConfig(_config->ip, _config->gw, _config->subnet) ? "Ready" : "Failed!"); Serial.print("\t2. DNS config... "); Serial.println(_dnsServer->start(53, "*", _config->ip) ? "Ready" : "Failed!"); - Serial.print("\t3 AP setup SSID) + "\"..."); + Serial.print("\t3 AP setup SSID:\"" + String(_config->SSID) + "\"... "); if (strlen(_config->PASS) > 0) Serial.println(WiFi.softAP(_config->SSID, _config->PASS) ? "Ready" : "Failed!"); else Serial.println(WiFi.softAP(_config->SSID) ? "Ready" : "Failed!"); WiFi.hostname("Doorlock"); - Serial.println("Please connect via http://" +WiFi.softAPIP().toString()+"/"); + Serial.println("Please connect via http://" + WiFi.softAPIP().toString() + "/"); // Webserver Setup this->_server = new ESP8266WebServer(80); @@ -45,7 +45,7 @@ bool WebConsole::init(Config *config, userdb::UserDb *userdb) _server->on(UriBraces("/api/user/{}"), HTTPMethod::HTTP_GET, std::bind(&WebConsole::_getUser, this)); _server->on(UriBraces("/api/user/{}"), HTTPMethod::HTTP_PUT, std::bind(&WebConsole::_createUser, this)); _server->on(UriBraces("/api/user/{}"), HTTPMethod::HTTP_POST, std::bind(&WebConsole::_updateUser, this)); - _server->on(UriBraces("/api/config/{}"), std::bind(&WebConsole::_deleteUser, this)); + _server->on(UriBraces("/api/config"), std::bind(&WebConsole::_settings, this)); _server->serveStatic("/", LittleFS, "/s/"); _server->onNotFound(std::bind(&WebConsole::_handleUnknown, this)); return true; @@ -131,6 +131,8 @@ void WebConsole::_auth() void WebConsole::_settings() { _sendCORS(); + if (!_isAuth()) + return; String action = _server->arg("action"); if (action.equals("update")) { @@ -155,10 +157,10 @@ void WebConsole::_settings() sucess |= 0b00000010; } - if (_server->hasArg("IP")) + if (_server->hasArg("ip")) { IPAddress temp; - if (temp.fromString(_server->arg("IP"))) + if (temp.fromString(_server->arg("ip"))) { _config->ip = temp.v4(); sucess |= 0b00000100; @@ -166,10 +168,10 @@ void WebConsole::_settings() else error |= 0b00000100; } - if (_server->hasArg("SUBNET")) + if (_server->hasArg("subnet")) { IPAddress temp; - if (temp.fromString(_server->arg("SUBNET"))) + if (temp.fromString(_server->arg("subnet"))) { _config->subnet = temp.v4(); sucess |= 0b00001000; @@ -177,10 +179,10 @@ void WebConsole::_settings() else error |= 0b00001000; } - if (_server->hasArg("GW")) + if (_server->hasArg("gw")) { IPAddress temp; - if (temp.fromString(_server->arg("GW"))) + if (temp.fromString(_server->arg("gw"))) { _config->gw = temp.v4(); sucess |= 0b00010000; @@ -188,25 +190,25 @@ void WebConsole::_settings() else error |= 0b00010000; } - if (_server->hasArg("MODE")) + if (_server->hasArg("mode")) { - _config->mode = _server->arg("MODE").toInt(); + _config->mode = _server->arg("mode").toInt(); if (_config->mode >= 0 && _config->mode <= 1) sucess |= 0b00100000; else error |= 0b00100000; } - if (_server->hasArg("FAIL_TIMEOUT")) + if (_server->hasArg("fail_timeout")) { - _config->fail_timeout = _server->arg("FAIL_TIMEOUT").toInt(); + _config->fail_timeout = _server->arg("fail_timeout").toInt(); if (_config->fail_timeout >= 0 && _config->fail_timeout <= 250) sucess |= 0b01000000; else error |= 0b01000000; } - if (_server->hasArg("HOLD_TIME")) + if (_server->hasArg("hold_time")) { - _config->hold_time = _server->arg("HOLD_TIME").toInt(); + _config->hold_time = _server->arg("hold_time").toInt(); if (_config->hold_time > 0 && _config->hold_time <= 250) sucess |= 0b10000000; else @@ -222,7 +224,15 @@ void WebConsole::_settings() _config->loadBin(); _server->send(200, "text/json", "{\"status\":\"failed\", \"sucess\":\"" + String(sucess) + "\", \"error\":\"" + String(error) + "\"}"); } + else + _server->send(200, "text/json", "{\"status\":\"noting_todo\"}"); } + else if (action.equals("get")) + { + _server->send(200, "text/json", "{\"SSID\":\"" + String(_config->SSID) + "\", \"PASS\":\"" + String(_config->PASS) + "\", \"ip\":\"" + IPAddress(_config->ip).toString() + "\", \"subnet\":\"" + IPAddress(_config->subnet).toString() + "\", \"gw\":\"" + IPAddress(_config->gw).toString() + "\", \"fail_timeout\":\"" + String(_config->fail_timeout) + "\", \"hold_time\":\"" + String(_config->hold_time) + "\"}"); + } + else + _server->send(404, "text/plain", "unknown action"); } void WebConsole::_sendCORS() { diff --git a/src/main.cpp b/src/main.cpp index 525e2bb..fc710a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -34,7 +34,6 @@ void setup() rfid.begin(); web.attachRfid(&rfid); iface.begin(&keyboard); - config.print(); } void loop()