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