From df404f5f63f1f36888c91db0885a2fa963abb718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Wed, 4 Oct 2017 21:47:32 +0200 Subject: [PATCH 1/5] 2.1.1 - patched cslang --- front-end | 2 +- user/version.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/front-end b/front-end index 4a032ee..420353e 160000 --- a/front-end +++ b/front-end @@ -1 +1 @@ -Subproject commit 4a032ee3b52920bf59ae21b4effc31fdf3cece33 +Subproject commit 420353efc9bdfc6bf4ffbd180b97bc49c4fdc3d5 diff --git a/user/version.h b/user/version.h index 08fc00d..b45211f 100644 --- a/user/version.h +++ b/user/version.h @@ -10,9 +10,9 @@ #define FW_V_MAJOR 2 #define FW_V_MINOR 1 -#define FW_V_PATCH 0 +#define FW_V_PATCH 1 #define FW_V_SUFFIX "" -#define FW_CODENAME "Anthill" // 2.1.0 +#define FW_CODENAME "Anthill" // 2.1 #define FW_CODENAME_QUOTED "\""FW_CODENAME"\"" #define FW_VERSION STR(FW_V_MAJOR) "." STR(FW_V_MINOR) "." STR(FW_V_PATCH) FW_V_SUFFIX From c90de79a34a720f870aa8993b81cd026f71b7b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Fri, 6 Oct 2017 00:12:28 +0200 Subject: [PATCH 2/5] Update README.md --- README.md | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index d6aad11..1a4479a 100644 --- a/README.md +++ b/README.md @@ -5,21 +5,24 @@ ![Photo][photo-hw]
*Fig 1: Breadboard adapter developed for ESPTerm* -As of release 1.0, ESPTerm **passes most of VTTEST test cases** (from the main menu and some Xterm specific), making it -functionally comparable to eg. gnome-terminal, terminator, konsole, GtkTerm or PuTTY. +ESPTerm **passes most of VTTEST test cases**, making it functionally comparable to eg. +gnome-terminal, terminator, konsole, GtkTerm or PuTTY. ESPTerm is **capable of running Midnight Commander** through agetty, **including full -mouse support**, provided agetty is made to believe it's Xterm, which shows ESPTerm is sufficiently well -implemented to work with ncurses. +mouse support**, provided agetty is made to believe it's Xterm, which shows ESPTerm +is compatible with ncurses. + +In addition to control sequences that manipulate the terminal or user input, there +is a set of simple **networking commands** for device-to-device message exchange and +interacting with remote servers. To see what escape sequences are supported, check out this [annotated Xterm manual page][xterm-compare] which was used for reference, or the built-in help page ([online demo][demo-help]) The terminal screen can be accessed using any web browser, even on a phone or tablet. -It works with ESP-01, ESP-01S, ESP-12 and likely many other modules (I use an ESP-12 -on a LoLin NodeMCU board from eBay for development). +It works with ESP-01, ESP-01S, ESP-12 and likely many other modules. With ESPTerm, you can add remote access via WiFi to any embeded project, all you need is -a serial port and some imagination! +UART and some imagination! ## Try it online @@ -48,6 +51,8 @@ It **does not work with**: - Internet Explorer (any version) - crashes, missing JS features - Opera Mini - crashes, missing JS and CSS features - Blackberry browser - not tested, but unlikely +- Safari on old iOS versions - missing features +- WebOS browser - Old Android Browser (before 4.4?) - not tested, likely missing JS features ## Main features @@ -58,6 +63,10 @@ It **does not work with**: - Full UTF-8 support, alternate character sets - Standard mouse tracking modes - You can dynamically set screen title, button labels... +- **Networking commands** + - Command for sending a message to another ESPTerm + - API endpoint (`/api/v1/msg`) for receiving messages sent e.g. from a script on PC, web browser or CURL + - Command for requesting remote servers and getting back response headers and/or body - **Web Terminal Interface** - Real-time screen update via WebSocket - Mouse and keyboard input, works also on mobile @@ -67,6 +76,15 @@ It **does not work with**: - **User-friendly comprehensive WiFi configuration** (Demo: [WiFi][demo-wifi], [network][demo-network] config) - Static IP, DHCP, channel selection, power - SSID search utility for finding your existing network +- **Basic security features** + - Possibility to password-lock parts of the web interface + - Admin password for some sensitive operations (can be changed!) + - Configurable AP password & Hidden attribute +- **Advanced settings storage** + - Stored in Flash + - Seamlesly updated and usually backwards compatible in minor releases + - Settings can be saved as defaults and later easily restored (ideal e.g. for classroom use, saving + good tested settings before giving the module to students) ## Bugs? Ideas? @@ -108,36 +126,31 @@ It can happen that some changes to the WiFi or network config make the module in - To reset all settings to defaults, hold the button a couple seconds until the LED flashes rapidly, then release it. - You can cancel this wipe/reset operation (when triggered by accident) by pressing Reset or disconnecting the power supply. -### Config files +### Config banks ESPTerm has two config "files", one for defaults and one for the currently used settings. In the case of the terminal config, there is also a third, temporary file for changes done via ESC commands. When you get your settings *just right*, you can store them as defaults, which can then be at any time restored by holding the BOOT (GPIO0) button. You can do this on the System Settings page. This asks for an "admin password", -which you can define when building the firmware in the `esphttpdconfig.mk` file. - -The default password is `19738426`. This password can't presently be changed without re-flashing the firmware. +which can (and should!) be changed. This password can't be easily recovered when forgotten. You can also restore everything (except the saved defaults) to "factory defaults", there is a button for this -on the System Settings page. Those are the initial values in the config files. +on the System Settings page. Those are the initial values you would get after a clean install. ## Research resources -Developing ESPTerm wasn't an easy task, because the information is scattered across many places and the existing -terminal emulators I originally used for reference (terminator, Konsole) are not implemented correctly in some details. +Developing the terminal emulator was complicated by the information being scattered across many places and the existing +implementations I used for reference often got some details wrong or didn't implement certain features at all. Xterm proved to be by far the most complete implementation. -A great tool for checking my implementation has proven to be [VTTTEST][vttest] and Xterm as a reference -implementation that is probably the most complete emulator available, although it's cumbersome to use and its age -really shows in the looks. +A great tool for checking my code has proven to be [VTTTEST][vttest]. ESPTerm passes most of the tests on the main page and some additional Xterm specific ones, like Mouse Tracking. -I've comnpiled a list of those I found most helpful here: [VT100 emulation resources][resources] +Here is a list of useful [VT100 emulation resources][resources] I've collected for reference. ## Development ESPTerm's firmware is written in C and is based on SpriteTM's `libesphttpd` http server library forked to -[MightyPork/libesphttpd][httpdlib]. This fork includes various improvements -and changes required by the project. +[MightyPork/libesphttpd][httpdlib]. This fork includes various improvements and changes required by the project. ### Installation for development From be3e06aac13e2f42c791eacbfaf2b9cfba8de560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sun, 8 Oct 2017 11:21:11 +0200 Subject: [PATCH 3/5] version bump --- user/version.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user/version.h b/user/version.h index b45211f..2742035 100644 --- a/user/version.h +++ b/user/version.h @@ -9,10 +9,10 @@ #define STR(x) STR_HELPER(x) #define FW_V_MAJOR 2 -#define FW_V_MINOR 1 -#define FW_V_PATCH 1 +#define FW_V_MINOR 2 +#define FW_V_PATCH 0 #define FW_V_SUFFIX "" -#define FW_CODENAME "Anthill" // 2.1 +#define FW_CODENAME "Bluet" // 2.2 #define FW_CODENAME_QUOTED "\""FW_CODENAME"\"" #define FW_VERSION STR(FW_V_MAJOR) "." STR(FW_V_MINOR) "." STR(FW_V_PATCH) FW_V_SUFFIX From 4e74d1cd79b9e100f286efd0973baa2ccbe081cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sun, 8 Oct 2017 12:54:26 +0200 Subject: [PATCH 4/5] updated front-end ref --- front-end | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end b/front-end index 855d308..4115dec 160000 --- a/front-end +++ b/front-end @@ -1 +1 @@ -Subproject commit 855d308962c6232a5bb9df21c3ab93622d220a06 +Subproject commit 4115decb128c6c9fbaa7d49a0aa6ef0e8b36c5ac From c5670c09bb274f8e7f0a391862d334edf36ae159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sun, 8 Oct 2017 12:57:36 +0200 Subject: [PATCH 5/5] update frontend ref --- front-end | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end b/front-end index 4115dec..d2fabc4 160000 --- a/front-end +++ b/front-end @@ -1 +1 @@ -Subproject commit 4115decb128c6c9fbaa7d49a0aa6ef0e8b36c5ac +Subproject commit d2fabc40f1874cabd7f7ceca690a5874887c3c5d