]> git.proxmox.com Git - pmg-gui.git/blob - js/MailProxyTLSDomains.js
Implement TLS Policy Setting
[pmg-gui.git] / js / MailProxyTLSDomains.js
1 /*global Proxmox*/
2 Ext.define('pmg-tls-policy', {
3 extend: 'Ext.data.Model',
4 fields: [ 'domain', 'policy' ],
5 idProperty: 'domain'
6 });
7
8 Ext.define('PMG.MailProxyTLSDomains', {
9 extend: 'Ext.grid.GridPanel',
10 alias: ['widget.pmgMailProxyTLSDomains'],
11
12 initComponent : function() {
13 var me = this;
14
15 var baseurl = '/config/tlspolicy';
16 var rstore = Ext.create('Proxmox.data.UpdateStore', {
17 model: 'pmg-tls-policy',
18 storeid: 'pmg-mailproxy-tls-store-' + (++Ext.idSeed),
19 proxy: {
20 type: 'proxmox',
21 url: '/api2/json' + baseurl
22 },
23 sorters: {
24 property: 'domain',
25 order: 'DESC'
26 }
27 });
28
29 var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore});
30
31 var reload = function() {
32 store.load();
33 };
34
35 me.selModel = Ext.create('Ext.selection.RowModel', {});
36
37 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
38 selModel: me.selModel,
39 baseurl: baseurl,
40 callback: reload,
41 waitMsgTarget: me
42 });
43
44 var policy_selector_properties = {
45 xtype: 'proxmoxKVComboBox',
46 name: 'policy',
47 fieldLabel: 'Policy',
48 deleteEmpty: false,
49 comboItems: [
50 [ 'none', 'none' ],
51 [ 'may', 'may' ],
52 [ 'encrypt', 'encrypt' ],
53 [ 'dane', 'dane' ],
54 [ 'dane-only', 'dane-only' ],
55 [ 'fingerprint', 'fingerprint' ],
56 [ 'verify', 'verify' ],
57 [ 'secure', 'secure' ]
58 ],
59 allowBlank: true,
60 value: 'encrypt'
61 };
62
63 var run_editor = function() {
64 var rec = me.selModel.getSelection()[0];
65 if (!rec) {
66 return;
67 }
68
69 var config = {
70 url: '/api2/extjs' + baseurl + '/' + rec.data.domain,
71 method: 'PUT',
72 subject: gettext('TLS Policy'),
73 items: [
74 {
75 xtype: 'displayfield',
76 name: 'domain',
77 fieldLabel: gettext('Domain')
78 },
79 policy_selector_properties
80 ]
81 };
82
83 var win = Ext.createWidget('proxmoxWindowEdit', config);
84
85 win.load();
86 win.on('destroy', reload);
87 win.show();
88 };
89
90 var tbar = [
91 {
92 xtype: 'proxmoxButton',
93 text: gettext('Edit'),
94 disabled: true,
95 selModel: me.selModel,
96 handler: run_editor
97 },
98 {
99 text: gettext('Create'),
100 handler: function() {
101 var config = {
102 url: '/api2/extjs' + baseurl,
103 method: 'POST',
104 subject: gettext('TLS Policy'),
105 isCreate: true,
106 items: [
107 {
108 xtype: 'proxmoxtextfield',
109 name: 'domain',
110 fieldLabel: gettext('Domain')
111 }, policy_selector_properties
112 ]
113 };
114
115 var win = Ext.createWidget('proxmoxWindowEdit', config);
116
117 win.on('destroy', reload);
118 win.show();
119 }
120 },
121 remove_btn
122 ];
123
124 Proxmox.Utils.monStoreErrors(me, store, true);
125
126 Ext.apply(me, {
127 store: store,
128 tbar: tbar,
129 run_editor: run_editor,
130 viewConfig: {
131 trackOver: false
132 },
133 columns: [
134 {
135 header: gettext('Domain'),
136 width: 200,
137 sortable: true,
138 dataIndex: 'domain'
139 },
140 {
141 header: gettext('Policy'),
142 sortable: false,
143 dataIndex: 'policy',
144 flex: 1
145 }
146 ],
147 listeners: {
148 itemdblclick: run_editor,
149 activate: reload
150 }
151 });
152
153 me.on('activate', rstore.startUpdate);
154 me.on('destroy', rstore.stopUpdate);
155 me.on('deactivate', rstore.stopUpdate);
156 me.callParent();
157 }
158 });