Я настраиваю канал диссонанса для работы в качестве терминала SSH. Сервер NodeJS обеспечит соединение. Пользовательская команда создаст новый экземпляр терминала, который затем можно будет использовать в качестве оболочки.
Я не знаю, как создать терминал в дочернем процессе. Я пытался использовать команды screen и bash безрезультатно.
Я использую CentOS 7.
// Code For Discord
var $discord = {
currentInterface: null,
send: (data) => {
/* some code that sends data to a discord channel */
},
receive: (data) => {
// Send Data To Terminal
if ($discord.currentInterface) {
$discord.currentInterface.send(data);
} else {
$discord.send('**Error:** Terminal has not been spawned.');
}
},
command: (name, args) => {
// Recieve Discord Commands
switch (name) {
case 'spawn':
$discord.currentInterface = $interface();
break;
}
}
};
// Create Interface
var $interface = function () {
// Define object
let x = {
terminal: child_process.spawn('screen'),
send: (data) => {
// Send Input to Terminal
x.process.stdin.write(data + '\n');
},
receive: (data) => {
// Send Output to Discord
$discord.send(data);
}
};
// Process Output
x.terminal.on('stdout', (data) => {
x.receive(data);
});
// Process Errors
x.terminal.on('stderr', (error) => {
x.receive(`**Error:**\n${error}`);
});
// Return
return x;
};
Проблема заключается в создании самого терминала. Как создать оболочку в стиле SSH в дочернем процессе?