65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
// 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
|