telnet-socket
A standards compliant Telnet implementation for Node.js
Standards
In addition to RFC 854, a number of additional RFCs, proposed RFCs, and adopted options such as GMCP and MSSP are implemented. An emphasis on standards used with ANSI-BBS related terminals is taken, though PRs are certainly welcome if something of use is missing.
Some additional standards include:
- RFC 856 - Telnet Binary Transmission
- RFC 857 - Telnet Echo Option
- RFC 858 - Telnet Suppress Go Ahead Option
- RFC 1073 - Telnet Window Size Option
- RFC 1091 - Telnet Terminal-Type Option
- RFC 1572 - Telnet Environment Option
See telnet_spec.js for more information and additional standards.
Usage
const { TelnetSocket, TelnetSpec } = require('telnet-socket');
const telnetSocket = TelnetSocket(rawSocket);
// request client to send NAWS
telnetSocket.do.naws();
telnetSocket.on('SB', command => {
if (TelnetSpec.Options.NAWS === command.option) {
// client sent us NAWS
const { width, height } = command.optionData;
// ...do something with height and width
}
});
The TelnetSocket Class
Properties
-
passthrough
: Set totrue
to enable passthrough mode. Defaults tofalse
. -
escapeIACs
: Set tofalse
to disable escaping of telnetIAC
characters. Defaults totrue
. -
rawSocket
: Access the underlying socket.
Events
General
-
data
(data)
: Non-protocol data -
command error
(command, error)
: An error ocurred whilest processing a command. -
end
()
: Socketend
. -
error
(error)
: A socket error has occurred.
Commands
Events are emitted for specific Telnet commands such as (but not limited to) DO
, DONT
, WILL
, WONT
and AYT
with the signature of (command)
where command
has the following properties:
-
code
: The raw byte code of the command. -
name
: The command name (DO
,DONT
, ...) orunknown comand
. -
option
: Option sent with the command. -
optionName
: The name of the option such asNAWS
orunknown option
. -
optionData
: For options that contain additional data. For example,NAWS
containsheight
andwidth
members, whileTTYPE
contains attype
member.
Unknown commands are emitted as unknown command
with the same signature described above.
License
See LICENSE.md