29 lines
696 B
JavaScript
29 lines
696 B
JavaScript
var express = require('express');
|
|
var pty = require('node-pty');
|
|
|
|
const app = express();
|
|
const expressWs = require('express-ws')(app);
|
|
|
|
// Serve static assets from ./static
|
|
app.use(express.static('./'));
|
|
|
|
// Instantiate shell and set up data handlers
|
|
expressWs.app.ws('/shell', (ws, req) => {
|
|
// Spawn the shell
|
|
const shell = pty.spawn('/bin/bash', [], {
|
|
name: 'xterm-color',
|
|
cwd: process.env.PWD,
|
|
env: process.env
|
|
});
|
|
// For all shell data send it to the websocket
|
|
shell.on('data', (data) => {
|
|
ws.send(data);
|
|
});
|
|
// For all websocket data send it to the shell
|
|
ws.on('message', (msg) => {
|
|
shell.write(msg);
|
|
});
|
|
});
|
|
|
|
// Start the application
|
|
app.listen(9774); |