]> git.proxmox.com Git - pmg-gui.git/blame - js/DKIMSettings.js
dkim settings: improve label for signing domain source selection
[pmg-gui.git] / js / DKIMSettings.js
CommitLineData
295fbab8
SI
1Ext.define('PMG.DKIMEnableEdit', {
2 extend: 'Proxmox.window.Edit',
3 xtype: 'pmgDKIMEnableEdit',
4
5 items: [
6 {
7 xtype: 'displayfield',
8 userCls: 'pmx-hint',
9 value: gettext('You need to create a Selector before enabling DKIM Signing'),
c87d46fb 10 hidden: true,
295fbab8
SI
11 },
12 {
13 xtype: 'proxmoxcheckbox',
14 name: 'dkim_sign',
15 uncheckedValue: 0,
16 defaultValue: 0,
17 checked: false,
18 deleteDefaultValue: false,
19 fieldLabel: gettext('Sign Outgoing Mails'),
c87d46fb 20 },
295fbab8
SI
21 ],
22 listeners: {
23 'show': function() {
24 var me = this;
c87d46fb 25 var disablefn = function(errormsg) {
295fbab8
SI
26 Ext.Msg.alert(gettext('Error'), errormsg);
27 me.down('displayfield').setVisible(true);
28 me.down('proxmoxcheckbox').setDisabled(true);
29 me.close();
30 };
31
32 Proxmox.Utils.API2Request({
c87d46fb
TL
33 url: '/config/dkim/selector',
34 method: 'GET',
35 failure: function(response, opts) {
36 disablefn(response.htmlStatus);
295fbab8 37 },
c87d46fb 38 success: function(response, opts) {
295fbab8 39 if (!Ext.isDefined(response.result.data.record)) {
d2d9df1a 40 disablefn(gettext('Could not read private key - please create a selector first!'));
295fbab8 41 }
c87d46fb 42 },
295fbab8 43 });
c87d46fb
TL
44 },
45 },
295fbab8
SI
46});
47
48Ext.define('PMG.SelectorViewer', {
49 extend: 'Proxmox.window.Edit',
50 xtype: 'pmgDKIMSelectorView',
51
52 url: '/config/dkim/selector',
53 title: gettext('Selector'),
54
55 width: 800,
56 resizable: true,
57
58 items: [
59 {
60 xtype: 'displayfield',
61 fieldLabel: gettext('Selector'),
c87d46fb 62 name: 'selector',
295fbab8
SI
63 },
64 {
65 xtype: 'displayfield',
66 fieldLabel: gettext('Key Size'),
c87d46fb 67 name: 'keysize',
295fbab8
SI
68 },
69 {
70 xtype: 'textarea',
71 editable: false,
72 grow: true,
73 growMin: 150,
74 growMax: 400,
75 fieldLabel: gettext('DNS TXT Record'),
76 name: 'record',
c87d46fb
TL
77 value: 'Could not read private key!',
78 },
295fbab8
SI
79 ],
80
81 initComponent: function() {
82 var me = this;
83
84 me.callParent();
85
86 // hide OK/Reset button, because we just want to show data
87 me.down('toolbar[dock=bottom]').setVisible(false);
c87d46fb 88 },
295fbab8
SI
89});
90
39b73de7
SI
91Ext.define('PMG.SelectorList', {
92 extend: 'Ext.form.ComboBox',
93 xtype: 'pmgDKIMSelectorList',
94
95 queryMode: 'local',
96 store: {
c87d46fb 97 fields: ['selector'],
39b73de7
SI
98 filterOnLoad: true,
99 proxy: {
100 type: 'proxmox',
c87d46fb 101 url: '/api2/json/config/dkim/selectors',
39b73de7 102 },
7de008cc 103 autoLoad: true,
39b73de7
SI
104 sorters: [
105 {
c87d46fb
TL
106 property: 'selector',
107 direction: 'ASC',
108 },
109 ],
39b73de7
SI
110 },
111
112 valueField: 'selector',
113 displayField: 'selector',
114 allowBlank: false,
39b73de7
SI
115});
116
295fbab8
SI
117Ext.define('PMG.DKIMSettings', {
118 extend: 'Proxmox.grid.ObjectGrid',
119 xtype: 'pmgDKIM',
120
121 monStoreErrors: true,
122
9d89cc90
MS
123 dkimdomainTextHash: {
124 envelope: gettext('Envelope'),
125 header: gettext('Header'),
126 },
127
c87d46fb 128 initComponent: function() {
295fbab8
SI
129 var me = this;
130
131 me.rows = {};
132 var enable_sign_text = gettext('Enable DKIM Signing');
133 me.rows.dkim_sign = {
134 required: true,
135 defaultValue: 0,
136 header: enable_sign_text,
137 renderer: Proxmox.Utils.format_boolean,
138 editor: {
139 xtype: 'pmgDKIMEnableEdit',
140 subject: enable_sign_text,
c87d46fb 141 },
295fbab8
SI
142 };
143
144 var selector_text = gettext('Selector');
145 me.rows.dkim_selector = {
146 required: true,
147 header: selector_text,
148 editor: {
149 xtype: 'proxmoxWindowEdit',
150 subject: selector_text,
151 isCreate: true,
152 method: 'POST',
153 url: '/config/dkim/selector',
39b73de7 154 submitText: gettext('Update'),
295fbab8
SI
155 items: [
156 {
157 xtype: 'displayfield',
158 name: 'warning',
159 userCls: 'pmx-hint',
160 value: gettext('Warning: You need to update the _domainkey DNS records of all signed domains!'),
161 },
162 {
39b73de7 163 xtype: 'pmgDKIMSelectorList',
295fbab8
SI
164 fieldLabel: selector_text,
165 name: 'selector',
295fbab8
SI
166 },
167 {
168 xtype: 'proxmoxKVComboBox',
169 fieldLabel: gettext('Key Size'),
170 name: 'keysize',
171 value: '2048',
172 allowBlank: false,
173 deleteEmpty: false,
174 required: true,
175 comboItems: [
176 ['1024', '1024'],
177 ['2048', '2048'],
178 ['4096', '4096'],
c87d46fb
TL
179 ['8192', '8192'],
180 ],
b07fc430
SI
181 },
182 {
183 xtype: 'proxmoxcheckbox',
184 name: 'force',
185 fieldLabel: gettext('Overwrite existing file'),
c87d46fb
TL
186 },
187 ],
188 },
295fbab8
SI
189 };
190
4a2fbe7c
TL
191 let render_dkimdomain = value => me.dkimdomainTextHash[value] || value;
192 me.add_combobox_row('dkim-use-domain', gettext('Signing Domain Source'), {
9d89cc90
MS
193 renderer: render_dkimdomain,
194 defaultValue: 'envelope',
195 comboItems: [
196 ['envelope', render_dkimdomain('envelope')],
197 ['header', render_dkimdomain('header')]],
198 });
199
295fbab8
SI
200 me.add_boolean_row('dkim_sign_all_mail', gettext('Sign all Outgoing Mail'));
201
202 var baseurl = '/config/admin';
203
204 me.selModel = Ext.create('Ext.selection.RowModel', {});
205
206 Ext.apply(me, {
207 tbar: [{
208 text: gettext('View DNS Record'),
209 xtype: 'proxmoxButton',
210 disabled: true,
211 handler: function() {
212 var win = Ext.create('PMG.SelectorViewer', {});
213 win.load();
214 win.show();
215 },
216 selModel: me.selModel,
217 },
218 {
219 text: gettext('Edit'),
220 xtype: 'proxmoxButton',
221 disabled: true,
222 handler: function() { me.run_editor(); },
c87d46fb 223 selModel: me.selModel,
295fbab8
SI
224 }],
225 url: '/api2/json' + baseurl,
226 editorConfig: {
227 url: '/api2/extjs' + baseurl,
c87d46fb 228 onlineHelp: 'pmgconfig_mailproxy_dkim',
295fbab8
SI
229 },
230 interval: 5000,
231 cwidth1: 200,
232 listeners: {
c87d46fb
TL
233 itemdblclick: me.run_editor,
234 },
295fbab8
SI
235 });
236
237 me.callParent();
238
239 me.on('activate', me.rstore.startUpdate);
240 me.on('destroy', me.rstore.stopUpdate);
241 me.on('deactivate', me.rstore.stopUpdate);
c87d46fb 242 },
295fbab8
SI
243});
244