Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maestrano/webshell-server
Web based shell with configurable authentication
https://github.com/maestrano/webshell-server
Last synced: 3 months ago
JSON representation
Web based shell with configurable authentication
- Host: GitHub
- URL: https://github.com/maestrano/webshell-server
- Owner: maestrano
- License: mit
- Created: 2016-02-20T03:29:41.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-04-03T05:00:58.000Z (over 8 years ago)
- Last Synced: 2024-07-09T13:02:32.499Z (4 months ago)
- Language: JavaScript
- Size: 145 KB
- Stars: 15
- Watchers: 3
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-webshell - **11**星
README
Webshell Server
-----------------Terminal over HTTP and HTTPS. Outrageously inspired from the excellent [Wetty](https://github.com/krishnasrinivas/wetty) - adapted to support web based authentication.
Not production ready.
Install
-------
```bash
git clone https://github.com/maestrano/webshell-server
cd webshell-server
npm install
```Run:
-----------```bash
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.
```js
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:**
```bash
node app.js -p 3000
```**Login using foo/bar:**
http://localhost:3000/login?rid=my-container-name-or-idYou should be inside your docker container.
Run webshell as a service daemon
-----------------------------Install webshell-server globally with -g option:
```bash
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