MCPcopy Create free account
hub / github.com/mscdex/ssh2 / exec

Method exec

lib/protocol/Protocol.js:1264–1294  ·  view source on GitHub ↗
(chan, cmd, wantReply)

Source from the content-addressed store, hash-verified

1262 sendPacket(this, this._packetRW.write.finalize(packet));
1263 }
1264 exec(chan, cmd, wantReply) {
1265 if (this._server)
1266 throw new Error('Client-only method called in server mode');
1267
1268 // Does not consume window space
1269
1270 const isBuf = Buffer.isBuffer(cmd);
1271 const cmdLen = (isBuf ? cmd.length : Buffer.byteLength(cmd));
1272 let p = this._packetRW.write.allocStart;
1273 const packet = this._packetRW.write.alloc(1 + 4 + 4 + 4 + 1 + 4 + cmdLen);
1274
1275 packet[p] = MESSAGE.CHANNEL_REQUEST;
1276
1277 writeUInt32BE(packet, chan, ++p);
1278
1279 writeUInt32BE(packet, 4, p += 4);
1280 packet.utf8Write('exec', p += 4, 4);
1281
1282 packet[p += 4] = (wantReply === undefined || wantReply === true ? 1 : 0);
1283
1284 writeUInt32BE(packet, cmdLen, ++p);
1285 if (isBuf)
1286 packet.set(cmd, p += 4);
1287 else
1288 packet.utf8Write(cmd, p += 4, cmdLen);
1289
1290 this._debug && this._debug(
1291 `Outbound: Sending CHANNEL_REQUEST (r:${chan}, exec: ${cmd})`
1292 );
1293 sendPacket(this, this._packetRW.write.finalize(packet));
1294 }
1295 signal(chan, signal) {
1296 if (this._server)
1297 throw new Error('Client-only method called in server mode');

Callers 2

parseHeaderFunction · 0.45
keyParser.jsFile · 0.45

Calls 3

writeUInt32BEFunction · 0.85
allocMethod · 0.45
finalizeMethod · 0.45

Tested by

no test coverage detected