Webshell
Terminal over HTTP and HTTPS. Outrageously inspired from the excellent Wetty - adapted to support web based authentication.
Not production ready.
Install
git clone https://github.com/maestrano/webshell-servercd webshell-servernpm install
Run:
node app.js -p 3000
Configuration - Example accessing docker containers
Edit the config.js file in the project directory to specify how authentication should be handled and what shell command should be run at startup.
E.g.
var config = {}; // Session Configurationconfigsession = key: 'webshell' secret: 'a-session-secret-that-you-should-change'; // Uses passport under the hood// Best option here is to make a REST API call to some authentication// endpoint of your own//// Here we authorise user with login "foo" and password "bar"config { if username == "foo" && password == "bar" && reqbodyresource_id return ; else return ; } // Which command to run upon user authentication// Here we attach to a docker containerconfig { return script: '/usr/local/bin/docker' args: 'exec' '-it' requserresource_id '/bin/bash' ;} moduleexports = config;
Run your application:
node app.js -p 3000
Login using foo/bar:
http://localhost:3000/login?rid=my-container-name-or-id
You should be inside your docker container.
Run webshell as a service daemon
Install webshell-server globally with -g option:
sudo npm install webshell-server -gsudo cp /usr/local/lib/node_modules/webshell-server/bin/webshell-server.conf /etc/initsudo start webshell-server
This will start webshell-server on port 9443.
Webshell configuration can be edited at /etc/webshell/config.js