From b7e68c485625c079931123a6b79147375cdcd39c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Tue, 21 Nov 2017 23:00:05 +0100 Subject: [PATCH] Simplify and fix web auth code (#284) --- code/espurna/data/index.html.gz | Bin 69165 -> 69027 bytes code/espurna/static/index.html.gz.h | 5851 +++++++++++++-------------- code/espurna/web.h | 30 +- code/espurna/web.ino | 72 +- code/html/custom.js | 29 +- code/html/index.html | 4 - 6 files changed, 2955 insertions(+), 3031 deletions(-) diff --git a/code/espurna/data/index.html.gz b/code/espurna/data/index.html.gz index 72267476d38ac1fdea2c622b1d7b3112535b362f..28e30d2393a44ace6e576359ee1700d3089bd697 100644 GIT binary patch delta 52851 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 delta 53107 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 o2TVdq9g5paeq;&$!{;+9_final || _cb_on_fragments) && - !_terminate_string && info->index == 0 && info->len == len) { + if ((info->final || _cb_on_fragments) + && !_terminate_string + && info->index == 0 + && info->len == len) { + /* The whole message is in a single frame and we got all of it's data therefore we can parse it without copying the data first.*/ _cb(client, data, len); + } else { + if (info->len > MAX_WS_MSG_SIZE) return; + /* Check if previous fragment was discarded because it was too long. */ - if (!_cb_on_fragments && info->num > 0 && !_buffer) return; + //if (!_cb_on_fragments && info->num > 0 && !_buffer) return; + + if (!_buffer) _buffer = new std::vector(); - if (!_buffer) { - _buffer = new std::vector(); - } if (info->index == 0) { //New frame => preallocate memory if (_cb_on_fragments) { @@ -59,16 +64,17 @@ class WebSocketIncommingBuffer { } } } + //assert(_buffer->size() == info->index); _buffer->insert(_buffer->end(), data, data+len); - if (info->index + len == info->len && - (info->final || _cb_on_fragments)) { + if (info->index + len == info->len + && (info->final || _cb_on_fragments)) { + // Frame/message complete - if (_terminate_string) { - _buffer->push_back(0); - } + if (_terminate_string) _buffer->push_back(0); _cb(client, _buffer->data(), _buffer->size()); _buffer->clear(); + } } } diff --git a/code/espurna/web.ino b/code/espurna/web.ino index e54a99ac..46e33a7b 100644 --- a/code/espurna/web.ino +++ b/code/espurna/web.ino @@ -36,11 +36,6 @@ Ticker _web_defer; // ----------------------------------------------------------------------------- AsyncWebSocket _ws("/ws"); -typedef struct { - IPAddress ip; - unsigned long timestamp = 0; -} ws_ticket_t; -ws_ticket_t _ticket[WS_BUFFER_SIZE]; // ----------------------------------------------------------------------------- @@ -70,6 +65,8 @@ void _wsMQTTCallback(unsigned int type, const char * topic, const char * payload void _wsParse(AsyncWebSocketClient *client, uint8_t * payload, size_t length) { + //DEBUG_MSG_P(PSTR("[WEBSOCKET] Parsing: %s\n"), length ? (char*) payload : ""); + // Get client ID uint32_t client_id = client->id(); @@ -389,6 +386,7 @@ void _wsParse(AsyncWebSocketClient *client, uint8_t * payload, size_t length) { // Save settings if (save) { + wsConfigure(); saveSettings(); wifiConfigure(); otaConfigure(); @@ -706,35 +704,9 @@ void _wsStart(uint32_t client_id) { } -bool _wsAuth(AsyncWebSocketClient * client) { - - IPAddress ip = client->remoteIP(); - unsigned long now = millis(); - unsigned short index = 0; - - for (index = 0; index < WS_BUFFER_SIZE; index++) { - if ((_ticket[index].ip == ip) && (now - _ticket[index].timestamp < WS_TIMEOUT)) break; - } - - if (index == WS_BUFFER_SIZE) { - DEBUG_MSG_P(PSTR("[WEBSOCKET] Validation check failed\n")); - wsSend_P(client->id(), PSTR("{\"message\": 10}")); - return false; - } - - return true; - -} - void _wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){ if (type == WS_EVT_CONNECT) { - - // Authorize - #ifndef NOWSAUTH - if (!_wsAuth(client)) return; - #endif - IPAddress ip = client->remoteIP(); DEBUG_MSG_P(PSTR("[WEBSOCKET] #%u connected, ip: %d.%d.%d.%d, url: %s\n"), client->id(), ip[0], ip[1], ip[2], ip[3], server->url()); _wsStart(client->id()); @@ -755,6 +727,7 @@ void _wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTy DEBUG_MSG_P(PSTR("[WEBSOCKET] #%u pong(%u): %s\n"), client->id(), len, len ? (char*) data : ""); } else if(type == WS_EVT_DATA) { + //DEBUG_MSG_P(PSTR("[WEBSOCKET] #%u data(%u): %s\n"), client->id(), len, len ? (char*) data : ""); WebSocketIncommingBuffer *buffer = (WebSocketIncommingBuffer *)client->_tempObject; AwsFrameInfo * info = (AwsFrameInfo*)arg; buffer->data_event(client, info, data, len); @@ -794,11 +767,15 @@ void wsSend_P(uint32_t client_id, PGM_P payload) { _ws.text(client_id, buffer); } +void wsConfigure() { + _ws.setAuthentication(WEB_USERNAME, (const char *) getSetting("adminPass", ADMIN_PASS).c_str()); +} + void wsSetup() { _ws.onEvent(_wsEvent); - mqttRegister(_wsMQTTCallback); + wsConfigure(); _server->addHandler(&_ws); - _server->on("/auth", HTTP_GET, _onAuth); + mqttRegister(_wsMQTTCallback); } // ----------------------------------------------------------------------------- @@ -884,7 +861,6 @@ ArRequestHandlerFunction _bindAPI(unsigned int apiID) { void _onAPIs(AsyncWebServerRequest *request) { _webLog(request); - if (!_authAPI(request)) return; bool asJson = _asJson(request); @@ -911,7 +887,6 @@ void _onAPIs(AsyncWebServerRequest *request) { void _onRPC(AsyncWebServerRequest *request) { _webLog(request); - if (!_authAPI(request)) return; //bool asJson = _asJson(request); @@ -978,29 +953,6 @@ bool _authenticate(AsyncWebServerRequest *request) { return request->authenticate(WEB_USERNAME, httpPassword); } -void _onAuth(AsyncWebServerRequest *request) { - - _webLog(request); - if (!_authenticate(request)) return request->requestAuthentication(); - - IPAddress ip = request->client()->remoteIP(); - unsigned long now = millis(); - unsigned short index; - for (index = 0; index < WS_BUFFER_SIZE; index++) { - if (_ticket[index].ip == ip) break; - if (_ticket[index].timestamp == 0) break; - if (now - _ticket[index].timestamp > WS_TIMEOUT) break; - } - if (index == WS_BUFFER_SIZE) { - request->send(429); - } else { - _ticket[index].ip = ip; - _ticket[index].timestamp = now; - request->send(204); - } - -} - void _onGetConfig(AsyncWebServerRequest *request) { _webLog(request); @@ -1031,6 +983,7 @@ void _onGetConfig(AsyncWebServerRequest *request) { void _onHome(AsyncWebServerRequest *request) { _webLog(request); + if (!_authenticate(request)) return request->requestAuthentication(); if (request->header("If-Modified-Since").equals(_last_modified)) { @@ -1129,6 +1082,9 @@ int _onCertificate(void * arg, const char *filename, uint8_t **buf) { void _onUpgrade(AsyncWebServerRequest *request) { + _webLog(request); + if (!_authenticate(request)) return request->requestAuthentication(); + char buffer[10]; if (!Update.hasError()) { sprintf_P(buffer, PSTR("OK")); diff --git a/code/html/custom.js b/code/html/custom.js index f5cd05e7..1f14e7a9 100644 --- a/code/html/custom.js +++ b/code/html/custom.js @@ -90,24 +90,6 @@ function generateAPIKey() { return false; } -function forgetCredentials() { - $.ajax({ - 'method': 'GET', - 'url': '/', - 'async': false, - 'username': "logmeout", - 'password': "123456", - 'headers': { "Authorization": "Basic xxx" } - }).done(function(data) { - return false; - // If we don't get an error, we actually got an error as we expect an 401! - }).fail(function(){ - // We expect to get an 401 Unauthorized error! In this case we are successfully - // logged out and we redirect the user. - return true; - }); -} - function getJson(str) { try { return JSON.parse(str); @@ -625,14 +607,12 @@ function processData(data) { password = data.webMode == 1; $("#layout").toggle(data.webMode == 0); $("#password").toggle(data.webMode == 1); - $("#credentials").hide(); } // Actions if (key == "action") { if (data.action == "reload") { - if (password) forgetCredentials(); doReload(1000); } @@ -955,14 +935,7 @@ function init() { $(document).on('change', 'input', hasChanged); $(document).on('change', 'select', hasChanged); - $.ajax({ - 'method': 'GET', - 'url': window.location.href + 'auth' - }).done(function(data) { - connect(); - }).fail(function(){ - $("#credentials").show(); - }); + connect(); } diff --git a/code/html/index.html b/code/html/index.html index b9cb6317..f495e0a7 100644 --- a/code/html/index.html +++ b/code/html/index.html @@ -21,10 +21,6 @@ -
- Wrong credentials -
-