Signed-off-by: Christian Ebner <c.eb...@proxmox.com>
---
Version 2:
    * Values are retained in config while disable/enable
    * Removed disabling of the textfield and combobox when unchecking enable
      in order to get the values instead of undefined.
    * initComponent -> autoLoad: true

 www/manager6/Makefile                      |  1 +
 www/manager6/grid/FirewallOptions.js       |  8 +++
 www/manager6/window/FirewallLograteEdit.js | 94 ++++++++++++++++++++++++++++++
 3 files changed, 103 insertions(+)
 create mode 100644 www/manager6/window/FirewallLograteEdit.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 962a3f4d..5ad70933 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -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                             \
diff --git a/www/manager6/grid/FirewallOptions.js 
b/www/manager6/grid/FirewallOptions.js
index 72fad34f..2952e854 100644
--- a/www/manager6/grid/FirewallOptions.js
+++ b/www/manager6/grid/FirewallOptions.js
@@ -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
index 00000000..c48be192
--- /dev/null
+++ b/www/manager6/window/FirewallLograteEdit.js
@@ -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
+});
-- 
2.11.0

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to