]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/grid/FirewallOptions.js
bump version to 8.2.6
[pve-manager.git] / www / manager6 / grid / FirewallOptions.js
index 72fad34fe7d393d9fd2503138fde94bdefa46436..6aacb47be347d8b208fb8efafdd61ce47a075775 100644 (file)
@@ -6,9 +6,7 @@ Ext.define('PVE.FirewallOptions', {
 
     base_url: undefined,
 
-    initComponent : function() {
-       /*jslint confusion: true */
-
+    initComponent: function() {
        var me = this;
 
        if (!me.base_url) {
@@ -23,6 +21,9 @@ Ext.define('PVE.FirewallOptions', {
            throw "unknown firewall option type";
        }
 
+       let caps = Ext.state.Manager.get('GuiCap');
+       let canEdit = caps.vms['VM.Config.Network'] || caps.dc['Sys.Modify'] || caps.nodes['Sys.Modify'];
+
        me.rows = {};
 
        var add_boolean_row = function(name, text, defaultValue) {
@@ -39,7 +40,7 @@ Ext.define('PVE.FirewallOptions', {
                    }
 
                    return value;
-               }
+               },
            });
        };
 
@@ -55,9 +56,9 @@ Ext.define('PVE.FirewallOptions', {
                    items: {
                        xtype: 'pveFirewallLogLevels',
                        name: name,
-                       fieldLabel: name
-                   }
-               }
+                       fieldLabel: name,
+                   },
+               },
            };
        };
 
@@ -69,8 +70,8 @@ Ext.define('PVE.FirewallOptions', {
                renderer: Proxmox.Utils.format_boolean,
                editor: {
                    xtype: 'pveFirewallEnableEdit',
-                   defaultValue: 1
-               }
+                   defaultValue: 1,
+               },
            };
            add_boolean_row('nosmurfs', gettext('SMURFS filter'), 1);
            add_boolean_row('tcpflags', gettext('TCP flags filter'), 0);
@@ -82,6 +83,7 @@ Ext.define('PVE.FirewallOptions', {
            add_log_row('log_level_out');
            add_log_row('tcp_flags_log_level', 120);
            add_log_row('smurf_log_level');
+           add_boolean_row('nftables', gettext('nftables (tech preview)'), 0);
        } else if (me.fwtype === 'vm') {
            me.rows.enable = {
                required: true,
@@ -90,8 +92,8 @@ Ext.define('PVE.FirewallOptions', {
                renderer: Proxmox.Utils.format_boolean,
                editor: {
                    xtype: 'pveFirewallEnableEdit',
-                   defaultValue: 0
-               }
+                   defaultValue: 0,
+               },
            };
            add_boolean_row('dhcp', 'DHCP', 1);
            add_boolean_row('ndp', 'NDP', 1);
@@ -103,6 +105,15 @@ 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: gettext('Default') + ' (enable=1,rate1/second,burst=5)',
+               editor: {
+                   xtype: 'pveFirewallLograteEdit',
+                   defaultValue: 'enable=1',
+               },
+           };
        }
 
        if (me.fwtype === 'dc' || me.fwtype === 'vm') {
@@ -117,9 +128,9 @@ Ext.define('PVE.FirewallOptions', {
                        xtype: 'pveFirewallPolicySelector',
                        name: 'policy_in',
                        value: 'DROP',
-                       fieldLabel: gettext('Input Policy')
-                   }
-               }
+                       fieldLabel: gettext('Input Policy'),
+                   },
+               },
            };
 
            me.rows.policy_out = {
@@ -133,16 +144,16 @@ Ext.define('PVE.FirewallOptions', {
                        xtype: 'pveFirewallPolicySelector',
                        name: 'policy_out',
                        value: 'ACCEPT',
-                       fieldLabel: gettext('Output Policy')
-                   }
-               }
+                       fieldLabel: gettext('Output Policy'),
+                   },
+               },
            };
        }
 
        var edit_btn = new Ext.Button({
            text: gettext('Edit'),
            disabled: true,
-           handler: function() { me.run_editor(); }
+           handler: function() { me.run_editor(); },
        });
 
        var set_button_status = function() {
@@ -154,19 +165,21 @@ Ext.define('PVE.FirewallOptions', {
                return;
            }
            var rowdef = me.rows[rec.data.key];
-           edit_btn.setDisabled(!rowdef.editor);
+           if (canEdit) {
+               edit_btn.setDisabled(!rowdef.editor);
+           }
        };
 
        Ext.apply(me, {
            url: "/api2/json" + me.base_url,
-           tbar: [ edit_btn ],
+           tbar: [edit_btn],
            editorConfig: {
-               url: '/api2/extjs/' + me.base_url
+               url: '/api2/extjs/' + me.base_url,
            },
            listeners: {
-               itemdblclick: me.run_editor,
-               selectionchange: set_button_status
-           }
+               itemdblclick: () => { if (canEdit) { me.run_editor(); } },
+               selectionchange: set_button_status,
+           },
        });
 
        me.callParent();
@@ -174,7 +187,7 @@ Ext.define('PVE.FirewallOptions', {
        me.on('activate', me.rstore.startUpdate);
        me.on('destroy', me.rstore.stopUpdate);
        me.on('deactivate', me.rstore.stopUpdate);
-    }
+    },
 });
 
 
@@ -187,5 +200,5 @@ Ext.define('PVE.FirewallLogLevels', {
     value: 'nolog',
     comboItems: [['nolog', 'nolog'], ['emerg', 'emerg'], ['alert', 'alert'],
        ['crit', 'crit'], ['err', 'err'], ['warning', 'warning'],
-       ['notice', 'notice'], ['info', 'info'], ['debug', 'debug']]
+       ['notice', 'notice'], ['info', 'info'], ['debug', 'debug']],
 });