From 798f377656520fc1458eb99584b720dcc108792a Mon Sep 17 00:00:00 2001 From: Tim Marx Date: Wed, 6 Mar 2019 12:29:38 +0100 Subject: [PATCH] added new parameter to pass a command to the newly opened terminal Ext.urlEncode is deprecated, use Ext.Object.toQueryString instead Signed-off-by: Tim Marx Reviewed-by: Dominik Csapak --- www/manager6/Utils.js | 21 +++++++++++++-------- www/manager6/button/ConsoleButton.js | 12 +++++++----- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index 481b51869..b9fa25b72 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -809,12 +809,12 @@ Ext.define('PVE.Utils', { utilities: { function(m, addr, offset, original) { return addr; }); }, - openDefaultConsoleWindow: function(consoles, vmtype, vmid, nodename, vmname) { + openDefaultConsoleWindow: function(consoles, vmtype, vmid, nodename, vmname, cmd) { var dv = PVE.Utils.defaultViewer(consoles); - PVE.Utils.openConsoleWindow(dv, vmtype, vmid, nodename, vmname); + PVE.Utils.openConsoleWindow(dv, vmtype, vmid, nodename, vmname, cmd); }, - openConsoleWindow: function(viewer, vmtype, vmid, nodename, vmname) { + openConsoleWindow: function(viewer, vmtype, vmid, nodename, vmname, cmd) { // kvm, lxc, shell, upgrade if (vmid == undefined && (vmtype === 'kvm' || vmtype === 'lxc')) { @@ -826,9 +826,9 @@ Ext.define('PVE.Utils', { utilities: { } if (viewer === 'html5') { - PVE.Utils.openVNCViewer(vmtype, vmid, nodename, vmname); + PVE.Utils.openVNCViewer(vmtype, vmid, nodename, vmname, cmd); } else if (viewer === 'xtermjs') { - Proxmox.Utils.openXtermJsViewer(vmtype, vmid, nodename, vmname); + Proxmox.Utils.openXtermJsViewer(vmtype, vmid, nodename, vmname, cmd); } else if (viewer === 'vv') { var url; var params = { proxy: PVE.Utils.windowHostname() }; @@ -845,6 +845,10 @@ Ext.define('PVE.Utils', { utilities: { url = '/nodes/' + nodename + '/spiceshell'; params.upgrade = 1; PVE.Utils.openSpiceViewer(url, params); + } else if (vmtype === 'cmd') { + url = '/nodes/' + nodename + '/spiceshell'; + params.cmd = cmd; + PVE.Utils.openSpiceViewer(url, params); } } else { throw "unknown viewer type"; @@ -871,14 +875,15 @@ Ext.define('PVE.Utils', { utilities: { return dv; }, - openVNCViewer: function(vmtype, vmid, nodename, vmname) { - var url = Ext.urlEncode({ + openVNCViewer: function(vmtype, vmid, nodename, vmname, cmd) { + var url = Ext.Object.toQueryString({ console: vmtype, // kvm, lxc, upgrade or shell novnc: 1, vmid: vmid, vmname: vmname, node: nodename, - resize: 'off' + resize: 'off', + cmd: cmd }); var nw = window.open("?" + url, '_blank', "innerWidth=745,innerheight=427"); if (nw) { diff --git a/www/manager6/button/ConsoleButton.js b/www/manager6/button/ConsoleButton.js index d825e1fbb..0451bf594 100644 --- a/www/manager6/button/ConsoleButton.js +++ b/www/manager6/button/ConsoleButton.js @@ -2,7 +2,9 @@ Ext.define('PVE.button.ConsoleButton', { extend: 'Ext.button.Split', alias: 'widget.pveConsoleButton', - consoleType: 'shell', // one of 'shell', 'kvm', 'lxc', 'upgrade' + consoleType: 'shell', // one of 'shell', 'kvm', 'lxc', 'upgrade', 'cmd' + + cmd: undefined, consoleName: undefined, @@ -38,7 +40,7 @@ Ext.define('PVE.button.ConsoleButton', { xtermjs: me.enableXtermjs }; PVE.Utils.openDefaultConsoleWindow(consoles, me.consoleType, me.vmid, - me.nodename, me.consoleName); + me.nodename, me.consoleName, me.cmd); }, menu: [ @@ -49,7 +51,7 @@ Ext.define('PVE.button.ConsoleButton', { type: 'html5', handler: function(button) { var me = this.up('button'); - PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName); + PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName, me.cmd); } }, { @@ -60,7 +62,7 @@ Ext.define('PVE.button.ConsoleButton', { iconCls: 'pve-itype-icon-virt-viewer', handler: function(button) { var me = this.up('button'); - PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName); + PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName, me.cmd); } }, { @@ -70,7 +72,7 @@ Ext.define('PVE.button.ConsoleButton', { type: 'xtermjs', handler: function(button) { var me = this.up('button'); - PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName); + PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName, me.cmd); } } ],