Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
server:terminal [2019/06/20 17:09] – [SSH] document the cryptlib.key file here. digital man | server:terminal [2022/02/22 21:10] – [Extended Keys] Up arrow is Ctrl-Caret, not Ctrl-Tilde. Add Dec and Hex columns. digital man |
---|
| |
* Supports ANSI X3.64 (color and monochrome), PETSCII, [[wp>Remote_imaging_protocol|RIP]], and dumb terminals | * Supports ANSI X3.64 (color and monochrome), PETSCII, [[wp>Remote_imaging_protocol|RIP]], and dumb terminals |
* Supports [[wp>ASCII|US-ASCII]], [[wp>Code_page_437|CP437]] (a.k.a. IBM Extended ASCII) and CBM/[[wp>PETSCII]] character sets | * Supports [[wp>ASCII|US-ASCII]], [[wp>Code_page_437|CP437]] (a.k.a. IBM Extended ASCII), UTF-8 (UNICODE), and CBM/[[wp>PETSCII]] character sets |
* Supported Protocols: [[#Telnet]], [[#RLogin]], and [[#SSH]] | * Supported Protocols: [[#Telnet]], [[#RLogin]], and [[#SSH]] |
| |
The Synchronet Terminal Server endeavors to support most extended-keys (e.g. home, end, arrow-keys, etc.) on most terminals while simultaneously supporting control-key equivalents for all terminals. | The Synchronet Terminal Server endeavors to support most extended-keys (e.g. home, end, arrow-keys, etc.) on most terminals while simultaneously supporting control-key equivalents for all terminals. |
| |
^ Extended Key ^ Ctrl-Key ^ ANSI((ANSI X3.64/ECMA-048 escape sequence)) ^ Other((e.g. VT-220 or XTerm escape sequence)) ^ Description (typical use) ^ | ^ Extended Key ^ Decimal ^ Hex ^ Ctrl-Key ^ ANSI((ANSI X3.64/ECMA-048 escape sequence)) ^ Other((e.g. VT-220 or XTerm escape sequence)) ^ Description (typical use) ^ |
| Home | Ctrl-B | \e[H | \e[1~ | Move cursor to beginning of line or top of page/list/document | | | Home | 2 | 02 | Ctrl-B | \e[H | \e[1~ | Move cursor to beginning of line or top of page/list/document | |
| End | Ctrl-E | \e[K and \e[F | \e[4~ | Move cursor to end of line or bottom of page/list/document | | | End | 5 | 05 | Ctrl-E | \e[K and \e[F | \e[4~ | Move cursor to end of line or bottom of page/list/document | |
| Up-arrow | Ctrl-tilde | \e[A | | Move cursor up one line or recall previous history item | | | Up-arrow | 30 | 1E | Ctrl-Caret | \e[A | | Move cursor up one line or recall previous history item | |
| Down-arrow | Ctrl-J | \e[B | | Move cursor down one line or recall next history item | | | Down-arrow | 10 | 0A | Ctrl-J | \e[B | | Move cursor down one line or recall next history item | |
| Left-arrow | Ctrl-] | \e[D | | Move cursor to the left | | | Left-arrow | 27 | 1B | Ctrl-] | \e[D | | Move cursor to the left | |
| Right-arrow | Ctrl-F | \e[C | | Move cursor to the right | | | Right-arrow | 6 | 06 | Ctrl-F | \e[C | | Move cursor to the right | |
| Page-up | Ctrl-P | \e[V | \e[5~ | Move cursor up one page | | | Page-up | 16 | 10 | Ctrl-P | \e[V | \e[5~ | Move cursor up one page | |
| Page-down | Ctrl-N | \e[U | \e[6~ | Move cursor up one page | | | Page-down | 14 | 0E | Ctrl-N | \e[U | \e[6~ | Move cursor up one page | |
| Insert | Ctrl-V | \e[@ | \e[2~ | Toggle insert/overwrite text mode | | | Insert | 22 | 16 | Ctrl-V | \e[@ | \e[2~ | Toggle insert/overwrite text mode | |
| Delete | Ctrl-? | | \e[3~ | Delete character under cursor (delete-right), also Ctrl-Backspace | | | Delete | 127 | 7F | Ctrl-? | | \e[3~ | Delete character under cursor (delete-right), also Ctrl-Backspace | |
| |
| |
| |
The Synchronet Terminal Server will negotiate Telnet options with the client (enforcing echo and non-line-at-a-time modes), perform ''IAC'' (character 255) escaping, and CR/LF->CR and CR/NUL->CR translation (when not in //binary mode//). | The Synchronet Terminal Server will negotiate Telnet options with the client (enforcing echo and non-line-at-a-time modes), perform ''IAC'' (character 255) escaping, and CR/LF->CR and CR/NUL->CR translation (when not in //binary mode//). |
| |
| ==== Options ==== |
| |
| Telnet options are negotiated between the client and server, normally without any indication to the user. |
| |
| Telnet options can be re-negotiated at any time during a Telnet session, but most options are only negotiated during the initial connection. |
| |
| ^ Options ^ Request ^ Description ^ |
| | ECHO | WILL | Server will provide the echo of input keys, so request the the terminal does not echo (RFC-[[rfc>857]])| |
| | SUP_GA | WILL | Server does not send or expect to receive any Telnet Go-Ahead (GA) commands (RFC-[[rfc>858]]) | |
| | TERM_TYPE | DO | Server would like the client to provide the terminal-type, if available (RFC-[[rfc>930]]) | |
| | TERM_SPEED | DO | Server would like the client to provide the terminal-speed, if available (RFC-[[rfc>1079]]) | |
| | SEND_LOCATION | DO | Server would like the client to provide the user's location, if available (RFC-[[rfc>779]]) | |
| | NEGOTIATE_WINDOW_SIZE | DO | Server would like the client to provide the terminal dimensions (cols x rows), if available (RFC-[[rfc>1073]]) | |
| | NEW_ENVIRON | DO | Server would like the client to provide environment variables (RFC-[[rfc>1572]]) - unused | |
| |
| The BINARY_TX option (disabling special treatment of CR/LF and CR/NUL) is dynamically negotiated as needed, for file transfers. |
| |
| === Debugging === |
| |
| The Terminal server logs all Telnet option negotiations using a //Debugging// log-level: |
| |
| <file> |
| 6/20 05:56:41p Node 1 sending telnet cmd: WILL Echo |
| 6/20 05:56:41p Node 1 sending telnet cmd: WILL Suppress Go Ahead |
| 6/20 05:56:41p Node 1 sending telnet cmd: DO Terminal Type |
| 6/20 05:56:41p Node 1 sending telnet cmd: DO Terminal Speed |
| 6/20 05:56:41p Node 1 sending telnet cmd: DO Send Location |
| 6/20 05:56:41p Node 1 sending telnet cmd: DO Negotiate About Window Size |
| 6/20 05:56:41p Node 1 sending telnet cmd: DO New Environment Option |
| 6/20 05:56:41p Node 1 received telnet cmd: DO Echo |
| 6/20 05:56:41p Node 1 received telnet cmd: DO Suppress Go Ahead |
| 6/20 05:56:41p Node 1 received telnet cmd: WILL Terminal Type |
| 6/20 05:56:41p Node 1 requesting telnet terminal type |
| 6/20 05:56:41p Node 1 received telnet cmd: WON'T Terminal Speed |
| 6/20 05:56:41p Node 1 sending telnet cmd: DON'T Terminal Speed |
| 6/20 05:56:41p Node 1 received telnet cmd: WON'T Send Location |
| 6/20 05:56:41p Node 1 sending telnet cmd: DON'T Send Location |
| 6/20 05:56:41p Node 1 received telnet cmd: WILL Negotiate About Window Size |
| 6/20 05:56:41p Node 1 received telnet sub-negotiation command: Negotiate About Window Size |
| 6/20 05:56:41p Node 1 received telnet window size: 80x24 |
| 6/20 05:56:41p Node 1 received telnet cmd: WON'T New Environment Option |
| 6/20 05:56:41p Node 1 received telnet sub-negotiation command: Terminal Type |
| 6/20 05:56:41p Node 1 received telnet terminal type: ANSI |
| </file> |
| |
| |
===== SSH ===== | ===== SSH ===== |
'Couldn't import the session key used to protect the private key' (-22) getting private key | 'Couldn't import the session key used to protect the private key' (-22) getting private key |
===== RLogin ===== | ===== RLogin ===== |
[[ftp://ftp.rfc-editor.org/in-notes/rfc1282.txt|RLogin]] clients are supported, by default, on the standard RLogin TCP port: 513. | BSD Rlogin (RFC-[[rfc>1282]]) clients are supported, by default, on the standard RLogin TCP port: 513. |
| |
| ==== History ==== |
| |
==== History of Synchronet's support for BSD RLogin ==== | Synchronet's RLogin support has gone through some significant changes since its introduction in 2000. |
| |
=== SBBS v3.00c 2000 === | === SBBS v3.00c 2000 === |
| |
* [[person:digital man]] removed and deprecated the ''USE_2ND_RLOGIN'' option (and related [[monitor:sbbscon|sbbs]] command-line option and [[monitor:sbbsctrl]] checkbox) as this is now the **only** behavior supported by the Synchronet [[server:Terminal]] Server: the first string received from the RLogin client (''client-user-name'') **may** be a password, the second string received (''server-user-name'') **must** be a valid user ID (alias). | * [[person:digital man]] removed and deprecated the ''USE_2ND_RLOGIN'' option (and related [[monitor:sbbscon|sbbs]] command-line option and [[monitor:sbbsctrl]] checkbox) as this is now the **only** behavior supported by the Synchronet [[server:Terminal]] Server: the first string received from the RLogin client (''client-user-name'') **may** be a password, the second string received (''server-user-name'') **must** be a valid user ID (alias). |
* [[person:digital man]] changed the ''bbs.rlogin_gate'' function to accept 3 optional arguments: ''client-user-name'', ''server-user-name'', and ''terminal'', in the order specified by the RFC 1282. | * [[person:digital man]] changed the ''bbs.rlogin_gate'' function to accept 3 optional arguments: ''client-user-name'', ''server-user-name'', and ''terminal'', in the order specified by the RFC-[[rfc>1282]]. |
| |
===== JavaScript ===== | ===== JavaScript ===== |