'use strict'; var express = require('express'); var http = require('http'); var https = require('https'); var path = require('path'); var server = require('socket.io'); var pty = require('pty.js'); var fs = require('fs'); var opts = require('optimist') .options({ sslkey: { demand: false, description: 'path to SSL key' }, sslcert: { demand: false, description: 'path to SSL certificate' }, sshhost: { demand: false, description: 'ssh server host' }, sshport: { demand: false, description: 'ssh server port' }, sshuser: { demand: false, description: 'ssh user' }, sshauth: { demand: false, description: 'defaults to "password", you can use "publickey,password" instead' }, port: { demand: true, alias: 'p', description: 'wetty listen port' }, whitelist: { demand: false, description: 'whitelist of username/hosts, you can connect to' } }).boolean('allow_discovery').argv; var runhttps = false; var sshport = 22; var globalsshhost = 'localhost'; var sshhost = globalsshhost; var sshauth = 'password'; var globalsshuser = ''; var whitelist = ['^.*@localhost$']; if (opts.sshport) { sshport = opts.sshport; } if (opts.sshhost) { sshhost = opts.sshhost; } if (opts.sshauth) { sshauth = opts.sshauth; } if (opts.sshuser) { globalsshuser = opts.sshuser; } if (opts.sslkey && opts.sslcert) { runhttps = true; opts.ssl = {}; opts.ssl.key = fs.readFileSync(path.resolve(opts.sslkey)); opts.ssl.cert = fs.readFileSync(path.resolve(opts.sslcert)); } if (opts.whitelist) { whitelist = opts.whitelist.split(','); } function checkWhitelist(target){ for (var idx = 0; idx