]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/VNCConsole.js
bump version to 8.2.7
[pve-manager.git] / www / manager6 / VNCConsole.js
index b81aa77e14f42c137da3797ae8031f176a1eb55a..9057e447f0cee1b26b609ae84e41b41efc0d2355 100644 (file)
@@ -3,16 +3,16 @@ Ext.define('PVE.noVncConsole', {
     alias: 'widget.pveNoVncConsole',
 
     nodename: undefined,
-
     vmid: undefined,
+    cmd: undefined,
 
-    consoleType: undefined, // lxc or kvm
+    consoleType: undefined, // lxc, kvm, shell, cmd
+    xtermjs: false,
 
     layout: 'fit',
-
     border: false,
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        if (!me.nodename) {
@@ -23,28 +23,50 @@ Ext.define('PVE.noVncConsole', {
            throw "no console type specified";
        }
 
-       if (!me.vmid && me.consoleType !== 'shell') {
+       if (!me.vmid && me.consoleType !== 'shell' && me.consoleType !== 'cmd') {
            throw "no VM ID specified";
        }
 
        // always use same iframe, to avoid running several noVnc clients
        // at same time (to avoid performance problems)
-       var box = Ext.create('Ext.ux.IFrame', { itemid : "vncconsole" });
+       var box = Ext.create('Ext.ux.IFrame', { itemid: "vncconsole" });
 
+       var type = me.xtermjs ? 'xtermjs' : 'novnc';
        Ext.apply(me, {
            items: box,
            listeners: {
                activate: function() {
-                   var url = '/?console=' + me.consoleType + '&novnc=1&node=' + me.nodename + '&resize=scale';
-                   if (me.vmid) {
-                       url += '&vmid='+ me.vmid;
+                   let sp = Ext.state.Manager.getProvider();
+                   if (Ext.isFunction(me.beforeLoad)) {
+                       me.beforeLoad();
                    }
+                   let queryDict = {
+                       console: me.consoleType, // kvm, lxc, upgrade or shell
+                       vmid: me.vmid,
+                       node: me.nodename,
+                       cmd: me.cmd,
+                       'cmd-opts': me.cmdOpts,
+                       resize: sp.get('novnc-scaling', 'scale'),
+                   };
+                   queryDict[type] = 1;
+                   PVE.Utils.cleanEmptyObjectKeys(queryDict);
+                   var url = '/?' + Ext.Object.toQueryString(queryDict);
                    box.load(url);
-               }
-           }
+               },
+           },
        });
 
        me.callParent();
-    }
+
+       me.on('afterrender', function() {
+           me.focus();
+       });
+    },
+
+    reload: function() {
+       // reload IFrame content to forcibly reconnect VNC/xterm.js to VM
+       var box = this.down('[itemid=vncconsole]');
+       box.getWin().location.reload();
+    },
 });