/*global QRCode*/
Ext.define('PVE.Storage.PBSKeyShow', {
extend: 'Ext.window.Window',
- alias: ['widget.pveKeyShow'],
+ xtype: 'pvePBSKeyShow',
mixins: ['Proxmox.Mixin.CBind'],
width: 600,
{
xtype: 'textfield',
fieldLabel: gettext('Key'),
- labelWidth: 30,
+ labelWidth: 80,
inputId: 'encryption-key-value',
cbind: {
value: '{key}',
},
{
xtype: 'component',
- html: gettext('Keep your master key safe, but easily accessible for disaster recovery.')
+ html: gettext('Keep your encryption key safe, but easily accessible for disaster recovery.')
+ '<br>' + gettext('We recommend the following safe-keeping strategy:'),
},
{
border: false,
padding: '10 10 10 10',
userCls: 'pmx-hint',
- html: gettext('Please save the encryption key - loosing it will render any backup created with it unuseable'),
+ html: gettext('Please save the encryption key - losing it will render any backup created with it unusable'),
},
],
buttons: [
},
},
],
- paperkey: function(key) {
+ paperkey: function(keyString) {
let me = this;
+ const key = JSON.parse(keyString);
+
const qrwidth = 500;
let qrdiv = document.createElement('div');
let qrcode = new QRCode(qrdiv, {
height: qrwidth,
correctLevel: QRCode.CorrectLevel.H,
});
- qrcode.makeCode(key);
+ qrcode.makeCode(keyString);
+
+ let shortKeyFP = '';
+ if (key.fingerprint) {
+ shortKeyFP = PVE.Utils.render_pbs_fingerprint(key.fingerprint);
+ }
let printFrame = document.createElement("iframe");
Object.assign(printFrame.style, {
height: "0",
border: "0",
});
- const prettifiedKey = JSON.stringify(JSON.parse(key), null, 2);
+ const prettifiedKey = JSON.stringify(key, null, 2);
const keyQrBase64 = qrdiv.children[0].toDataURL("image/png");
const html = `<html><head><script>
window.addEventListener('DOMContentLoaded', (ev) => window.print());
</script><style>@media print and (max-height: 150mm) {
h4, p { margin: 0; font-size: 1em; }
}</style></head><body style="padding: 5px;">
- <h4>Encryption Key - Storage '${me.sid}'</h4>
-<p style="font-size: 1.2em; font-family: monospace; white-space: pre-wrap;">
+ <h4>Encryption Key - Storage '${me.sid}' (${shortKeyFP})</h4>
+<p style="font-size:1.2em;font-family:monospace;white-space:pre-wrap;overflow-wrap:break-word;">
-----BEGIN PROXMOX BACKUP KEY-----
${prettifiedKey}
-----END PROXMOX BACKUP KEY-----</p>
xtype: 'pvePBSEncryptionKeyTab',
mixins: ['Proxmox.Mixin.CBind'],
+ onlineHelp: 'storage_pbs_encryption',
+
onGetValues: function(form) {
let values = {};
if (form.cryptMode === 'upload') {
let cryptKeyInfo = values['encryption-key'];
if (cryptKeyInfo) {
- let icon = '<span class="fa fa-lock good"></span> '
+ let icon = '<span class="fa fa-lock good"></span> ';
if (cryptKeyInfo.match(/^[a-fA-F0-9]{2}:/)) { // new style fingerprint
let shortKeyFP = PVE.Utils.render_pbs_fingerprint(cryptKeyInfo);
values['crypt-key-fp'] = icon + `${gettext('Active')} - ${gettext('Fingerprint')} ${shortKeyFP}`;
Ext.define('PVE.storage.PBSInputPanel', {
extend: 'PVE.panel.StorageBase',
- //onlineHelp: 'storage_pbs',
+ onlineHelp: 'storage_pbs',
apiCallDone: function(success, response, options) {
let res = response.result.data;
fieldLabel: gettext('Password'),
allowBlank: false,
},
- {
- xtype: me.isCreate ? 'textfield' : 'displayfield',
- name: 'datastore',
- value: '',
- fieldLabel: 'Datastore',
- allowBlank: false,
- },
];
me.column2 = [
submitValue: true,
fieldLabel: gettext('Content'),
},
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'datastore',
+ value: '',
+ fieldLabel: 'Datastore',
+ allowBlank: false,
+ },
];
me.columnB = [