webssh2/app/connectionHandler.js

59 lines
1.3 KiB
JavaScript

// server
// app/connectionHandler.js
const createDebug = require('debug')
const path = require('path')
const fs = require('fs')
const 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 tempConfig = {
socket: {
url: req.protocol + '://' + req.get('host'),
path: '/ssh/socket.io'
},
autoConnect: false // Default to false
}
// Check if the current route is /host/:host
debug('handleConnection req.path:', req.path)
if (req.path.startsWith('/host/')) {
tempConfig.autoConnect = true
}
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(tempConfig) + ';'
)
res.send(modifiedHtml)
}
)
}
module.exports = handleConnection