Giter Site home page Giter Site logo

sshbbs's Introduction

sshbbs

Simple wrapper over mscdex/ssh2 to make your in-app SSH server using chjj/blessed for presentation layer.

Installation

npm install sshbbs

or

yarn add sshbbs

Usage

Generate your host keys using:

ssh-keygen -f host.key -N '' -t rsa

Use following example as a reference:

const 
    fs = require('fs'),
    blessed = require('blessed'),
    sshbbs = require('sshbbs')

sshbbs({
    host: '127.0.0.1',
    port: '52222',
    passwords: {
        hello: 'world',
    },
    keys: {
        test: fs.readFileSync('authorized_keys'),
    },
    hostKey: fs.readFileSync('host.key'),
}, (screen, login) => {
    // This will be called on every successful connection
    let mainScreen = blessed.box({
        parent: screen,
        top: 0,
        left: 0,
        width: '100%',
        height: '50%',
        align: 'center',
        valign: 'middle',
        border: {
            type: 'line',
        },
        content: `Welcome, ${login}! Press 'q' to quit.`,
        style: {
            fg: 'yellow',
            bg: 'black',
            border: {
                fg: 'grey',
            }
        }
    })
    
    let counter = blessed.box({
        parent: screen,
        top: '50%',
        left: 0,
        width: '100%',
        height: '50%',
        align: 'center',
        valign: 'middle',
        border: {
            type: 'line',
        },
        content: `Here we go!`,
        style: {
            fg: 'white',
            bg: 'black',
            border: {
                fg: 'grey',
            }
        }
    })

    screen.key(['C-c', 'q'], (ch, key) => {
        screen.destroy()
    })
    
    let cnt = 0
    let intrv = setInterval(() => {
        if (screen.destroyed) {
            clearInterval(intrv)
            return
        }
        cnt++
        counter.setContent(`Counter ${cnt}`)
        console.log(cnt)
        screen.render()
    }, 1000)

    screen.render()
}).then((port) => {
    console.log(` -- listening at ${port}`)
})

This will start a SSH server on 127.0.0.1:52222, which accepts login hello with password world or login test with public key in authorized_keys file.

Connect using:

ssh -p 52222 [email protected]

Have fun!

sshbbs's People

Contributors

jfedyczak avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.