From b238390ca8cf17e59094717bb0440ddfe3572e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sun, 23 Jul 2017 00:57:31 +0200 Subject: [PATCH] network settings page --- html_orig/_debug_replacements.php | 11 +++++ html_orig/_pages.php | 33 ++++++++------ html_orig/base.php | 71 +++++++++++++++++++++++++++++ html_orig/build_html.php | 19 ++++++++ html_orig/index.php | 65 ++++---------------------- html_orig/lang/en.php | 35 ++++++++++++-- html_orig/pages/_cfg_menu.php | 2 +- html_orig/pages/_head.php | 8 ++-- html_orig/pages/cfg_network.php | 76 +++++++++++++++++++++++++++++++ html_orig/pages/cfg_wifi.php | 20 +++----- html_orig/pages/term.php | 2 +- 11 files changed, 248 insertions(+), 94 deletions(-) create mode 100644 html_orig/base.php create mode 100644 html_orig/build_html.php diff --git a/html_orig/_debug_replacements.php b/html_orig/_debug_replacements.php index dbd22a9..3cde458 100644 --- a/html_orig/_debug_replacements.php +++ b/html_orig/_debug_replacements.php @@ -39,4 +39,15 @@ return [ '%vers_httpd%' => '4.5.6', '%vers_sdk%' => '1.52', '%githubrepo%' => 'https://github.com/MightyPork/esp-vt100-firmware', + + '%ap_dhcp_time%' => '120', + '%ap_dhcp_start%' => '192.168.4.100', + '%ap_dhcp_end%' => '192.168.4.200', + '%ap_addr_ip%' => '192.168.4.1', + '%ap_addr_mask%' => '255.255.255.0', + + '%sta_dhcp_enable%' => '1', + '%sta_addr_ip%' => '192.168.0.33', + '%sta_addr_mask%' => '255.255.255.0', + '%sta_addr_gw%' => '192.168.0.1', ]; diff --git a/html_orig/_pages.php b/html_orig/_pages.php index d72a90e..30e66f5 100644 --- a/html_orig/_pages.php +++ b/html_orig/_pages.php @@ -2,27 +2,32 @@ $pages = []; -/** Add a page */ -function pg($key, $bc, $path) { - global $pages; - $pages[$key] = (object) [ - 'bodyclass' => $bc, - 'path' => $path, - 'label' => tr("menu.$key"), - ]; +if (! function_exists('pg')) { + /** Add a page */ + function pg($key, $bc, $path, $titleKey = null) + { + global $pages; + $pages[$key] = (object) [ + 'key' => $key, + 'bodyclass' => $bc, + 'path' => $path, + 'label' => tr("menu.$key"), + 'title' => $titleKey ? tr($titleKey) : tr("menu.$key"), + ]; + } } pg('cfg_wifi', 'cfg', '/cfg/wifi'); pg('cfg_wifi_conn', '', '/wifi/connecting'); // page without menu that tries to show the connection progress pg('cfg_network', 'cfg', '/cfg/network'); -pg('cfg_term', 'cfg', '/cfg/term'); -pg('about', 'cfg page-about', '/about'); +//pg('cfg_term', 'cfg', '/cfg/term'); pg('help', 'cfg page-help', '/help'); -pg('term', 'term', '/'); +pg('about', 'cfg page-about', '/about'); +pg('term', 'term', '/', 'title.term'); // ajax API -pg('wifi_set', '', '/wifi/set');//'/cfg/wifi/set'); -pg('wifi_scan', '', '/wifi/scan');//'/cfg/wifi/scan'); -pg('wifi_connstatus', '', '/wifi/connstatus'); +pg('wifi_set', 'api', '/wifi/set');//'/cfg/wifi/set'); +pg('wifi_scan', 'api', '/wifi/scan');//'/cfg/wifi/scan'); +pg('wifi_connstatus', 'api', '/wifi/connstatus'); return $pages; diff --git a/html_orig/base.php b/html_orig/base.php new file mode 100644 index 0000000..0b99593 --- /dev/null +++ b/html_orig/base.php @@ -0,0 +1,71 @@ +_env.php.example to _env.php and check the settings inside!"); +} + +require_once __DIR__ . '/_env.php'; + +$prod = defined('STDIN'); +define('DEBUG', !$prod); +$root = DEBUG ? json_encode(ESP_IP) : 'window.location.href'; +define('JS_WEB_ROOT', $root); + +define('LOCALE', isset($_GET['locale']) ? $_GET['locale'] : 'en'); + +$_messages = require(__DIR__ . '/lang/' . LOCALE . '.php'); +$_pages = require(__DIR__ . '/_pages.php'); + +define('APP_NAME', 'ESPTerm'); + +/** URL (dev or production) */ +function url($name, $relative = false) +{ + global $_pages; + if ($relative) return $_pages[$name]->path; + + if (DEBUG) return "/index.php?page=$name"; + else return $_pages[$name]->path; +} + +/** URL label for a button */ +function label($name) +{ + global $_pages; + return $_pages[$name]->label; +} + +function e($s) +{ + return htmlspecialchars($s, ENT_HTML5 | ENT_QUOTES); +} + +function tr($key) +{ + global $_messages; + return isset($_messages[$key]) ? $_messages[$key] : ('??' . $key . '??'); +} + +/** Like eval, but allows */ +function include_str($code) +{ + $tmp = tmpfile(); + $tmpf = stream_get_meta_data($tmp); + $tmpf = $tmpf ['uri']; + fwrite($tmp, $code); + $ret = include($tmpf); + fclose($tmp); + return $ret; +} diff --git a/html_orig/build_html.php b/html_orig/build_html.php new file mode 100644 index 0000000..48be82a --- /dev/null +++ b/html_orig/build_html.php @@ -0,0 +1,19 @@ + $p) { + if ($p->bodyclass == 'api') continue; + echo "Generating: $_k ($p->title)\n"; + $_GET['page'] = $_k; + ob_flush(); // print the message + ob_clean(); // clean up + include(__DIR__ . '/index.php'); + $s = ob_get_contents(); // grab the output + ob_clean(); // clean up + $of = __DIR__ . '/../html/' . $_k . '.tpl'; + file_put_contents($of, $s); // write to a file +} + +ob_flush(); diff --git a/html_orig/index.php b/html_orig/index.php index c779c8d..0a8836a 100644 --- a/html_orig/index.php +++ b/html_orig/index.php @@ -1,68 +1,21 @@ _env.php.example to _env.php and check the settings inside!"); -} -require '_env.php'; - -$prod = defined('STDIN'); -define ('DEBUG', !$prod); -$root = DEBUG ? json_encode(ESP_IP) : 'window.location.href'; -define ('JS_WEB_ROOT', $root); - -define('CUR_PAGE', $_GET['page'] ?: 'term'); -define('LOCALE', $_GET['locale'] ?: 'en'); - -$_messages = require(__DIR__ . '/lang/' . LOCALE . '.php'); -$_pages = require('_pages.php'); +require_once __DIR__ . '/base.php'; -define('APP_NAME', 'ESPTerm'); -define('PAGE_TITLE', $_pages[CUR_PAGE]->label . ' :: ' . APP_NAME); -define('BODYCLASS', $_pages[CUR_PAGE]->bodyclass); +if (!isset($_GET['page'])) $_GET['page'] = 'term'; -/** URL (dev or production) */ -function url($name, $relative=false) { - global $_pages; - if ($relative) return $_pages[$name]->path; - - if (DEBUG) return "/index.php?page=$name"; - else return $_pages[$name]->path; -} - -/** URL label for a button */ -function label($name) { - global $_pages; - return $_pages[$name]->label; -} +$_GET['PAGE_TITLE'] = $_pages[$_GET['page']]->title . ' :: ' . APP_NAME; +$_GET['BODYCLASS'] = $_pages[$_GET['page']]->bodyclass; -function e($s) { - return htmlspecialchars($s, ENT_HTML5|ENT_QUOTES); -} - -function tr($key) { - global $_messages; - return $_messages[$key] ?: ('??'.$key.'??'); -} - -/** Like eval, but allows */ -function include_str($code) { - $tmp = tmpfile(); - $tmpf = stream_get_meta_data($tmp); - $tmpf = $tmpf ['uri']; - fwrite($tmp, $code); - $ret = include($tmpf); - fclose($tmp); - return $ret; -} - -require 'pages/_head.php'; -$_pf = 'pages/'.CUR_PAGE.'.php'; +require __DIR__ . '/pages/_head.php'; +$_pf = __DIR__ . '/pages/'.$_GET['page'].'.php'; if (file_exists($_pf)) { $f = file_get_contents($_pf); - $reps = require('_debug_replacements.php'); + $reps = DEBUG ? require(__DIR__ . '/_debug_replacements.php') : []; $str = str_replace(array_keys($reps), array_values($reps), $f); include_str($str); } else { echo "404"; } -require 'pages/_tail.php'; + +require __DIR__ . '/pages/_tail.php'; diff --git a/html_orig/lang/en.php b/html_orig/lang/en.php index 608cbc7..08bfd23 100644 --- a/html_orig/lang/en.php +++ b/html_orig/lang/en.php @@ -7,12 +7,39 @@ return [ 'menu.cfg_network' => 'Network Configuration', 'menu.cfg_term' => 'Terminal Settings', 'menu.about' => 'About ESPTerm', - 'menu.help' => 'Terminal Help', + 'menu.help' => 'Quick Reference', 'menu.term' => 'Back to Terminal', 'menu.cfg_wifi_conn' => 'Connecting to External Network', - 'box.ap' => 'Built-in Access Point', - 'box.sta' => 'Connect to External Network', + 'title.term' => 'Terminal', + + 'net.ap' => 'Access Point DHCP Config', + 'net.sta' => 'Client IP Config', + + 'net.explain_sta' => ' + Those settings affect the built-in DHCP client. Switching it off + makes ESPTerm use the configured static IP. Please double-check + those settings before submitting, setting them incorrectly may + make it hard to access ESPTerm via the external network.', + + 'net.explain_ap' => ' + Those settings affect the built-in DHCP server in AP mode. + Please double-check those settings before submitting, setting them + incorrectly may render ESPTerm inaccessible via the AP.', + + 'net.ap_dhcp_time' => 'Lease time', + 'net.ap_dhcp_start' => 'Pool start IP', + 'net.ap_dhcp_end' => 'Pool end IP', + 'net.ap_addr_ip' => 'Own IP address', + 'net.ap_addr_mask' => 'Subnet mask', + + 'net.sta_dhcp_enable' => 'Enable DHCP', + 'net.sta_addr_ip' => 'ESPTerm static IP', + 'net.sta_addr_mask' => 'Subnet mask', + 'net.sta_addr_gw' => 'Gateway IP', + + 'wifi.ap' => 'Built-in Access Point', + 'wifi.sta' => 'Connect to External Network', 'wifi.enable' => 'Enabled:', 'wifi.tpw' => 'Transmit Power:', @@ -30,7 +57,6 @@ return [ 'wifi.sta_active_nopw' => '🔓 Open access', 'wifi.connected_ip_is' => 'Connected, IP is ', - 'wifi.submit' => 'Apply!', 'wifi.scanning' => 'Scanning', 'wifi.scan_now' => 'Start scanning!', 'wifi.cant_scan_no_sta' => 'Can\'t scan with Client mode disabled.', @@ -45,6 +71,7 @@ return [ 'wifi.conn.working' => "Connecting to selected AP", 'wifi.conn.fail' => "Connection failed, check your password and try again.", + 'apply' => 'Apply!', 'enabled' => 'Enabled', 'disabled' => 'Disabled', 'yes' => 'Yes', diff --git a/html_orig/pages/_cfg_menu.php b/html_orig/pages/_cfg_menu.php index 2a020ac..569ae99 100644 --- a/html_orig/pages/_cfg_menu.php +++ b/html_orig/pages/_cfg_menu.php @@ -6,7 +6,7 @@ foreach($_pages as $k => $page) { if (strpos($page->bodyclass, 'cfg') === false) continue; - $sel = (CUR_PAGE == $k) ? ' class="selected"' : ''; + $sel = ($_GET['page'] == $k) ? ' class="selected"' : ''; $text = $page->label; $url = e(url($k)); echo "$text"; diff --git a/html_orig/pages/_head.php b/html_orig/pages/_head.php index ff5b31d..3134c1c 100644 --- a/html_orig/pages/_head.php +++ b/html_orig/pages/_head.php @@ -4,16 +4,16 @@ - <?= PAGE_TITLE ?> + <?= $_GET['PAGE_TITLE'] ?> - +
bodyclass, 'cfg') !== false) { +if (strpos($_GET['BODYCLASS'], 'cfg') !== false) { $cfg = true; require __DIR__ . '/_cfg_menu.php'; } @@ -22,5 +22,5 @@ if (strpos($_pages[CUR_PAGE]->bodyclass, 'cfg') !== false) {
Loading… -

+

diff --git a/html_orig/pages/cfg_network.php b/html_orig/pages/cfg_network.php index e69de29..cf7672b 100644 --- a/html_orig/pages/cfg_network.php +++ b/html_orig/pages/cfg_network.php @@ -0,0 +1,76 @@ + + +
+

+ +
+ +
+ +
+
+ +
+ +
+ + +  (min) +
+ +
+ + required> +
+ +
+ + required> +
+ +
+ + required> +
+ +
+ + required> +
+
+ +
+

+ +
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + required> +
+ +
+ + required> +
+ +
+ + required> +
+
diff --git a/html_orig/pages/cfg_wifi.php b/html_orig/pages/cfg_wifi.php index f7370f8..43fa995 100644 --- a/html_orig/pages/cfg_wifi.php +++ b/html_orig/pages/cfg_wifi.php @@ -1,12 +1,8 @@
-

+

-
- -
- -
- +
+
@@ -47,14 +43,10 @@
-

- -
- -
+

-
- +
+
diff --git a/html_orig/pages/term.php b/html_orig/pages/term.php index afa77b4..427efb5 100644 --- a/html_orig/pages/term.php +++ b/html_orig/pages/term.php @@ -7,7 +7,7 @@ }, 2000); -

%term_title%

+

%term_title%