]> git.proxmox.com Git - pve-manager.git/commitdiff
Allow to set the firewall log rate limit and burst from the UI
authorChristian Ebner <c.ebner@proxmox.com>
Mon, 1 Apr 2019 12:45:11 +0000 (14:45 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 1 Apr 2019 12:59:16 +0000 (14:59 +0200)
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
www/manager6/Makefile
www/manager6/grid/FirewallOptions.js
www/manager6/window/FirewallLograteEdit.js [new file with mode: 0644]

index 962a3f4d62945f6418cd56ac0e7eb5e60388e4d3..5ad7093311b4868294c317086021e487a8a4890c 100644 (file)
@@ -85,6 +85,7 @@ JSSRC=                                                        \
        window/StartupEdit.js                           \
        window/CephInstall.js                           \
        window/FirewallEnableEdit.js                    \
+       window/FirewallLograteEdit.js                   \
        panel/NotesView.js                              \
        grid/ResourceGrid.js                            \
        grid/PoolMembers.js                             \
index 72fad34fe7d393d9fd2503138fde94bdefa46436..2952e854ed9d1dc3c196c8b0f368d236bc46e8be 100644 (file)
@@ -103,6 +103,14 @@ Ext.define('PVE.FirewallOptions', {
        } else if (me.fwtype === 'dc') {
            add_boolean_row('enable', gettext('Firewall'), 0);
            add_boolean_row('ebtables', 'ebtables', 1);
+           me.rows.log_ratelimit = {
+               header: gettext('Log rate limit'),
+               required: true,
+               defaultValue: 'enable=0',
+               editor: {
+                   xtype: 'pveFirewallLograteEdit'
+               }
+           };
        }
 
        if (me.fwtype === 'dc' || me.fwtype === 'vm') {
diff --git a/www/manager6/window/FirewallLograteEdit.js b/www/manager6/window/FirewallLograteEdit.js
new file mode 100644 (file)
index 0000000..c48be19
--- /dev/null
@@ -0,0 +1,94 @@
+/*jslint confusion: true*/
+Ext.define('PVE.FirewallLograteInputPanel', {
+    extend: 'Proxmox.panel.InputPanel',
+    xtype: 'pveFirewallLograteInputPanel',
+
+    viewModel: {},
+
+    items: [
+       {
+           xtype: 'proxmoxcheckbox',
+           name: 'enable',
+           reference: 'enable',
+           fieldLabel: gettext('Enable'),
+           value: false
+       },
+       {
+           layout: 'hbox',
+           border: false,
+           items: [
+               {
+                   xtype: 'numberfield',
+                   name: 'rate',
+                   fieldLabel: gettext('Log rate limit'),
+                   minValue: 1,
+                   maxValue: 99,
+                   allowBlank: false,
+                   flex: 2,
+                   value: 1
+               },
+               {
+                   html: '<div style="margin: auto; padding: 2.5px;"><b>/</b></div>'
+               },
+               {
+                   xtype: 'proxmoxKVComboBox',
+                   name: 'unit',
+                   comboItems: [['second', 'second'], ['minute', 'minute'],
+                       ['hour', 'hour'], ['day', 'day']],
+                   allowBlank: false,
+                   flex: 1,
+                   value: 'second'
+               }
+           ]
+       },
+       {
+           xtype: 'numberfield',
+           name: 'burst',
+           fieldLabel: gettext('Log burst limit'),
+           minValue: 1,
+           maxValue: 99,
+           value: 5
+       }
+    ],
+
+    onGetValues: function(values) {
+       var me = this;
+
+       var vals = {};
+       vals.enable = values.enable !== undefined ? 1 : 0;
+       vals.rate = values.rate + '/' + values.unit;
+       vals.burst = values.burst;
+       var properties = PVE.Parser.printPropertyString(vals, undefined);
+       if (properties == '') {
+           return { 'delete': 'log_ratelimit' };
+       }
+       return { log_ratelimit: properties };
+    },
+
+    setValues: function(values) {
+       var me = this;
+
+       var properties = {};
+       if (values.log_ratelimit !== undefined) {
+           properties = PVE.Parser.parsePropertyString(values.log_ratelimit);
+           var matches = properties.rate.match(/^(\d+)\/(second|minute|hour|day)$/);
+           if (matches) {
+               properties.rate = matches[1];
+               properties.unit = matches[2];
+           }
+       }
+       me.callParent([properties]);
+    }
+});
+
+Ext.define('PVE.FirewallLograteEdit', {
+    extend: 'Proxmox.window.Edit',
+    xtype: 'pveFirewallLograteEdit',
+
+    subject: gettext('Log rate limit'),
+
+    items: [{
+       xtype: 'pveFirewallLograteInputPanel'
+    }],
+    autoLoad: true
+});