mirror of
https://github.com/xoseperez/espurna.git
synced 2026-03-19 06:37:13 +01:00
Merge branch 'dev' into sensors
Conflicts: code/espurna/config/general.h code/espurna/data/index.html.gz code/espurna/static/index.html.gz.h code/espurna/ws.ino
This commit is contained in:
@@ -79,13 +79,13 @@ function zeroPad(number, positions) {
|
||||
function validateForm(form) {
|
||||
|
||||
// password
|
||||
var adminPass1 = $("input[name='adminPass1']", form).val();
|
||||
var adminPass1 = $("input[name='adminPass']", form).first().val();
|
||||
if (adminPass1.length > 0 && !checkPassword(adminPass1)) {
|
||||
alert("The password you have entered is not valid, it must have at least 5 characters, 1 lowercase and 1 uppercase or number!");
|
||||
return false;
|
||||
}
|
||||
|
||||
var adminPass2 = $("input[name='adminPass2']", form).val();
|
||||
var adminPass2 = $("input[name='adminPass']", form).last().val();
|
||||
if (adminPass1 != adminPass2) {
|
||||
alert("Passwords are different!");
|
||||
return false;
|
||||
@@ -95,14 +95,40 @@ function validateForm(form) {
|
||||
|
||||
}
|
||||
|
||||
function valueSet(data, name, value) {
|
||||
for (var i in data) {
|
||||
if (data[i]['name'] == name) {
|
||||
data[i]['value'] = value;
|
||||
return;
|
||||
// These fields will always be a list of values
|
||||
var is_group = ["ssid", "pass", "gw", "mask", "ip", "dns", "mqttGroup", "mqttGroupInv", "dczRelayIdx", "ledMode", "ntpServer", "adminPass"];
|
||||
|
||||
function getData(form) {
|
||||
|
||||
var data = {};
|
||||
|
||||
// Populate data
|
||||
$("input,select", form).each(function() {
|
||||
var name = $(this).attr("name");
|
||||
if (name) {
|
||||
if ($(this).attr('type') == 'checkbox') {
|
||||
value = $(this).is(':checked') ? 1 : 0;
|
||||
} else if ($(this).attr('type') == 'radio') {
|
||||
if (!$(this).is(':checked')) return;
|
||||
value = $(this).val();
|
||||
} else {
|
||||
value = $(this).val();
|
||||
}
|
||||
if (name in data) {
|
||||
data[name].push(value);
|
||||
} else if (is_group.indexOf(name) >= 0) {
|
||||
data[name] = [value];
|
||||
} else {
|
||||
data[name] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
data.push({'name': name, 'value': value});
|
||||
});
|
||||
|
||||
// Delete unwanted fields
|
||||
delete(data["filename"]);
|
||||
|
||||
return data;
|
||||
|
||||
}
|
||||
|
||||
function randomString(length, chars) {
|
||||
@@ -145,28 +171,19 @@ function doReload(milliseconds) {
|
||||
function doUpdate() {
|
||||
|
||||
var form = $("#formSave");
|
||||
|
||||
if (validateForm(form)) {
|
||||
|
||||
// Get data
|
||||
var data = form.serializeArray();
|
||||
|
||||
// Post-process
|
||||
delete(data['filename']);
|
||||
$("input[type='checkbox']").each(function() {
|
||||
var name = $(this).attr("name");
|
||||
if (name) {
|
||||
valueSet(data, name, $(this).is(':checked') ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
var data = getData(form);
|
||||
websock.send(JSON.stringify({'config': data}));
|
||||
|
||||
// Empty special fields
|
||||
$(".pwrExpected").val(0);
|
||||
$("input[name='pwrResetCalibration']")
|
||||
.prop("checked", false)
|
||||
.iphoneStyle("refresh");
|
||||
|
||||
// Change handling
|
||||
numChanged = 0;
|
||||
setTimeout(function() {
|
||||
|
||||
@@ -252,7 +269,7 @@ function doUpgrade() {
|
||||
function doUpdatePassword() {
|
||||
var form = $("#formPassword");
|
||||
if (validateForm(form)) {
|
||||
var data = form.serializeArray();
|
||||
var data = getData(form);
|
||||
websock.send(JSON.stringify({'config': data}));
|
||||
}
|
||||
return false;
|
||||
@@ -973,10 +990,7 @@ function hasChanged() {
|
||||
}
|
||||
|
||||
function resetOriginals() {
|
||||
$("input").each(function() {
|
||||
$(this).attr("original", $(this).val());
|
||||
})
|
||||
$("select").each(function() {
|
||||
$("input,select").each(function() {
|
||||
$(this).attr("original", $(this).val());
|
||||
})
|
||||
numReboot = numReconnect = numReload = 0;
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
|
||||
<form id="formPassword" class="pure-form" action="/" method="post">
|
||||
|
||||
<input class="pure-u-1 pure-u-sm-3-4" type="hidden" name="webMode" value="1" />
|
||||
|
||||
<div class="panel block">
|
||||
|
||||
<div class="header">
|
||||
@@ -41,7 +39,7 @@
|
||||
|
||||
<div class="pure-g">
|
||||
<label class="pure-u-1 pure-u-md-1-4">Admin password</label>
|
||||
<input name="adminPass1" class="pure-u-1 pure-u-md-3-4" type="password" tabindex="1" autocomplete="false" />
|
||||
<input name="adminPass" class="pure-u-1 pure-u-md-3-4" type="password" tabindex="1" autocomplete="false" />
|
||||
<div class="pure-u-0 pure-u-md-1-4"> </div>
|
||||
<div class="pure-u-1 pure-u-md-3-4 hint">
|
||||
The administrator password is used to access this web interface (user 'admin'), but also to connect to the device when in AP mode or to flash a new firmware over-the-air (OTA).<br />
|
||||
@@ -50,7 +48,7 @@
|
||||
|
||||
<div class="pure-g">
|
||||
<label class="pure-u-1 pure-u-md-1-4">Admin password (repeat)</label>
|
||||
<input name="adminPass2" class="pure-u-1 pure-u-md-3-4" type="password" tabindex="2" autocomplete="false" />
|
||||
<input name="adminPass" class="pure-u-1 pure-u-md-3-4" type="password" tabindex="2" autocomplete="false" />
|
||||
</div>
|
||||
|
||||
<button class="pure-button button-update-password">Update</button>
|
||||
@@ -232,8 +230,6 @@
|
||||
|
||||
<form id="formSave" class="pure-form" action="/" method="post" enctype="multipart/form-data">
|
||||
|
||||
<input class="pure-u-1 pure-u-sm-3-4" type="hidden" name="webMode" value="0" />
|
||||
|
||||
<div class="panel" id="panel-general">
|
||||
|
||||
<div class="header">
|
||||
@@ -479,7 +475,7 @@
|
||||
|
||||
<div class="pure-g">
|
||||
<label class="pure-u-1 pure-u-md-1-4">Admin password</label>
|
||||
<input name="adminPass1" class="pure-u-1 pure-u-md-3-4" type="password" action="reboot" tabindex="11" autocomplete="false" />
|
||||
<input name="adminPass" class="pure-u-1 pure-u-md-3-4" type="password" action="reboot" tabindex="11" autocomplete="false" />
|
||||
<div class="pure-u-0 pure-u-md-1-4"> </div>
|
||||
<div class="pure-u-1 pure-u-md-3-4 hint">
|
||||
The administrator password is used to access this web interface (user 'admin'), but also to connect to the device when in AP mode or to flash a new firmware over-the-air (OTA).<br />
|
||||
@@ -488,7 +484,7 @@
|
||||
|
||||
<div class="pure-g">
|
||||
<label class="pure-u-1 pure-u-md-1-4">Repeat password</label>
|
||||
<input name="adminPass2" class="pure-u-1 pure-u-md-3-4" type="password" action="reboot" tabindex="12" autocomplete="false" />
|
||||
<input name="adminPass" class="pure-u-1 pure-u-md-3-4" type="password" action="reboot" tabindex="12" autocomplete="false" />
|
||||
</div>
|
||||
|
||||
<div class="pure-g">
|
||||
|
||||
Reference in New Issue
Block a user