Escape Sequences, Session Termination & Line-Interactive Mode #26
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements
ssh
-style escape sessions for sending various control and session commands when inside a remote session. The escape sequence is identical tossh
. Pressing~
immdiately after a newline, will bring the session into escape mode. Following up with?
will display the quick reference, and thus all available escape sequences:Of note here is that it is now possible to easily terminate an unresponsive session with
~.
.Another very useful feature that this PR implements is a line-interactive mode, that can be toggled with
~L
. In this mode,rnsh
will buffer input until it can send a complete command (usually flushed by hitting enter, or a number of other "flush triggers"). The line-interactive mode tries to preserve console display, and features local echo when enabled. The logic behind this is still a bit rudimentary, but it works very well in most cases.The line-interactive mode is very useful over extremely low-bandwidth links, where you don't want to ping-pong 4 packets back and forth every time a character is typed.
This PR, together with the adaptive compression PR, and the latest changes in
RNS
version0.5.9
, makes it practically feasible run fully interactive remote sessions on remote system withrnsh
over even the most low-bandwidth links that Reticulum supports.