Skip to content

Instantly share code, notes, and snippets.

@AviiNL
Last active September 7, 2019 22:18
Show Gist options
  • Save AviiNL/4b920432024741f1e80ff9144db4f5c5 to your computer and use it in GitHub Desktop.
Save AviiNL/4b920432024741f1e80ff9144db4f5c5 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
/**
* blessed-ssh2.js
* https://github.com/chjj/blessed
* Copyright (c) 2013-2015, Christopher Jeffrey (MIT License)
* A blessed ssh2 server.
* See: https://github.com/mscdex/ssh2
*/
process.title = 'blessed-ssh2';
var fs = require('fs');
var path = require('path');
var blessed = require('blessed');
var SSH2 = require('ssh2');
var server = SSH2.Server({
hostKeys: [
fs.readFileSync('/root/.ssh/id_rsa')
]
}, function (client) {
client.on('authentication', function (ctx) {
ctx.accept();
});
client.on('ready', function () {
console.log('ready');
});
client.on('session', function (accept, reject) {
var session = accept();
var screen;
var term;
session.on('pty', function (accept, reject, info) {
accept();
term = info.term;
});
session.on('window-change', function (accept, reject, info) {
accept();
if (screen) {
screen.cols = info.cols;
screen.rows = info.rows;
}
session.emit('resize');
});
session.on('shell', function (accept, reject) {
var stream = accept();
var screen = blessed.screen({
smartCSR: true,
terminal: 'xterm-256color',
fullUnicode: true,
input: stream,
output: stream,
});
screen.on('destroy', function () {
stream.exit(0);
stream.end();
});
simpleTest(screen);
});
client.on('close', function () {
if (screen && !screen.destroyed) {
screen.destroy();
}
});
});
});
function simpleTest(screen) {
screen.data.main = blessed.box({
parent: screen,
width: '80%',
height: '90%',
border: 'line',
content: 'Welcome to my server. Here is your own private session.',
style: {
bg: 'red'
}
});
screen.key('i', function () {
screen.data.main.style.bg = 'blue';
screen.render();
});
screen.key(['C-c', 'q'], function (ch, key) {
screen.destroy();
});
screen.render();
}
server.listen(2300);
console.log('Listening on 2300...');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment