From 34116ac16d514f1efd76d52212f520b7080dc10f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Wed, 22 Feb 2017 21:30:09 +0100 Subject: [PATCH] Basic check of the uploaded config file --- code/espurna/web.ino | 10 +++++++++- code/html/custom.js | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/espurna/web.ino b/code/espurna/web.ino index cffedb42..2be6b31d 100644 --- a/code/espurna/web.ino +++ b/code/espurna/web.ino @@ -91,11 +91,16 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { if (action.equals("reset")) ESP.reset(); if (action.equals("restore") && root.containsKey("data")) { + JsonObject& data = root["data"]; + if (!data.containsKey("app") || (data["app"] != APP_NAME)) { + ws.text(client_id, "{\"message\": \"The file does not look like a valid configuration backup.\"}"); + return; + } + for (unsigned int i = EEPROM_DATA_END; i < SPI_FLASH_SEC_SIZE; i++) { EEPROM.write(i, 0xFF); } - JsonObject& data = root["data"]; for (auto element : data){ setSetting(element.key, element.value.as()); } @@ -731,6 +736,9 @@ void _onGetConfig(AsyncWebServerRequest *request) { AsyncJsonResponse * response = new AsyncJsonResponse(); JsonObject& root = response->getRoot(); + root["app"] = APP_NAME; + root["version"] = APP_VERSION; + unsigned int size = settingsKeyCount(); for (unsigned int i=0; i