]> git.proxmox.com Git - pmg-gui.git/blob - js/DKIMSettings.js
pbs remote: add namespace support
[pmg-gui.git] / js / DKIMSettings.js
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'),
10 hidden: true,
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'),
20 },
21 ],
22 listeners: {
23 'show': function() {
24 var me = this;
25 var disablefn = function(errormsg) {
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({
33 url: '/config/dkim/selector',
34 method: 'GET',
35 failure: function(response, opts) {
36 disablefn(response.htmlStatus);
37 },
38 success: function(response, opts) {
39 if (!Ext.isDefined(response.result.data.record)) {
40 disablefn('Could not read private key - please create a selector first!');
41 }
42 },
43 });
44 },
45 },
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'),
62 name: 'selector',
63 },
64 {
65 xtype: 'displayfield',
66 fieldLabel: gettext('Key Size'),
67 name: 'keysize',
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',
77 value: 'Could not read private key!',
78 },
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);
88 },
89 });
90
91 Ext.define('PMG.SelectorList', {
92 extend: 'Ext.form.ComboBox',
93 xtype: 'pmgDKIMSelectorList',
94
95 queryMode: 'local',
96 store: {
97 fields: ['selector'],
98 filterOnLoad: true,
99 proxy: {
100 type: 'proxmox',
101 url: '/api2/json/config/dkim/selectors',
102 },
103 autoLoad: true,
104 sorters: [
105 {
106 property: 'selector',
107 direction: 'ASC',
108 },
109 ],
110 },
111
112 valueField: 'selector',
113 displayField: 'selector',
114 allowBlank: false,
115 });
116
117 Ext.define('PMG.DKIMSettings', {
118 extend: 'Proxmox.grid.ObjectGrid',
119 xtype: 'pmgDKIM',
120
121 monStoreErrors: true,
122
123 initComponent: function() {
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,
136 },
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',
149 submitText: gettext('Update'),
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 {
158 xtype: 'pmgDKIMSelectorList',
159 fieldLabel: selector_text,
160 name: 'selector',
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'],
174 ['8192', '8192'],
175 ],
176 },
177 {
178 xtype: 'proxmoxcheckbox',
179 name: 'force',
180 fieldLabel: gettext('Overwrite existing file'),
181 },
182 ],
183 },
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(); },
209 selModel: me.selModel,
210 }],
211 url: '/api2/json' + baseurl,
212 editorConfig: {
213 url: '/api2/extjs' + baseurl,
214 onlineHelp: 'pmgconfig_mailproxy_dkim',
215 },
216 interval: 5000,
217 cwidth1: 200,
218 listeners: {
219 itemdblclick: me.run_editor,
220 },
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);
228 },
229 });
230