added password edit forms & protection options, moved uart cfg to term conf page

box-drawing
Ondřej Hruška 7 years ago
parent c9c8b33b43
commit ddd55c1ae0
  1. 1
      _debug_replacements.php
  2. 41
      lang/en.php
  3. 8
      pages/cfg_network.php
  4. 93
      pages/cfg_system.php
  5. 75
      pages/cfg_term.php
  6. 8
      pages/cfg_wifi.php
  7. 1
      sass/form/_form_layout.scss

@ -91,4 +91,5 @@ return [
'uart_parity' => 2, 'uart_parity' => 2,
'theme' => 1, 'theme' => 1,
'pwlock' => 1,
]; ];

@ -156,20 +156,49 @@ return [
'Restore to firmware default settings? This will reset ' . 'Restore to firmware default settings? This will reset ' .
'all active settings and switch to AP mode with the default SSID.', 'all active settings and switch to AP mode with the default SSID.',
'system.confirm_store_defaults' => 'system.confirm_store_defaults' =>
'Enter admin password to confirm you want to store the current settings as defaults.', 'Enter admin password to confirm you want to overwrite the default settings.',
'system.password' => 'Admin password:', 'system.password' => 'Admin password:',
'system.restore_defaults' => 'Reset active settings to defaults', 'system.restore_defaults' => 'Reset to saved defaults',
'system.write_defaults' => 'Save active settings as defaults', 'system.write_defaults' => 'Save active settings as defaults',
'system.restore_hard' => 'Reset active settings to firmware defaults', 'system.restore_hard' => 'Reset active settings to firmware defaults',
'system.explain_persist' => ' 'system.explain_persist' => '
ESPTerm contains two persistent memory banks, one for default and ESPTerm saves all settings in Flash. The active settings can be copied to
one for active settings. Active settings can be stored as defaults the "defaults area" and restored later using the blue button below.
by the administrator (password required).
', ',
'system.uart' => 'Serial Port', 'system.uart' => 'Serial Port',
'system.explain_uart' => ' 'system.explain_uart' => '
This form controls the primary, communication UART. The debug UART is fixed at 115.200 baud, one stop-bit and no parity. This form controls the primary, communication UART. The debug UART is fixed
at 115.200 baud, one stop-bit and no parity.
', ',
'system.security' => 'Access Restrictions',
'system.explain_security' => '
Some parts, or all of the web interface can be protected by a password prompt.
Leave the new password fields empty if you do not wish to change it.
',
'system.pwlock' => 'Protected pages',
'system.pwlock.none' => 'None, all open',
'system.pwlock.settings_noterm' => 'WiFi, Net & System settings',
'system.pwlock.settings' => 'All settings pages',
'system.pwlock.menus' => 'This entire menu section',
'system.pwlock.all' => 'Everything, even terminal',
'system.new_access_pw' => 'New password',
'system.new_access_pw2' => 'New pass., repeat',
'system.admin_pw' => 'Admin password',
'system.change_adminpw' => 'Change Admin Password',
'system.explain_adminpw' =>
'
The "admin password" is used to manipulate the stored default settings
and to change access restrictions. This password is not saved as part
of the main config, i.e. using save / restore does not affect this
password. When the admin password is forgotten, the easiest way to
re-gain access is to wipe and re-flash the chip.
',
'system.new_admin_pw' => 'New admin pass.',
'system.new_admin_pw2' => 'New pass., repeat',
'system.old_admin_pw' => 'Old admin pass.',
'uart.baud' => 'Baud rate', 'uart.baud' => 'Baud rate',
'uart.parity' => 'Parity', 'uart.parity' => 'Parity',
'uart.parity.none' => 'None', 'uart.parity.none' => 'None',

@ -2,7 +2,7 @@
$ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"'; $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"';
?> ?>
<form class="Box str mobcol" action="<?= e(url('network_set')) ?>" method="GET" id="form-2"> <form class="Box str mobcol" action="<?= e(url('network_set')) ?>" method="GET" id="form-netsta">
<h2 tabindex=0><?= tr('net.sta') ?></h2> <h2 tabindex=0><?= tr('net.sta') ?></h2>
<div class="Row explain"> <div class="Row explain">
@ -31,11 +31,11 @@ $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"';
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-netsta').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>
<form class="Box str mobcol" action="<?= e(url('network_set')) ?>" method="GET" id="form-1"> <form class="Box str mobcol" action="<?= e(url('network_set')) ?>" method="GET" id="form-netap">
<h2 tabindex=0><?= tr('net.ap') ?></h2> <h2 tabindex=0><?= tr('net.ap') ?></h2>
<div class="Row explain"> <div class="Row explain">
@ -69,7 +69,7 @@ $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"';
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-netap').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>

@ -25,55 +25,78 @@
</div> </div>
</div> </div>
<?php
$NOFILL = 'readonly onfocus="this.removeAttribute(\'readonly\')" style="cursor:text" autocomplete="off"';
?>
<form class="Box str mobcol" action="<?= e(url('system_set')) ?>" method="GET" id="form-1"> <form class="Box str mobcol" action="<?= e(url('system_set')) ?>" method="GET" id="form-2">
<h2 tabindex=0><?= tr('system.uart') ?></h2> <h2 tabindex=0><?= tr('system.security') ?></h2>
<!-- flag to use the security cgi handler -->
<input type="hidden" name="security" value="1">
<div class="Row explain"> <div class="Row explain">
<?= tr('system.explain_uart') ?> <?= tr('system.explain_security') ?>
</div> </div>
<div class="Row"> <div class="Row">
<label for="uart_baud"><?= tr('uart.baud') ?><span class="mq-phone">&nbsp;(bps)</span></label> <label for="pwlock"><?= tr("system.pwlock") ?></label>
<select name="uart_baud" id="uart_baud" class="short"> <select name="pwlock" id="pwlock">
<?php foreach([ <option value="0"><?= tr("system.pwlock.none") ?></option>
300, 600, 1200, 2400, 4800, 9600, 19200, 38400, <option value="1"><?= tr("system.pwlock.settings_noterm") ?></option>
57600, 74880, 115200, 230400, 460800, 921600, 1843200, 3686400, <option value="2"><?= tr("system.pwlock.settings") ?></option>
] as $b): <option value="3"><?= tr("system.pwlock.menus") ?></option>
?><option value="<?=$b?>"><?= number_format($b, 0, ',', '.') ?></option> <option value="4"><?= tr("system.pwlock.all") ?></option>
<?php endforeach; ?>
</select> </select>
<span class="mq-no-phone">&nbsp;bps</span>
</div> </div>
<div class="Row"> <div class="Row">
<label for="uart_parity"><?= tr('uart.parity') ?></label> <label for="access_pw"><?= tr('system.new_access_pw') ?></label>
<select name="uart_parity" id="uart_parity" class="short"> <input type="password" name="access_pw" id="access_pw" <?=$NOFILL?>>
<?php foreach([
2 => tr('uart.parity.none'),
1 => tr('uart.parity.odd'),
0 => tr('uart.parity.even'),
] as $k => $label):
?><option value="<?=$k?>"><?=$label?></option>
<?php endforeach; ?>
</select>
</div> </div>
<div class="Row"> <div class="Row">
<label for="uart_stopbits"><?= tr('uart.stop_bits') ?></label> <label for="access_pw2"><?= tr('system.new_access_pw2') ?></label>
<select name="uart_stopbits" id="uart_stopbits" class="short"> <input type="password" name="access_pw2" id="access_pw2" <?=$NOFILL?>>
<?php foreach([ </div>
1 => tr('uart.stop_bits.one'),
2 => tr('uart.stop_bits.one_and_half'), <div class="Row">
3 => tr('uart.stop_bits.two'), <label for="pw"><?= tr('system.admin_pw') ?></label>
] as $k => $label): <input type="password" name="pw" id="pw" required>
?><option value="<?=$k?>"><?=$label?></option> </div>
<?php endforeach; ?>
</select> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()"><?= tr('apply') ?></a>
</div>
</form>
<form class="Box str mobcol" action="<?= e(url('system_set')) ?>" method="GET" id="form-3">
<h2 tabindex=0><?= tr('system.change_adminpw') ?></h2>
<!-- flag to use the security cgi handler -->
<input type="hidden" name="security" value="1">
<div class="Row explain">
<?= tr('system.explain_adminpw') ?>
</div>
<div class="Row">
<label for="admin_pw"><?= tr('system.new_admin_pw') ?></label>
<input type="password" name="admin_pw" id="admin_pw">
</div>
<div class="Row">
<label for="admin_pw2"><?= tr('system.new_admin_pw2') ?></label>
<input type="password" name="admin_pw2" id="admin_pw2">
</div>
<div class="Row">
<label for="pw"><?= tr('system.old_admin_pw') ?></label>
<input type="password" name="pw" id="pw" required>
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-3').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>
@ -84,7 +107,5 @@
location.href = <?=json_encode(url('write_defaults')) ?> + '?pw=' + pw; location.href = <?=json_encode(url('write_defaults')) ?> + '?pw=' + pw;
} }
$('#uart_baud').val(%uart_baud%); $('#pwlock').val(%pwlock%);
$('#uart_parity').val(%uart_parity%);
$('#uart_stopbits').val(%uart_stopbits%);
</script> </script>

@ -2,7 +2,7 @@
<a href="<?= e(url('reset_screen')) ?>"><?= tr('term.reset_screen') ?></a> <a href="<?= e(url('reset_screen')) ?>"><?= tr('term.reset_screen') ?></a>
</div> </div>
<form class="Box mobopen str" action="<?= e(url('term_set')) ?>" method="GET" id='form-1'> <form class="Box mobopen str" action="<?= e(url('term_set')) ?>" method="GET" id='form-initial'>
<h2><?= tr('term.defaults') ?></h2> <h2><?= tr('term.defaults') ?></h2>
<div class="Row explain"> <div class="Row explain">
@ -102,6 +102,12 @@
<input type="text" name="term_title" id="term_title" value="%h:term_title%" required> <input type="text" name="term_title" id="term_title" value="%h:term_title%" required>
</div> </div>
<div class="Row checkbox" >
<label><?= tr('term.show_buttons') ?></label><!--
--><span class="box" tabindex=0 role=checkbox></span>
<input type="hidden" id="show_buttons" name="show_buttons" value="%show_buttons%">
</div>
<div class="Row"> <div class="Row">
<label><?= tr("term.buttons") ?></label> <label><?= tr("term.buttons") ?></label>
<input class="short" type="text" name="btn1" id="btn1" value="%h:btn1%">&nbsp; <input class="short" type="text" name="btn1" id="btn1" value="%h:btn1%">&nbsp;
@ -124,11 +130,62 @@
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-initial').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>
<form class="Box fold str" action="<?= e(url('term_set')) ?>" method="GET" id='form-2'> <form class="Box fold str" action="<?= e(url('system_set')) ?>" method="GET" id="form-uart">
<h2 tabindex=0><?= tr('system.uart') ?></h2>
<div class="Row explain">
<?= tr('system.explain_uart') ?>
</div>
<div class="Row">
<label for="uart_baud"><?= tr('uart.baud') ?><span class="mq-phone">&nbsp;(bps)</span></label>
<select name="uart_baud" id="uart_baud" class="short">
<?php foreach([
300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
57600, 74880, 115200, 230400, 460800, 921600, 1843200, 3686400,
] as $b):
?><option value="<?=$b?>"><?= number_format($b, 0, ',', '.') ?></option>
<?php endforeach; ?>
</select>
<span class="mq-no-phone">&nbsp;bps</span>
</div>
<div class="Row">
<label for="uart_parity"><?= tr('uart.parity') ?></label>
<select name="uart_parity" id="uart_parity" class="short">
<?php foreach([
2 => tr('uart.parity.none'),
1 => tr('uart.parity.odd'),
0 => tr('uart.parity.even'),
] as $k => $label):
?><option value="<?=$k?>"><?=$label?></option>
<?php endforeach; ?>
</select>
</div>
<div class="Row">
<label for="uart_stopbits"><?= tr('uart.stop_bits') ?></label>
<select name="uart_stopbits" id="uart_stopbits" class="short">
<?php foreach([
1 => tr('uart.stop_bits.one'),
2 => tr('uart.stop_bits.one_and_half'),
3 => tr('uart.stop_bits.two'),
] as $k => $label):
?><option value="<?=$k?>"><?=$label?></option>
<?php endforeach; ?>
</select>
</div>
<div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-uart').submit()"><?= tr('apply') ?></a>
</div>
</form>
<form class="Box fold str" action="<?= e(url('term_set')) ?>" method="GET" id='form-expert'>
<h2><?= tr('term.expert') ?></h2> <h2><?= tr('term.expert') ?></h2>
<div class="Row explain"> <div class="Row explain">
@ -180,12 +237,6 @@
<input type="hidden" id="crlf_mode" name="crlf_mode" value="%crlf_mode%"> <input type="hidden" id="crlf_mode" name="crlf_mode" value="%crlf_mode%">
</div> </div>
<div class="Row checkbox" >
<label><?= tr('term.show_buttons') ?></label><!--
--><span class="box" tabindex=0 role=checkbox></span>
<input type="hidden" id="show_buttons" name="show_buttons" value="%show_buttons%">
</div>
<div class="Row checkbox" > <div class="Row checkbox" >
<label><?= tr('term.show_config_links') ?></label><!-- <label><?= tr('term.show_config_links') ?></label><!--
--><span class="box" tabindex=0 role=checkbox></span> --><span class="box" tabindex=0 role=checkbox></span>
@ -199,7 +250,7 @@
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-expert').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>
@ -209,6 +260,10 @@
$('#cursor_shape').val(%cursor_shape%); $('#cursor_shape').val(%cursor_shape%);
$('#theme').val(%theme%); $('#theme').val(%theme%);
$('#uart_baud').val(%uart_baud%);
$('#uart_parity').val(%uart_parity%);
$('#uart_stopbits').val(%uart_stopbits%);
function showColor() { function showColor() {
var ex = qs('#color-example'); var ex = qs('#color-example');
ex.dataset.fg = +$('#default_fg').val(); ex.dataset.fg = +$('#default_fg').val();

@ -1,4 +1,4 @@
<form class="Box str mobcol" action="<?= e(url('wifi_set')) ?>" method="GET" id="form-1"> <form class="Box str mobcol" action="<?= e(url('wifi_set')) ?>" method="GET" id="form-ap">
<h2 tabindex=0><?= tr('wifi.ap') ?></h2> <h2 tabindex=0><?= tr('wifi.ap') ?></h2>
<div class="Row checkbox x-ap-toggle"> <div class="Row checkbox x-ap-toggle">
@ -38,11 +38,11 @@
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-ap').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>
<form class="Box str mobcol expanded" action="<?= e(url('wifi_set')) ?>" method="GET" id="form-2"> <form class="Box str mobcol expanded" action="<?= e(url('wifi_set')) ?>" method="GET" id="form-sta">
<h2 tabindex=0><?= tr('wifi.sta') ?></h2> <h2 tabindex=0><?= tr('wifi.sta') ?></h2>
<div class="Row checkbox x-sta-toggle"> <div class="Row checkbox x-sta-toggle">
@ -85,7 +85,7 @@
</div> </div>
<div class="Row buttons"> <div class="Row buttons">
<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()"><?= tr('apply') ?></a> <a class="button icn-ok" href="#" onclick="qs('#form-sta').submit()"><?= tr('apply') ?></a>
</div> </div>
</form> </form>

@ -21,6 +21,7 @@ form { @include naked(); }
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
flex-wrap: wrap;
&:first-child { &:first-child {
margin-top: 0; margin-top: 0;

Loading…
Cancel
Save