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 = "
"
"
"
+ " 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();