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:
See telnet_spec.js for more information and additional standards.
Usage
const { TelnetSocket, TelnetSpec } = require('telnet-socket');
const telnetSocket = TelnetSocket(rawSocket);
telnetSocket.do.naws();
telnetSocket.on('SB', command => {
if (TelnetSpec.Options.NAWS === command.option) {
const { width, height } = command.optionData;
}
});
The TelnetSocket Class
Properties
passthrough
: Set to true
to enable passthrough mode. Defaults to false
.escapeIACs
: Set to false
to disable escaping of telnet IAC
characters. Defaults to true
.rawSocket
: Access the underlying socket.
Events
General
data
(data)
: Non-protocol datacommand error
(command, error)
: An error ocurred whilest processing a command.end
()
: Socket end
.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
, ...) or unknown comand
.option
: Option sent with the command.optionName
: The name of the option such as NAWS
or unknown option
.optionData
: For options that contain additional data. For example, NAWS
contains height
and width
members, while TTYPE
contains a ttype
member.
Unknown commands are emitted as unknown command
with the same signature described above.
License
See LICENSE.md