[pve-devel] [PATCH manager 6/8] add qemu SSHKey Edit for CloudInit

Dominik Csapak d.csapak at proxmox.com
Thu Mar 15 16:21:34 CET 2018


displays all ssh keys in a big textarea, and lets you load one
from a file

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/manager6/Makefile       |  1 +
 www/manager6/qemu/SSHKey.js | 92 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 93 insertions(+)
 create mode 100644 www/manager6/qemu/SSHKey.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index f2cfbdd2..e6d07ae0 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -129,6 +129,7 @@ JSSRC= 				                 	\
 	qemu/CreateWizard.js				\
 	qemu/USBEdit.js					\
 	qemu/AgentIPView.js				\
+	qemu/SSHKey.js					\
 	qemu/IPConfigEdit.js				\
 	lxc/Summary.js					\
 	lxc/Network.js					\
diff --git a/www/manager6/qemu/SSHKey.js b/www/manager6/qemu/SSHKey.js
new file mode 100644
index 00000000..c79653bb
--- /dev/null
+++ b/www/manager6/qemu/SSHKey.js
@@ -0,0 +1,92 @@
+Ext.define('PVE.qemu.SSHKeyInputPanel', {
+    extend: 'Proxmox.panel.InputPanel',
+    xtype: 'pveQemuSSHKeyInputPanel',
+
+    insideWizard: false,
+
+    onGetValues: function(values) {
+	var me = this;
+	if (values.sshkeys) {
+	    values.sshkeys.trim();
+	}
+	if (!values.sshkeys.length) {
+	    values = {};
+	    values['delete'] = 'sshkeys';
+	    return values;
+	} else {
+	    values.sshkeys = encodeURIComponent(values.sshkeys);
+	}
+	return values;
+    },
+
+    items: [
+	{
+	    xtype: 'textarea',
+	    itemId: 'sshkeys',
+	    name: 'sshkeys',
+	    height: 250
+	},
+	{
+	    xtype: 'filebutton',
+	    itemId: 'filebutton',
+	    name: 'file',
+	    text: gettext('Load SSH Key File'),
+	    fieldLabel: 'test',
+	    listeners: {
+		change: function(btn, e, value) {
+		    var me = this.up('inputpanel');
+		    e = e.event;
+		    Ext.Array.each(e.target.files, function(file) {
+			PVE.Utils.loadSSHKeyFromFile(file, function(res) {
+			    var keysField = me.down('#sshkeys');
+			    var old = keysField.getValue();
+			    keysField.setValue(old + res);
+			});
+		    });
+		    btn.reset();
+		}
+	    }
+	}
+    ],
+
+    initComponent: function() {
+	var me = this;
+
+	me.callParent();
+	if (!window.FileReader) {
+	    me.down('#filebutton').setVisible(false);
+	}
+
+    }
+});
+
+Ext.define('PVE.qemu.SSHKeyEdit', {
+    extend: 'Proxmox.window.Edit',
+
+    width: 800,
+
+    initComponent : function() {
+	var me = this;
+
+	var ipanel = Ext.create('PVE.qemu.SSHKeyInputPanel');
+
+	Ext.apply(me, {
+	    subject: gettext('SSH Keys'),
+	    items: [ ipanel ]
+	});
+
+	me.callParent();
+
+	if (!me.create) {
+	    me.load({
+		success: function(response, options) {
+		    var data = response.result.data;
+		    if (data.sshkeys) {
+			data.sshkeys = decodeURIComponent(data.sshkeys);
+			ipanel.setValues(data);
+		    }
+		}
+	    });
+	}
+    }
+});
-- 
2.11.0





More information about the pve-devel mailing list