From 0708a54780d20d2f1e125e6750f6dcb16e28a5f3 Mon Sep 17 00:00:00 2001 From: Rick Watson Date: Fri, 31 May 2019 19:58:33 +0100 Subject: [PATCH] secure remaining endpoints to authenticated users --- src/APStatus.cpp | 6 ++++-- src/APStatus.h | 4 +++- src/NTPStatus.cpp | 6 ++++-- src/NTPStatus.h | 4 +++- src/SystemStatus.cpp | 6 ++++-- src/SystemStatus.h | 4 +++- src/WiFiStatus.cpp | 6 ++++-- src/WiFiStatus.h | 4 +++- src/main.cpp | 8 ++++---- 9 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/APStatus.cpp b/src/APStatus.cpp index 35a7b4f..d11cb4d 100644 --- a/src/APStatus.cpp +++ b/src/APStatus.cpp @@ -1,7 +1,9 @@ #include -APStatus::APStatus(AsyncWebServer *server) : _server(server) { - _server->on(AP_STATUS_SERVICE_PATH, HTTP_GET, std::bind(&APStatus::apStatus, this, std::placeholders::_1)); +APStatus::APStatus(AsyncWebServer *server, SecurityManager* securityManager) : _server(server), _securityManager(securityManager) { + _server->on(AP_STATUS_SERVICE_PATH, HTTP_GET, + _securityManager->wrapRequest(std::bind(&APStatus::apStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED) + ); } void APStatus::apStatus(AsyncWebServerRequest *request) { diff --git a/src/APStatus.h b/src/APStatus.h index 8c32fc8..0b69a43 100644 --- a/src/APStatus.h +++ b/src/APStatus.h @@ -13,6 +13,7 @@ #include #include #include +#include #define MAX_AP_STATUS_SIZE 1024 #define AP_STATUS_SERVICE_PATH "/rest/apStatus" @@ -21,11 +22,12 @@ class APStatus { public: - APStatus(AsyncWebServer *server); + APStatus(AsyncWebServer *server, SecurityManager* securityManager); private: AsyncWebServer* _server; + SecurityManager* _securityManager; void apStatus(AsyncWebServerRequest *request); diff --git a/src/NTPStatus.cpp b/src/NTPStatus.cpp index 50dbc37..21ac627 100644 --- a/src/NTPStatus.cpp +++ b/src/NTPStatus.cpp @@ -1,7 +1,9 @@ #include -NTPStatus::NTPStatus(AsyncWebServer *server) : _server(server) { - _server->on(NTP_STATUS_SERVICE_PATH, HTTP_GET, std::bind(&NTPStatus::ntpStatus, this, std::placeholders::_1)); +NTPStatus::NTPStatus(AsyncWebServer *server, SecurityManager* securityManager) : _server(server), _securityManager(securityManager) { + _server->on(NTP_STATUS_SERVICE_PATH, HTTP_GET, + _securityManager->wrapRequest(std::bind(&NTPStatus::ntpStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED) + ); } void NTPStatus::ntpStatus(AsyncWebServerRequest *request) { diff --git a/src/NTPStatus.h b/src/NTPStatus.h index 086407f..82c00fa 100644 --- a/src/NTPStatus.h +++ b/src/NTPStatus.h @@ -14,6 +14,7 @@ #include #include #include +#include #define MAX_NTP_STATUS_SIZE 1024 #define NTP_STATUS_SERVICE_PATH "/rest/ntpStatus" @@ -22,11 +23,12 @@ class NTPStatus { public: - NTPStatus(AsyncWebServer *server); + NTPStatus(AsyncWebServer *server, SecurityManager* securityManager); private: AsyncWebServer* _server; + SecurityManager* _securityManager; void ntpStatus(AsyncWebServerRequest *request); diff --git a/src/SystemStatus.cpp b/src/SystemStatus.cpp index de99a3d..a529c4a 100644 --- a/src/SystemStatus.cpp +++ b/src/SystemStatus.cpp @@ -1,7 +1,9 @@ #include - SystemStatus::SystemStatus(AsyncWebServer *server) : _server(server) { - _server->on(SYSTEM_STATUS_SERVICE_PATH, HTTP_GET, std::bind(&SystemStatus::systemStatus, this, std::placeholders::_1)); + SystemStatus::SystemStatus(AsyncWebServer *server, SecurityManager* securityManager) : _server(server), _securityManager(securityManager) { + _server->on(SYSTEM_STATUS_SERVICE_PATH, HTTP_GET, + _securityManager->wrapRequest(std::bind(&SystemStatus::systemStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED) + ); } void SystemStatus::systemStatus(AsyncWebServerRequest *request) { diff --git a/src/SystemStatus.h b/src/SystemStatus.h index 2ae4f90..4556ea8 100644 --- a/src/SystemStatus.h +++ b/src/SystemStatus.h @@ -12,6 +12,7 @@ #include #include #include +#include #define MAX_ESP_STATUS_SIZE 1024 #define SYSTEM_STATUS_SERVICE_PATH "/rest/systemStatus" @@ -20,11 +21,12 @@ class SystemStatus { public: - SystemStatus(AsyncWebServer *server); + SystemStatus(AsyncWebServer *server, SecurityManager* securityManager); private: AsyncWebServer* _server; + SecurityManager* _securityManager; void systemStatus(AsyncWebServerRequest *request); diff --git a/src/WiFiStatus.cpp b/src/WiFiStatus.cpp index 5f27c38..3e6273c 100644 --- a/src/WiFiStatus.cpp +++ b/src/WiFiStatus.cpp @@ -1,7 +1,9 @@ #include -WiFiStatus::WiFiStatus(AsyncWebServer *server) : _server(server) { - _server->on(WIFI_STATUS_SERVICE_PATH, HTTP_GET, std::bind(&WiFiStatus::wifiStatus, this, std::placeholders::_1)); +WiFiStatus::WiFiStatus(AsyncWebServer *server, SecurityManager* securityManager) : _server(server), _securityManager(securityManager) { + _server->on(WIFI_STATUS_SERVICE_PATH, HTTP_GET, + _securityManager->wrapRequest(std::bind(&WiFiStatus::wifiStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED) + ); #if defined(ESP8266) _onStationModeConnectedHandler = WiFi.onStationModeConnected(onStationModeConnected); _onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected(onStationModeDisconnected); diff --git a/src/WiFiStatus.h b/src/WiFiStatus.h index dca96d8..d2372a6 100644 --- a/src/WiFiStatus.h +++ b/src/WiFiStatus.h @@ -13,6 +13,7 @@ #include #include #include +#include #define MAX_WIFI_STATUS_SIZE 1024 #define WIFI_STATUS_SERVICE_PATH "/rest/wifiStatus" @@ -21,11 +22,12 @@ class WiFiStatus { public: - WiFiStatus(AsyncWebServer *server); + WiFiStatus(AsyncWebServer *server, SecurityManager* securityManager); private: AsyncWebServer* _server; + SecurityManager* _securityManager; #if defined(ESP8266) // handler refrences for logging important WiFi events over serial diff --git a/src/main.cpp b/src/main.cpp index 9bfbe87..d3256fb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,10 +35,10 @@ OTASettingsService otaSettingsService = OTASettingsService(&server, &SPIFFS, &se AuthenticationService authenticationService = AuthenticationService(&server, &securitySettingsService); WiFiScanner wifiScanner = WiFiScanner(&server, &securitySettingsService); -WiFiStatus wifiStatus = WiFiStatus(&server); -NTPStatus ntpStatus = NTPStatus(&server); -APStatus apStatus = APStatus(&server); -SystemStatus systemStatus = SystemStatus(&server); +WiFiStatus wifiStatus = WiFiStatus(&server, &securitySettingsService); +NTPStatus ntpStatus = NTPStatus(&server, &securitySettingsService); +APStatus apStatus = APStatus(&server, &securitySettingsService); +SystemStatus systemStatus = SystemStatus(&server, &securitySettingsService);; void setup() { // Disable wifi config persistance