Qrome - updated with ability to turn on or off Basic Auth for web interface
parent
0884f0ac03
commit
04ed5ae77d
|
|
@ -109,7 +109,8 @@ Please do not feel obligated, but donations and tips are warmly welcomed. I hav
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
David Payne
|
David Payne
|
||||||
Daniel Eichhorn -- Author of the TimeClient class and OLEDDisplayUi .
|
Daniel Eichhorn -- Author of the TimeClient class and OLEDDisplayUi
|
||||||
|
Florian Schütte -- added flip display to web interface
|
||||||
|
|
||||||
Contributing to this software is warmly welcomed. You can do this basically by
|
Contributing to this software is warmly welcomed. You can do this basically by
|
||||||
forking from master, committing modifications and then making a pulling requests to be reviewed (follow the links above
|
forking from master, committing modifications and then making a pulling requests to be reviewed (follow the links above
|
||||||
|
|
|
||||||
|
|
@ -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 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]/
|
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_username = "admin"; // User account for the Web Interface
|
||||||
char* www_password = "password"; // Password for the Web Interface
|
char* www_password = "password"; // Password for the Web Interface
|
||||||
float UtcOffset = -7; // Hour offset from GMT for your timezone
|
float UtcOffset = -7; // Hour offset from GMT for your timezone
|
||||||
|
|
@ -82,7 +83,7 @@ const int I2C_DISPLAY_ADDRESS = 0x3c; // I2C Address of your Display (usually 0x
|
||||||
const int SDA_PIN = D2;
|
const int SDA_PIN = D2;
|
||||||
const int SCL_PIN = D5;
|
const int SCL_PIN = D5;
|
||||||
boolean INVERT_DISPLAY = false; // true = pins at top | false = pins at the bottom
|
boolean INVERT_DISPLAY = false; // true = pins at top | false = pins at the bottom
|
||||||
//#define DISPLAY_SH1106 // Uncomment this line to use the SH1106 display -- SSD1306 is used by default and is most common
|
#define DISPLAY_SH1106 // Uncomment this line to use the SH1106 display -- SSD1306 is used by default and is most common
|
||||||
|
|
||||||
boolean ENABLE_OTA = true; // this will allow you to load firmware to the device over WiFi (see OTA for ESP8266)
|
boolean ENABLE_OTA = true; // this will allow you to load firmware to the device over WiFi (see OTA for ESP8266)
|
||||||
String OTA_Password = ""; // Set an OTA password here -- leave blank if you don't want to be prompted for password
|
String OTA_Password = ""; // Set an OTA password here -- leave blank if you don't want to be prompted for password
|
||||||
|
|
@ -90,4 +91,4 @@ String OTA_Password = ""; // Set an OTA password here -- leave blank if you
|
||||||
// End Settings
|
// End Settings
|
||||||
//******************************
|
//******************************
|
||||||
|
|
||||||
String themeColor = "light-green"; // this can be changed later in the web interface.
|
String themeColor = "light-green"; // this can be changed later in the web interface.
|
||||||
|
|
|
||||||
|
|
@ -112,10 +112,11 @@ String CHANGE_FORM = "<form class='w3-container' action='/updateconfig' method=
|
||||||
"<p><label>OctoPrint Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='octoPass' value='%OCTOPASS%'></p><hr>"
|
"<p><label>OctoPrint Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='octoPass' value='%OCTOPASS%'></p><hr>"
|
||||||
"<p><input name='isClockEnabled' class='w3-check w3-margin-top' type='checkbox' %IS_CLOCK_CHECKED%> Display Clock when printer is off</p>"
|
"<p><input name='isClockEnabled' class='w3-check w3-margin-top' type='checkbox' %IS_CLOCK_CHECKED%> Display Clock when printer is off</p>"
|
||||||
"<p><input name='is24hour' class='w3-check w3-margin-top' type='checkbox' %IS_24HOUR_CHECKED%> Use 24 Hour Clock (military time)</p>"
|
"<p><input name='is24hour' class='w3-check w3-margin-top' type='checkbox' %IS_24HOUR_CHECKED%> Use 24 Hour Clock (military time)</p>"
|
||||||
"<p><input name='invDisp' class='w3-check w3-margin-top' type='checkbox' %IS_INVDISP_CHECKED%> Flip display?</p>"
|
"<p><input name='invDisp' class='w3-check w3-margin-top' type='checkbox' %IS_INVDISP_CHECKED%> Flip display orientation</p>"
|
||||||
"<p>Clock Sync / Weather Refresh (minutes) <select class='w3-option w3-padding' name='refresh'>%OPTIONS%</select></p>"
|
"<p>Clock Sync / Weather Refresh (minutes) <select class='w3-option w3-padding' name='refresh'>%OPTIONS%</select></p>"
|
||||||
"<p>Theme Color <select class='w3-option w3-padding' name='theme'>%THEME_OPTIONS%</select></p>"
|
"<p>Theme Color <select class='w3-option w3-padding' name='theme'>%THEME_OPTIONS%</select></p>"
|
||||||
"<p><label>UTC Time Offset</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='utcoffset' value='%UTCOFFSET%' maxlength='12'></p><hr>"
|
"<p><label>UTC Time Offset</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='utcoffset' value='%UTCOFFSET%' maxlength='12'></p><hr>"
|
||||||
|
"<p><input name='isBasicAuth' class='w3-check w3-margin-top' type='checkbox' %IS_BASICAUTH_CHECKED%> Use Security Credentials for Configuration Changes</p>"
|
||||||
"<p><label>User ID (for this interface)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='userid' value='%USERID%' maxlength='20'></p>"
|
"<p><label>User ID (for this interface)</label><input class='w3-input w3-border w3-margin-bottom' type='text' name='userid' value='%USERID%' maxlength='20'></p>"
|
||||||
"<p><label>Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='stationpassword' value='%STATIONPASSWORD%'></p>"
|
"<p><label>Password </label><input class='w3-input w3-border w3-margin-bottom' type='password' name='stationpassword' value='%STATIONPASSWORD%'></p>"
|
||||||
"<button class='w3-button w3-block w3-grey w3-section w3-padding' type='submit'>Save</button></form>";
|
"<button class='w3-button w3-block w3-grey w3-section w3-padding' type='submit'>Save</button></form>";
|
||||||
|
|
@ -374,8 +375,15 @@ void getUpdateTime() {
|
||||||
digitalWrite(externalLight, HIGH); // turn off the LED
|
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() {
|
void handleSystemReset() {
|
||||||
if (!server.authenticate(www_username, www_password)) {
|
if (!authentication()) {
|
||||||
return server.requestAuthentication();
|
return server.requestAuthentication();
|
||||||
}
|
}
|
||||||
Serial.println("Reset System Configuration");
|
Serial.println("Reset System Configuration");
|
||||||
|
|
@ -386,7 +394,7 @@ void handleSystemReset() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleUpdateWeather() {
|
void handleUpdateWeather() {
|
||||||
if (!server.authenticate(www_username, www_password)) {
|
if (!authentication()) {
|
||||||
return server.requestAuthentication();
|
return server.requestAuthentication();
|
||||||
}
|
}
|
||||||
DISPLAYWEATHER = server.hasArg("isWeatherEnabled");
|
DISPLAYWEATHER = server.hasArg("isWeatherEnabled");
|
||||||
|
|
@ -402,7 +410,7 @@ void handleUpdateWeather() {
|
||||||
|
|
||||||
void handleUpdateConfig() {
|
void handleUpdateConfig() {
|
||||||
boolean flipOld = INVERT_DISPLAY;
|
boolean flipOld = INVERT_DISPLAY;
|
||||||
if (!server.authenticate(www_username, www_password)) {
|
if (!authentication()) {
|
||||||
return server.requestAuthentication();
|
return server.requestAuthentication();
|
||||||
}
|
}
|
||||||
OctoPrintApiKey = server.arg("octoPrintApiKey");
|
OctoPrintApiKey = server.arg("octoPrintApiKey");
|
||||||
|
|
@ -436,7 +444,7 @@ void handleUpdateConfig() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleWifiReset() {
|
void handleWifiReset() {
|
||||||
if (!server.authenticate(www_username, www_password)) {
|
if (!authentication()) {
|
||||||
return server.requestAuthentication();
|
return server.requestAuthentication();
|
||||||
}
|
}
|
||||||
//WiFiManager
|
//WiFiManager
|
||||||
|
|
@ -448,7 +456,7 @@ void handleWifiReset() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleWeatherConfigure() {
|
void handleWeatherConfigure() {
|
||||||
if (!server.authenticate(www_username, www_password)) {
|
if (!authentication()) {
|
||||||
return server.requestAuthentication();
|
return server.requestAuthentication();
|
||||||
}
|
}
|
||||||
digitalWrite(externalLight, LOW);
|
digitalWrite(externalLight, LOW);
|
||||||
|
|
@ -488,7 +496,7 @@ void handleWeatherConfigure() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleConfigure() {
|
void handleConfigure() {
|
||||||
if (!server.authenticate(www_username, www_password)) {
|
if (!authentication()) {
|
||||||
return server.requestAuthentication();
|
return server.requestAuthentication();
|
||||||
}
|
}
|
||||||
digitalWrite(externalLight, LOW);
|
digitalWrite(externalLight, LOW);
|
||||||
|
|
@ -533,6 +541,11 @@ void handleConfigure() {
|
||||||
themeOptions.replace(">"+String(themeColor)+"<", " selected>"+String(themeColor)+"<");
|
themeOptions.replace(">"+String(themeColor)+"<", " selected>"+String(themeColor)+"<");
|
||||||
form.replace("%THEME_OPTIONS%", themeOptions);
|
form.replace("%THEME_OPTIONS%", themeOptions);
|
||||||
form.replace("%UTCOFFSET%", String(UtcOffset));
|
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("%USERID%", String(www_username));
|
||||||
form.replace("%STATIONPASSWORD%", String(www_password));
|
form.replace("%STATIONPASSWORD%", String(www_password));
|
||||||
|
|
||||||
|
|
@ -947,6 +960,7 @@ void writeSettings() {
|
||||||
f.println("octoPass=" + OctoAuthPass);
|
f.println("octoPass=" + OctoAuthPass);
|
||||||
f.println("refreshRate=" + String(minutesBetweenDataRefresh));
|
f.println("refreshRate=" + String(minutesBetweenDataRefresh));
|
||||||
f.println("themeColor=" + themeColor);
|
f.println("themeColor=" + themeColor);
|
||||||
|
f.println("IS_BASIC_AUTH=" + String(IS_BASIC_AUTH));
|
||||||
f.println("www_username=" + String(www_username));
|
f.println("www_username=" + String(www_username));
|
||||||
f.println("www_password=" + String(www_password));
|
f.println("www_password=" + String(www_password));
|
||||||
f.println("DISPLAYCLOCK=" + String(DISPLAYCLOCK));
|
f.println("DISPLAYCLOCK=" + String(DISPLAYCLOCK));
|
||||||
|
|
@ -1015,6 +1029,10 @@ void readSettings() {
|
||||||
themeColor.trim();
|
themeColor.trim();
|
||||||
Serial.println("themeColor=" + themeColor);
|
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) {
|
if (line.indexOf("www_username=") >= 0) {
|
||||||
String temp = line.substring(line.lastIndexOf("www_username=") + 13);
|
String temp = line.substring(line.lastIndexOf("www_username=") + 13);
|
||||||
temp.trim();
|
temp.trim();
|
||||||
|
|
@ -1148,4 +1166,4 @@ void enableDisplay(boolean enable) {
|
||||||
Serial.println("Display was turned OFF: " + timeClient.getFormattedTime());
|
Serial.println("Display was turned OFF: " + timeClient.getFormattedTime());
|
||||||
displayOffEpoch = lastEpoch;
|
displayOffEpoch = lastEpoch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue