]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/grid/FirewallOptions.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[pve-manager.git] / www / manager6 / grid / FirewallOptions.js
CommitLineData
307a2fb8 1Ext.define('PVE.FirewallOptions', {
8ea2c870 2 extend: 'Proxmox.grid.ObjectGrid',
307a2fb8
DM
3 alias: ['widget.pveFirewallOptions'],
4
5 fwtype: undefined, // 'dc', 'node' or 'vm'
6
7 base_url: undefined,
8
9 initComponent : function() {
307a2fb8
DM
10
11 var me = this;
12
13 if (!me.base_url) {
14 throw "missing base_url configuration";
15 }
16
17 if (me.fwtype === 'dc' || me.fwtype === 'node' || me.fwtype === 'vm') {
18 if (me.fwtype === 'node') {
19 me.cwidth1 = 250;
20 }
21 } else {
22 throw "unknown firewall option type";
23 }
24
746ebf2a 25 me.rows = {};
307a2fb8 26
746ebf2a
TL
27 var add_boolean_row = function(name, text, defaultValue) {
28 me.add_boolean_row(name, text, { defaultValue: defaultValue });
307a2fb8 29 };
aab2a64d
DC
30 var add_integer_row = function(name, text, minValue, labelWidth) {
31 me.add_integer_row(name, text, {
32 minValue: minValue,
33 deleteEmpty: true,
34 labelWidth: labelWidth,
35 renderer: function(value) {
36 if (value === undefined) {
37 return Proxmox.Utils.defaultText;
38 }
39
40 return value;
f6710aac 41 },
aab2a64d 42 });
307a2fb8
DM
43 };
44
45 var add_log_row = function(name, labelWidth) {
746ebf2a 46 me.rows[name] = {
307a2fb8
DM
47 header: name,
48 required: true,
49 defaultValue: 'nolog',
50 editor: {
9fccc702 51 xtype: 'proxmoxWindowEdit',
307a2fb8
DM
52 subject: name,
53 fieldDefaults: { labelWidth: labelWidth || 100 },
54 items: {
3c37fe48 55 xtype: 'pveFirewallLogLevels',
307a2fb8 56 name: name,
f6710aac
TL
57 fieldLabel: name,
58 },
59 },
307a2fb8
DM
60 };
61 };
62
307a2fb8 63 if (me.fwtype === 'node') {
75122e54
CE
64 me.rows.enable = {
65 required: true,
66 defaultValue: 1,
67 header: gettext('Firewall'),
68 renderer: Proxmox.Utils.format_boolean,
69 editor: {
70 xtype: 'pveFirewallEnableEdit',
f6710aac
TL
71 defaultValue: 1,
72 },
75122e54 73 };
307a2fb8
DM
74 add_boolean_row('nosmurfs', gettext('SMURFS filter'), 1);
75 add_boolean_row('tcpflags', gettext('TCP flags filter'), 0);
c4941d5b 76 add_boolean_row('ndp', 'NDP', 1);
aab2a64d 77 add_integer_row('nf_conntrack_max', 'nf_conntrack_max', 32768, 120);
746ebf2a 78 add_integer_row('nf_conntrack_tcp_timeout_established',
aab2a64d 79 'nf_conntrack_tcp_timeout_established', 7875, 250);
307a2fb8
DM
80 add_log_row('log_level_in');
81 add_log_row('log_level_out');
82 add_log_row('tcp_flags_log_level', 120);
83 add_log_row('smurf_log_level');
84 } else if (me.fwtype === 'vm') {
75122e54
CE
85 me.rows.enable = {
86 required: true,
87 defaultValue: 0,
88 header: gettext('Firewall'),
89 renderer: Proxmox.Utils.format_boolean,
90 editor: {
91 xtype: 'pveFirewallEnableEdit',
f6710aac
TL
92 defaultValue: 0,
93 },
75122e54 94 };
6a5be79f 95 add_boolean_row('dhcp', 'DHCP', 1);
b9628aa5 96 add_boolean_row('ndp', 'NDP', 1);
0a3cf3d4 97 add_boolean_row('radv', gettext('Router Advertisement'), 0);
307a2fb8 98 add_boolean_row('macfilter', gettext('MAC filter'), 1);
9eef71f3 99 add_boolean_row('ipfilter', gettext('IP filter'), 0);
307a2fb8
DM
100 add_log_row('log_level_in');
101 add_log_row('log_level_out');
102 } else if (me.fwtype === 'dc') {
0a3cf3d4 103 add_boolean_row('enable', gettext('Firewall'), 0);
20f8d602 104 add_boolean_row('ebtables', 'ebtables', 1);
40120a31
CE
105 me.rows.log_ratelimit = {
106 header: gettext('Log rate limit'),
107 required: true,
671f470e 108 defaultValue: gettext('Default') + ' (enable=1,rate1/second,burst=5)',
40120a31 109 editor: {
671f470e 110 xtype: 'pveFirewallLograteEdit',
f6710aac
TL
111 defaultValue: 'enable=1',
112 },
40120a31 113 };
746ebf2a
TL
114 }
115
307a2fb8 116 if (me.fwtype === 'dc' || me.fwtype === 'vm') {
746ebf2a 117 me.rows.policy_in = {
307a2fb8
DM
118 header: gettext('Input Policy'),
119 required: true,
120 defaultValue: 'DROP',
121 editor: {
9fccc702 122 xtype: 'proxmoxWindowEdit',
307a2fb8
DM
123 subject: gettext('Input Policy'),
124 items: {
125 xtype: 'pveFirewallPolicySelector',
126 name: 'policy_in',
127 value: 'DROP',
f6710aac
TL
128 fieldLabel: gettext('Input Policy'),
129 },
130 },
307a2fb8
DM
131 };
132
746ebf2a 133 me.rows.policy_out = {
307a2fb8
DM
134 header: gettext('Output Policy'),
135 required: true,
136 defaultValue: 'ACCEPT',
137 editor: {
9fccc702 138 xtype: 'proxmoxWindowEdit',
307a2fb8
DM
139 subject: gettext('Output Policy'),
140 items: {
141 xtype: 'pveFirewallPolicySelector',
142 name: 'policy_out',
143 value: 'ACCEPT',
f6710aac
TL
144 fieldLabel: gettext('Output Policy'),
145 },
146 },
307a2fb8
DM
147 };
148 }
149
307a2fb8
DM
150 var edit_btn = new Ext.Button({
151 text: gettext('Edit'),
152 disabled: true,
f6710aac 153 handler: function() { me.run_editor(); },
307a2fb8
DM
154 });
155
156 var set_button_status = function() {
157 var sm = me.getSelectionModel();
158 var rec = sm.getSelection()[0];
159
160 if (!rec) {
161 edit_btn.disable();
162 return;
163 }
746ebf2a 164 var rowdef = me.rows[rec.data.key];
307a2fb8
DM
165 edit_btn.setDisabled(!rowdef.editor);
166 };
167
bc5d0cf8 168 Ext.apply(me, {
307a2fb8 169 url: "/api2/json" + me.base_url,
307a2fb8 170 tbar: [ edit_btn ],
746ebf2a 171 editorConfig: {
f6710aac 172 url: '/api2/extjs/' + me.base_url,
746ebf2a 173 },
307a2fb8 174 listeners: {
746ebf2a 175 itemdblclick: me.run_editor,
f6710aac
TL
176 selectionchange: set_button_status,
177 },
307a2fb8
DM
178 });
179
180 me.callParent();
181
746ebf2a
TL
182 me.on('activate', me.rstore.startUpdate);
183 me.on('destroy', me.rstore.stopUpdate);
184 me.on('deactivate', me.rstore.stopUpdate);
f6710aac 185 },
307a2fb8 186});
3c37fe48
CE
187
188
189Ext.define('PVE.FirewallLogLevels', {
190 extend: 'Proxmox.form.KVComboBox',
191 alias: ['widget.pveFirewallLogLevels'],
192
193 name: 'log',
194 fieldLabel: gettext('Log level'),
195 value: 'nolog',
196 comboItems: [['nolog', 'nolog'], ['emerg', 'emerg'], ['alert', 'alert'],
197 ['crit', 'crit'], ['err', 'err'], ['warning', 'warning'],
f6710aac 198 ['notice', 'notice'], ['info', 'info'], ['debug', 'debug']],
3c37fe48 199});