]>
Commit | Line | Data |
---|---|---|
295fbab8 SI |
1 | Ext.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 | ||
48 | Ext.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 |
91 | Ext.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 |
117 | Ext.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 |