]> git.proxmox.com Git - proxmox-backup.git/blame - www/Utils.js
gui: add API token ACLs
[proxmox-backup.git] / www / Utils.js
CommitLineData
03862a2e
DM
1Ext.ns('PBS');
2
3console.log("Starting Backup Server GUI");
4
5Ext.define('PBS.Utils', {
6 singleton: true,
7
34f956bc 8 updateLoginData: function(data) {
a0153b02 9 Proxmox.Utils.setAuthData(data);
34f956bc
DM
10 },
11
c0ac2074
DC
12 dataStorePrefix: 'DataStore-',
13
2774566b
DC
14 cryptmap: [
15 'none',
16 'mixed',
17 'sign-only',
18 'encrypt',
19 ],
20
21 cryptText: [
22 Proxmox.Utils.noText,
23 gettext('Mixed'),
24 gettext('Signed'),
25 gettext('Encrypted'),
26 ],
27
28 cryptIconCls: [
29 '',
30 '',
3e395378
DC
31 'lock faded',
32 'lock good',
2774566b
DC
33 ],
34
106603c5
DC
35 calculateCryptMode: function(data) {
36 let mixed = data.mixed;
37 let encrypted = data.encrypt;
38 let signed = data['sign-only'];
39 let files = data.count;
40 if (mixed > 0) {
41 return PBS.Utils.cryptmap.indexOf('mixed');
02939e17 42 } else if (files === encrypted && encrypted > 0) {
2774566b 43 return PBS.Utils.cryptmap.indexOf('encrypt');
02939e17 44 } else if (files === signed && signed > 0) {
2774566b
DC
45 return PBS.Utils.cryptmap.indexOf('sign-only');
46 } else if ((signed+encrypted) === 0) {
47 return PBS.Utils.cryptmap.indexOf('none');
48 } else {
49 return PBS.Utils.cryptmap.indexOf('mixed');
50 }
51 },
52
c0ac2074
DC
53 getDataStoreFromPath: function(path) {
54 return path.slice(PBS.Utils.dataStorePrefix.length);
55 },
56
57 isDataStorePath: function(path) {
58 return path.indexOf(PBS.Utils.dataStorePrefix) === 0;
59 },
60
f68ae22c
TL
61 render_datetime_utc: function(datetime) {
62 let pad = (number) => number < 10 ? '0' + number : number;
63 return datetime.getUTCFullYear() +
64 '-' + pad(datetime.getUTCMonth() + 1) +
65 '-' + pad(datetime.getUTCDate()) +
66 'T' + pad(datetime.getUTCHours()) +
67 ':' + pad(datetime.getUTCMinutes()) +
68 ':' + pad(datetime.getUTCSeconds()) +
69 'Z';
70 },
71
06c3dc8a 72 render_datastore_worker_id: function(id, what) {
2162e2c1 73 const res = id.match(/^(\S+?)_(\S+?)_(\S+?)(_(.+))?$/);
dbd959d4 74 if (res) {
6ab77df3 75 let datastore = res[1], backupGroup = `${res[2]}/${res[3]}`;
2162e2c1
DM
76 if (res[4] !== undefined) {
77 let datetime = Ext.Date.parse(parseInt(res[5], 16), 'U');
78 let utctime = PBS.Utils.render_datetime_utc(datetime);
6ab77df3 79 return `Datastore ${datastore} ${what} ${backupGroup}/${utctime}`;
2162e2c1 80 } else {
6ab77df3 81 return `Datastore ${datastore} ${what} ${backupGroup}`;
2162e2c1 82 }
dbd959d4 83 }
2162e2c1 84 return `Datastore ${what} ${id}`;
dbd959d4 85 },
06c3dc8a 86
7fe76d34
FG
87 extractTokenUser: function(tokenid) {
88 return tokenid.match(/^(.+)!([^!]+)$/)[1];
89 },
90
91 extractTokenName: function(tokenid) {
92 return tokenid.match(/^(.+)!([^!]+)$/)[2];
93 },
94
03862a2e
DM
95 constructor: function() {
96 var me = this;
97
98 // do whatever you want here
9b1aa424 99 Proxmox.Utils.override_task_descriptions({
6ab77df3
TL
100 garbage_collection: ['Datastore', gettext('Garbage collect')],
101 sync: ['Datastore', gettext('Remote Sync')],
df0bdf6b
HL
102 verify: ['Datastore', gettext('Verification')],
103 verify_group: ['Group', gettext('Verification')],
104 verify_snapshot: ['Snapshot', gettext('Verification')],
6ab77df3 105 syncjob: [gettext('Sync Job'), gettext('Remote Sync')],
df0bdf6b 106 verifyjob: [gettext('Verify Job'), gettext('Scheduled Verification')],
6ab77df3 107 prune: (type, id) => PBS.Utils.render_datastore_worker_id(id, gettext('Prune')),
6ab77df3
TL
108 backup: (type, id) => PBS.Utils.render_datastore_worker_id(id, gettext('Backup')),
109 reader: (type, id) => PBS.Utils.render_datastore_worker_id(id, gettext('Read objects')),
0c41e0d0 110 logrotate: [gettext('Log'), gettext('Rotation')],
9b1aa424 111 });
6ab77df3 112 },
03862a2e 113});