// server // app/connectionHandler.js const createDebug = require("debug") var path = require("path") var fs = require("fs") const config = require("./config") var extend = require("util")._extend const debug = createDebug("webssh2:connectionHandler") function handleConnection(req, res, urlParams) { debug("Handling connection") urlParams = urlParams || {} const clientPath = path.resolve( __dirname, '..', 'node_modules', 'webssh2_client', 'client', 'public' ) const connectionParams = extend({}, urlParams) extend(connectionParams, req.query) extend(connectionParams, req.body || {}) const sshCredentials = req.session.sshCredentials || {} const config = { socket: { url: req.protocol + '://' + req.get('host'), path: '/ssh/socket.io' }, ssh: { host: urlParams.host || sshCredentials.host || '', port: urlParams.port || sshCredentials.port || 22, username: sshCredentials.username || '', term: urlParams.sshTerm || sshCredentials.term || config.ssh.term }, autoConnect: !!req.session.sshCredentials } fs.readFile( path.join(clientPath, 'client.htm'), 'utf8', function (err, data) { if (err) { return res.status(500).send('Error loading client file') } var modifiedHtml = data.replace( /(src|href)="(?!http|\/\/)/g, '$1="/ssh/assets/' ) modifiedHtml = modifiedHtml.replace( 'window.webssh2Config = null;', 'window.webssh2Config = ' + JSON.stringify(config) + ';' ) res.send(modifiedHtml) } ) } module.exports = handleConnection