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,rnshwill 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
RNSversion0.5.9, makes it practically feasible run fully interactive remote sessions on remote system withrnshover even the most low-bandwidth links that Reticulum supports.