--- /dev/null
+/*global Proxmox*/
+Ext.define('pmg-tls-policy', {
+ extend: 'Ext.data.Model',
+ fields: [ 'domain', 'policy' ],
+ idProperty: 'domain'
+});
+
+Ext.define('PMG.MailProxyTLSDomains', {
+ extend: 'Ext.grid.GridPanel',
+ alias: ['widget.pmgMailProxyTLSDomains'],
+
+ initComponent : function() {
+ var me = this;
+
+ var baseurl = '/config/tlspolicy';
+ var rstore = Ext.create('Proxmox.data.UpdateStore', {
+ model: 'pmg-tls-policy',
+ storeid: 'pmg-mailproxy-tls-store-' + (++Ext.idSeed),
+ proxy: {
+ type: 'proxmox',
+ url: '/api2/json' + baseurl
+ },
+ sorters: {
+ property: 'domain',
+ order: 'DESC'
+ }
+ });
+
+ var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore});
+
+ var reload = function() {
+ store.load();
+ };
+
+ me.selModel = Ext.create('Ext.selection.RowModel', {});
+
+ var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
+ selModel: me.selModel,
+ baseurl: baseurl,
+ callback: reload,
+ waitMsgTarget: me
+ });
+
+ var policy_selector_properties = {
+ xtype: 'proxmoxKVComboBox',
+ name: 'policy',
+ fieldLabel: 'Policy',
+ deleteEmpty: false,
+ comboItems: [
+ [ 'none', 'none' ],
+ [ 'may', 'may' ],
+ [ 'encrypt', 'encrypt' ],
+ [ 'dane', 'dane' ],
+ [ 'dane-only', 'dane-only' ],
+ [ 'fingerprint', 'fingerprint' ],
+ [ 'verify', 'verify' ],
+ [ 'secure', 'secure' ]
+ ],
+ allowBlank: true,
+ value: 'encrypt'
+ };
+
+ var run_editor = function() {
+ var rec = me.selModel.getSelection()[0];
+ if (!rec) {
+ return;
+ }
+
+ var config = {
+ url: '/api2/extjs' + baseurl + '/' + rec.data.domain,
+ method: 'PUT',
+ subject: gettext('TLS Policy'),
+ items: [
+ {
+ xtype: 'displayfield',
+ name: 'domain',
+ fieldLabel: gettext('Domain')
+ },
+ policy_selector_properties
+ ]
+ };
+
+ var win = Ext.createWidget('proxmoxWindowEdit', config);
+
+ win.load();
+ win.on('destroy', reload);
+ win.show();
+ };
+
+ var tbar = [
+ {
+ xtype: 'proxmoxButton',
+ text: gettext('Edit'),
+ disabled: true,
+ selModel: me.selModel,
+ handler: run_editor
+ },
+ {
+ text: gettext('Create'),
+ handler: function() {
+ var config = {
+ url: '/api2/extjs' + baseurl,
+ method: 'POST',
+ subject: gettext('TLS Policy'),
+ isCreate: true,
+ items: [
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'domain',
+ fieldLabel: gettext('Domain')
+ }, policy_selector_properties
+ ]
+ };
+
+ var win = Ext.createWidget('proxmoxWindowEdit', config);
+
+ win.on('destroy', reload);
+ win.show();
+ }
+ },
+ remove_btn
+ ];
+
+ Proxmox.Utils.monStoreErrors(me, store, true);
+
+ Ext.apply(me, {
+ store: store,
+ tbar: tbar,
+ run_editor: run_editor,
+ viewConfig: {
+ trackOver: false
+ },
+ columns: [
+ {
+ header: gettext('Domain'),
+ width: 200,
+ sortable: true,
+ dataIndex: 'domain'
+ },
+ {
+ header: gettext('Policy'),
+ sortable: false,
+ dataIndex: 'policy',
+ flex: 1
+ }
+ ],
+ listeners: {
+ itemdblclick: run_editor,
+ activate: reload
+ }
+ });
+
+ me.on('activate', rstore.startUpdate);
+ me.on('destroy', rstore.stopUpdate);
+ me.on('deactivate', rstore.stopUpdate);
+ me.callParent();
+ }
+});
--- /dev/null
+Ext.define('PMG.MailProxyTLSPanel', {
+ extend: 'Ext.panel.Panel',
+ alias: 'widget.pmgMailProxyTLSPanel',
+
+ layout: {
+ type: 'vbox',
+ align: 'stretch'
+ },
+
+ initComponent: function() {
+ var me = this;
+
+ var tlsSettings = Ext.create('PMG.MailProxyTLS', {
+ xtype: 'pmgMailProxyTLS',
+ title: gettext('Settings'),
+ border: 0,
+ collapsible: true,
+ padding: '0 0 20 0'
+ });
+
+ var tlsDomains = Ext.create('PMG.MailProxyTLSDomains', {
+ xtype: 'pmgMailProxyTLSDomains',
+ title: gettext('TLS Domain Policy'),
+ border: 0,
+ collapsible: true,
+ padding: '0 0 20 0'
+ });
+
+ me.items = [ tlsSettings, tlsDomains ];
+
+ me.callParent();
+
+ tlsSettings.relayEvents(me, ['activate', 'deactivate', 'destroy']);
+ tlsDomains.relayEvents(me, ['activate', 'deactivate', 'destroy']);
+ }
+});