From 417e5f2964a0a7e82dd886be130f34e7c846edd8 Mon Sep 17 00:00:00 2001 From: Chrome Legion Date: Thu, 21 Jun 2018 21:42:09 -0700 Subject: [PATCH] Qrome - added option to turn off web interface authentication --- printermonitor/Settings.h | 1 + printermonitor/printermonitor.ino | 33 ++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/printermonitor/Settings.h b/printermonitor/Settings.h index 5cd795c..170b1da 100644 --- a/printermonitor/Settings.h +++ b/printermonitor/Settings.h @@ -70,6 +70,7 @@ boolean IS_METRIC = false; // false = Imperial and true = Metric const int WEBSERVER_PORT = 80; // The port you can access this device on over HTTP const boolean WEBSERVER_ENABLED = true; // Device will provide a web interface via http://[ip]:[port]/ +boolean IS_BASIC_AUTH = true; // true = require athentication to change configuration settings / false = no auth char* www_username = "admin"; // User account for the Web Interface char* www_password = "password"; // Password for the Web Interface float UtcOffset = -7; // Hour offset from GMT for your timezone diff --git a/printermonitor/printermonitor.ino b/printermonitor/printermonitor.ino index 9914324..f786205 100644 --- a/printermonitor/printermonitor.ino +++ b/printermonitor/printermonitor.ino @@ -27,7 +27,7 @@ SOFTWARE. #include "Settings.h" -#define VERSION "2.1" +#define VERSION "2.2" #define HOSTNAME "OctMon-" #define CONFIG "/conf.txt" @@ -115,6 +115,7 @@ String CHANGE_FORM = "
Theme Color

" "


" + " Use Security Credentials for Configuration Changes" "

" "

" "
"; @@ -373,8 +374,15 @@ void getUpdateTime() { digitalWrite(externalLight, HIGH); // turn off the LED } +boolean authentication() { + if (IS_BASIC_AUTH && (strlen(www_username) >= 1 && strlen(www_password) >= 1)) { + return server.authenticate(www_username, www_password); + } + return true; // Authentication not required +} + void handleSystemReset() { - if (!server.authenticate(www_username, www_password)) { + if (!authentication()) { return server.requestAuthentication(); } Serial.println("Reset System Configuration"); @@ -385,7 +393,7 @@ void handleSystemReset() { } void handleUpdateWeather() { - if (!server.authenticate(www_username, www_password)) { + if (!authentication()) { return server.requestAuthentication(); } DISPLAYWEATHER = server.hasArg("isWeatherEnabled"); @@ -400,7 +408,7 @@ void handleUpdateWeather() { } void handleUpdateConfig() { - if (!server.authenticate(www_username, www_password)) { + if (!authentication()) { return server.requestAuthentication(); } OctoPrintApiKey = server.arg("octoPrintApiKey"); @@ -414,6 +422,7 @@ void handleUpdateConfig() { minutesBetweenDataRefresh = server.arg("refresh").toInt(); themeColor = server.arg("theme"); UtcOffset = server.arg("utcoffset").toFloat(); + IS_BASIC_AUTH = server.hasArg("isBasicAuth"); String temp = server.arg("userid"); temp.toCharArray(www_username, sizeof(temp)); temp = server.arg("stationpassword"); @@ -427,7 +436,7 @@ void handleUpdateConfig() { } void handleWifiReset() { - if (!server.authenticate(www_username, www_password)) { + if (!authentication()) { return server.requestAuthentication(); } //WiFiManager @@ -439,7 +448,7 @@ void handleWifiReset() { } void handleWeatherConfigure() { - if (!server.authenticate(www_username, www_password)) { + if (!authentication()) { return server.requestAuthentication(); } digitalWrite(externalLight, LOW); @@ -479,7 +488,7 @@ void handleWeatherConfigure() { } void handleConfigure() { - if (!server.authenticate(www_username, www_password)) { + if (!authentication()) { return server.requestAuthentication(); } digitalWrite(externalLight, LOW); @@ -519,6 +528,11 @@ void handleConfigure() { themeOptions.replace(">"+String(themeColor)+"<", " selected>"+String(themeColor)+"<"); form.replace("%THEME_OPTIONS%", themeOptions); form.replace("%UTCOFFSET%", String(UtcOffset)); + String isUseSecurityChecked = ""; + if (IS_BASIC_AUTH) { + isUseSecurityChecked = "checked='checked'"; + } + form.replace("%IS_BASICAUTH_CHECKED%", isUseSecurityChecked); form.replace("%USERID%", String(www_username)); form.replace("%STATIONPASSWORD%", String(www_password)); @@ -933,6 +947,7 @@ void writeSettings() { f.println("octoPass=" + OctoAuthPass); f.println("refreshRate=" + String(minutesBetweenDataRefresh)); f.println("themeColor=" + themeColor); + f.println("IS_BASIC_AUTH=" + String(IS_BASIC_AUTH)); f.println("www_username=" + String(www_username)); f.println("www_password=" + String(www_password)); f.println("DISPLAYCLOCK=" + String(DISPLAYCLOCK)); @@ -1000,6 +1015,10 @@ void readSettings() { themeColor.trim(); Serial.println("themeColor=" + themeColor); } + if (line.indexOf("IS_BASIC_AUTH=") >= 0) { + IS_BASIC_AUTH = line.substring(line.lastIndexOf("IS_BASIC_AUTH=") + 14).toInt(); + Serial.println("IS_BASIC_AUTH=" + String(IS_BASIC_AUTH)); + } if (line.indexOf("www_username=") >= 0) { String temp = line.substring(line.lastIndexOf("www_username=") + 13); temp.trim();