0.2.4 • Published 3 years ago
telnet-socket v0.2.4
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 totrueto enable passthrough mode. Defaults tofalse.escapeIACs: Set tofalseto disable escaping of telnetIACcharacters. Defaults totrue.rawSocket: Access the underlying socket.
Events
General
data(data): Non-protocol datacommand 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 asNAWSorunknown option.optionData: For options that contain additional data. For example,NAWScontainsheightandwidthmembers, whileTTYPEcontains attypemember.
Unknown commands are emitted as unknown command with the same signature described above.
License
See LICENSE.md