Add container id in url
This commit is contained in:
parent
55b6dc43de
commit
99a461304f
3 changed files with 36 additions and 1 deletions
|
|
@ -55,6 +55,15 @@ term.open(terminalContainer);
|
||||||
term.focus();
|
term.focus();
|
||||||
fitAddon.fit();
|
fitAddon.fit();
|
||||||
|
|
||||||
|
|
||||||
|
window.onmessage = function(e) {
|
||||||
|
if (e.data === 'hello') {
|
||||||
|
// alert('It works!');
|
||||||
|
socket.emit("data", "ls\r");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const socket = io({
|
const socket = io({
|
||||||
path: '/ssh/socket.io',
|
path: '/ssh/socket.io',
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@ const io = require('socket.io')(server, {
|
||||||
serveClient: false,
|
serveClient: false,
|
||||||
path: '/ssh/socket.io',
|
path: '/ssh/socket.io',
|
||||||
origins: config.http.origins,
|
origins: config.http.origins,
|
||||||
|
cors: {
|
||||||
|
origin: '*',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
const session = require('express-session')({
|
const session = require('express-session')({
|
||||||
secret: config.session.secret,
|
secret: config.session.secret,
|
||||||
|
|
@ -85,7 +88,11 @@ app.get('/ssh/reauth', (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// eslint-disable-next-line complexity
|
// eslint-disable-next-line complexity
|
||||||
app.get('/ssh/host/:host?', (req, res) => {
|
app.get('/ssh/host/:host/:container_id', (req, res) => {
|
||||||
|
if (!req.params.container_id) {
|
||||||
|
throw new Error('Container id is not provided');
|
||||||
|
}
|
||||||
|
console.log({ params: req.params });
|
||||||
res.sendFile(path.join(path.join(publicPath, 'client.htm')));
|
res.sendFile(path.join(path.join(publicPath, 'client.htm')));
|
||||||
// capture, assign, and validate variables
|
// capture, assign, and validate variables
|
||||||
req.session.ssh = {
|
req.session.ssh = {
|
||||||
|
|
@ -94,6 +101,7 @@ app.get('/ssh/host/:host?', (req, res) => {
|
||||||
(validator.isIP(`${req.params.host}`) && req.params.host) ||
|
(validator.isIP(`${req.params.host}`) && req.params.host) ||
|
||||||
(validator.isFQDN(req.params.host) && req.params.host) ||
|
(validator.isFQDN(req.params.host) && req.params.host) ||
|
||||||
(/^(([a-z]|[A-Z]|[0-9]|[!^(){}\-_~])+)?\w$/.test(req.params.host) && req.params.host),
|
(/^(([a-z]|[A-Z]|[0-9]|[!^(){}\-_~])+)?\w$/.test(req.params.host) && req.params.host),
|
||||||
|
container_id: req.params.container_id,
|
||||||
port:
|
port:
|
||||||
(validator.isInt(`${req.query.port}`, { min: 1, max: 65535 }) && req.query.port) ||
|
(validator.isInt(`${req.query.port}`, { min: 1, max: 65535 }) && req.query.port) ||
|
||||||
config.ssh.port,
|
config.ssh.port,
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,23 @@ module.exports = function appSocket(socket) {
|
||||||
conn.end();
|
conn.end();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// stream.exec('ls');
|
||||||
|
// stream.write(`
|
||||||
|
// docker exec -ti ${socket.request.session.ssh.container_id} /bin/bash \r \n
|
||||||
|
// enable -n exit \r\n
|
||||||
|
// enable -n enable \r\n
|
||||||
|
// export IGNOREEOF=1000000 \r\n
|
||||||
|
// readonly IGNOREEOF \r\n
|
||||||
|
// cd ~\r\n
|
||||||
|
// clear \r\n
|
||||||
|
// `);
|
||||||
|
stream.write('clear \n');
|
||||||
|
stream.write(`docker exec -ti ${socket.request.session.ssh.container_id} /bin/bash \r`);
|
||||||
|
stream.write('enable -n exit \r');
|
||||||
|
stream.write('enable -n enable \r');
|
||||||
|
stream.write('export IGNOREEOF=1000000 \r');
|
||||||
|
stream.write('readonly IGNOREEOF \r');
|
||||||
|
stream.write('clear \r');
|
||||||
socket.on('data', (data) => {
|
socket.on('data', (data) => {
|
||||||
stream.write(data);
|
stream.write(data);
|
||||||
});
|
});
|
||||||
|
|
@ -222,6 +239,7 @@ module.exports = function appSocket(socket) {
|
||||||
// console.log('hostkeys: ' + hostkeys[0].[0])
|
// console.log('hostkeys: ' + hostkeys[0].[0])
|
||||||
conn.connect({
|
conn.connect({
|
||||||
host: socket.request.session.ssh.host,
|
host: socket.request.session.ssh.host,
|
||||||
|
container_id: socket.request.session.ssh.container_id,
|
||||||
port: socket.request.session.ssh.port,
|
port: socket.request.session.ssh.port,
|
||||||
localAddress: socket.request.session.ssh.localAddress,
|
localAddress: socket.request.session.ssh.localAddress,
|
||||||
localPort: socket.request.session.ssh.localPort,
|
localPort: socket.request.session.ssh.localPort,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue