Signed-off-by: Christian Ebner <c.eb...@proxmox.com> --- www/manager6/Makefile | 1 + www/manager6/grid/FirewallOptions.js | 8 +++ www/manager6/window/FirewallLograteEdit.js | 105 +++++++++++++++++++++++++++++ 3 files changed, 114 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..dc754411 --- /dev/null +++ b/www/manager6/window/FirewallLograteEdit.js @@ -0,0 +1,105 @@ +/*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, + bind: { + disabled: '{!enable.checked}' + } + }, + { + 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', + bind: { + disabled: '{!enable.checked}' + } + } + ] + }, + { + xtype: 'numberfield', + name: 'burst', + fieldLabel: gettext('Log burst limit'), + minValue: 1, + maxValue: 99, + value: 5, + bind: { + disabled: '{!enable.checked}' + } + } + ], + + onGetValues: function(values) { + var me = this; + if (values.enable) { + values.rate += '/' + values.unit; + delete values.unit; + } + var properties = PVE.Parser.printPropertyString(values, undefined); + if (properties == '') { + return { 'delete': 'log_ratelimit' }; + } + return { log_ratelimit: properties }; + }, + + setValues: function(values) { + var me = this; + + var 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' + }], + + initComponent : function() { + var me = this; + + me.callParent(); + me.load(); + } +}); -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel