webssh2/app/connectionHandler.js
2024-08-13 12:38:00 +00:00

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