// server // app/connectionHandler.js var path = require('path'); var fs = require('fs'); var extend = require('util')._extend; function handleConnection(req, res, urlParams) { urlParams = urlParams || {}; // The path to the client directory of the webssh2 module. var clientPath = path.resolve(__dirname, '..', 'node_modules', 'webssh2_client', 'client', 'public'); // Combine URL parameters, query parameters, and form data var connectionParams = extend({}, urlParams); extend(connectionParams, req.query); extend(connectionParams, req.body || {}); // Inject configuration var config = { socket: { url: req.protocol + '://' + req.get('host'), path: '/ssh/socket.io' }, ssh: { host: urlParams.host || '', port: urlParams.port || 22 }, autoConnect: !!req.session.sshCredentials }; // Read the client.htm file fs.readFile(path.join(clientPath, 'client.htm'), 'utf8', function(err, data) { if (err) { return res.status(500).send('Error loading client file'); } // Replace relative paths with the correct path var modifiedHtml = data.replace(/(src|href)="(?!http|\/\/)/g, '$1="/ssh/assets/'); // Inject the configuration into the HTML modifiedHtml = modifiedHtml.replace('window.webssh2Config = null;', 'window.webssh2Config = ' + JSON.stringify(config) + ';'); // Send the modified HTML res.send(modifiedHtml); }); } module.exports = handleConnection;