Skip to content

maestrano/webshell-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Webshell Server

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-server
cd webshell-server
npm 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 Configuration
config.session = {
  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.authFn = function(req, username, password, cb) {
  if (username == "foo" && password == "bar" && req.body.resource_id) {
    return cb(null, { id: username, resource_id: req.body.resource_id });
  } else {
    return cb(null, false, { message: 'Invalid credentials' });
  }
}

// Which command to run upon user authentication
// Here we attach to a docker container
config.shellEntrypoint = function(req) {
  return {
    script: '/usr/local/bin/docker',
    args: ['exec', '-it', req.user.resource_id, '/bin/bash'],
  };
}

module.exports = 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 -g
sudo cp /usr/local/lib/node_modules/webshell-server/bin/webshell-server.conf /etc/init
sudo start webshell-server

This will start webshell-server on port 9443.

Webshell configuration can be edited at /etc/webshell/config.js

About

Web based shell with configurable authentication

Resources

License

Stars

Watchers

Forks

Packages

No packages published