]>
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 | ||
c87d46fb | 123 | initComponent: function() { |
295fbab8 SI |
124 | var me = this; |
125 | ||
126 | me.rows = {}; | |
127 | var enable_sign_text = gettext('Enable DKIM Signing'); | |
128 | me.rows.dkim_sign = { | |
129 | required: true, | |
130 | defaultValue: 0, | |
131 | header: enable_sign_text, | |
132 | renderer: Proxmox.Utils.format_boolean, | |
133 | editor: { | |
134 | xtype: 'pmgDKIMEnableEdit', | |
135 | subject: enable_sign_text, | |
c87d46fb | 136 | }, |
295fbab8 SI |
137 | }; |
138 | ||
139 | var selector_text = gettext('Selector'); | |
140 | me.rows.dkim_selector = { | |
141 | required: true, | |
142 | header: selector_text, | |
143 | editor: { | |
144 | xtype: 'proxmoxWindowEdit', | |
145 | subject: selector_text, | |
146 | isCreate: true, | |
147 | method: 'POST', | |
148 | url: '/config/dkim/selector', | |
39b73de7 | 149 | submitText: gettext('Update'), |
295fbab8 SI |
150 | items: [ |
151 | { | |
152 | xtype: 'displayfield', | |
153 | name: 'warning', | |
154 | userCls: 'pmx-hint', | |
155 | value: gettext('Warning: You need to update the _domainkey DNS records of all signed domains!'), | |
156 | }, | |
157 | { | |
39b73de7 | 158 | xtype: 'pmgDKIMSelectorList', |
295fbab8 SI |
159 | fieldLabel: selector_text, |
160 | name: 'selector', | |
295fbab8 SI |
161 | }, |
162 | { | |
163 | xtype: 'proxmoxKVComboBox', | |
164 | fieldLabel: gettext('Key Size'), | |
165 | name: 'keysize', | |
166 | value: '2048', | |
167 | allowBlank: false, | |
168 | deleteEmpty: false, | |
169 | required: true, | |
170 | comboItems: [ | |
171 | ['1024', '1024'], | |
172 | ['2048', '2048'], | |
173 | ['4096', '4096'], | |
c87d46fb TL |
174 | ['8192', '8192'], |
175 | ], | |
b07fc430 SI |
176 | }, |
177 | { | |
178 | xtype: 'proxmoxcheckbox', | |
179 | name: 'force', | |
180 | fieldLabel: gettext('Overwrite existing file'), | |
c87d46fb TL |
181 | }, |
182 | ], | |
183 | }, | |
295fbab8 SI |
184 | }; |
185 | ||
186 | me.add_boolean_row('dkim_sign_all_mail', gettext('Sign all Outgoing Mail')); | |
187 | ||
188 | var baseurl = '/config/admin'; | |
189 | ||
190 | me.selModel = Ext.create('Ext.selection.RowModel', {}); | |
191 | ||
192 | Ext.apply(me, { | |
193 | tbar: [{ | |
194 | text: gettext('View DNS Record'), | |
195 | xtype: 'proxmoxButton', | |
196 | disabled: true, | |
197 | handler: function() { | |
198 | var win = Ext.create('PMG.SelectorViewer', {}); | |
199 | win.load(); | |
200 | win.show(); | |
201 | }, | |
202 | selModel: me.selModel, | |
203 | }, | |
204 | { | |
205 | text: gettext('Edit'), | |
206 | xtype: 'proxmoxButton', | |
207 | disabled: true, | |
208 | handler: function() { me.run_editor(); }, | |
c87d46fb | 209 | selModel: me.selModel, |
295fbab8 SI |
210 | }], |
211 | url: '/api2/json' + baseurl, | |
212 | editorConfig: { | |
213 | url: '/api2/extjs' + baseurl, | |
c87d46fb | 214 | onlineHelp: 'pmgconfig_mailproxy_dkim', |
295fbab8 SI |
215 | }, |
216 | interval: 5000, | |
217 | cwidth1: 200, | |
218 | listeners: { | |
c87d46fb TL |
219 | itemdblclick: me.run_editor, |
220 | }, | |
295fbab8 SI |
221 | }); |
222 | ||
223 | me.callParent(); | |
224 | ||
225 | me.on('activate', me.rstore.startUpdate); | |
226 | me.on('destroy', me.rstore.stopUpdate); | |
227 | me.on('deactivate', me.rstore.stopUpdate); | |
c87d46fb | 228 | }, |
295fbab8 SI |
229 | }); |
230 |