Files
xOld_appRoboticsDriver/node_modules/telnet-stream/lib/telnetOutput.js
2025-12-27 20:24:47 +01:00

118 lines
3.1 KiB
JavaScript

// Generated by CoffeeScript 2.6.1
(function() {
// telnetOutput.coffee
// Copyright 2017 Patrick Meade.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//----------------------------------------------------------------------------
var TELNET_DO, TELNET_DONT, TELNET_IAC, TELNET_SUB_BEGIN, TELNET_SUB_END, TELNET_WILL, TELNET_WONT, TelnetOutput, Transform;
TELNET_DO = 253;
TELNET_DONT = 254;
TELNET_IAC = 255;
TELNET_SUB_BEGIN = 250;
TELNET_SUB_END = 240;
TELNET_WILL = 251;
TELNET_WONT = 252;
({Transform} = require("stream"));
TelnetOutput = class TelnetOutput extends Transform {
constructor(options) {
super(options);
}
_transform(chunk, encoding, done) {
this.push(this._duplicateIAC(chunk));
return done();
}
_duplicateIAC(buffer) {
var byte, i, len, xlateBuf, xlateIndex;
xlateIndex = 0;
xlateBuf = Buffer.alloc(buffer.length * 2);
for (i = 0, len = buffer.length; i < len; i++) {
byte = buffer[i];
xlateBuf[xlateIndex] = byte;
xlateIndex++;
if (byte === TELNET_IAC) {
xlateBuf[xlateIndex] = byte;
xlateIndex++;
}
}
return xlateBuf.slice(0, xlateIndex);
}
_writeOption(command, option) {
var cmdBuf;
cmdBuf = Buffer.alloc(3);
cmdBuf[0] = TELNET_IAC;
cmdBuf[1] = command;
cmdBuf[2] = option;
return this.push(cmdBuf);
}
writeCommand(command) {
var cmdBuf;
cmdBuf = Buffer.alloc(2);
cmdBuf[0] = TELNET_IAC;
cmdBuf[1] = command;
return this.push(cmdBuf);
}
writeDo(option) {
return this._writeOption(TELNET_DO, option);
}
writeDont(option) {
return this._writeOption(TELNET_DONT, option);
}
writeSub(option, buffer) {
var negBuf, subBegin, subBuf, subEnd;
negBuf = this._duplicateIAC(buffer);
subBegin = Buffer.alloc(3);
subBegin[0] = TELNET_IAC;
subBegin[1] = TELNET_SUB_BEGIN;
subBegin[2] = option;
subEnd = Buffer.alloc(2);
subEnd[0] = TELNET_IAC;
subEnd[1] = TELNET_SUB_END;
subBuf = Buffer.concat([subBegin, negBuf, subEnd], negBuf.length + 5);
return this.push(subBuf);
}
writeWill(option) {
return this._writeOption(TELNET_WILL, option);
}
writeWont(option) {
return this._writeOption(TELNET_WONT, option);
}
};
exports.TelnetOutput = TelnetOutput;
//----------------------------------------------------------------------------
// end of telnetOutput.coffee
}).call(this);