]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/grid/FirewallOptions.js
show serial ports on the gui
[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() {
10 /*jslint confusion: true */
11
12 var me = this;
13
14 if (!me.base_url) {
15 throw "missing base_url configuration";
16 }
17
18 if (me.fwtype === 'dc' || me.fwtype === 'node' || me.fwtype === 'vm') {
19 if (me.fwtype === 'node') {
20 me.cwidth1 = 250;
21 }
22 } else {
23 throw "unknown firewall option type";
24 }
25
746ebf2a 26 me.rows = {};
307a2fb8 27
746ebf2a
TL
28 var add_boolean_row = function(name, text, defaultValue) {
29 me.add_boolean_row(name, text, { defaultValue: defaultValue });
307a2fb8 30 };
746ebf2a
TL
31 var add_integer_row = function(name, text, minValue) {
32 me.add_boolean_row(name, text, { minValue: minValue });
307a2fb8
DM
33 };
34
35 var add_log_row = function(name, labelWidth) {
746ebf2a 36 me.rows[name] = {
307a2fb8
DM
37 header: name,
38 required: true,
39 defaultValue: 'nolog',
40 editor: {
9fccc702 41 xtype: 'proxmoxWindowEdit',
307a2fb8
DM
42 subject: name,
43 fieldDefaults: { labelWidth: labelWidth || 100 },
44 items: {
09cacce7 45 xtype: 'proxmoxKVComboBox',
307a2fb8
DM
46 name: name,
47 fieldLabel: name,
734b3795 48 comboItems: [['nolog', 'nolog'], ['info', 'info'], ['err', 'err'],
307a2fb8
DM
49 ['warning', 'warning'], ['crit', 'crit'], ['alert', 'alert'],
50 ['emerg', 'emerg'], ['debug', 'debug']]
51 }
52 }
53 };
54 };
55
56
57 if (me.fwtype === 'node') {
0a3cf3d4 58 add_boolean_row('enable', gettext('Firewall'), 1);
307a2fb8
DM
59 add_boolean_row('nosmurfs', gettext('SMURFS filter'), 1);
60 add_boolean_row('tcpflags', gettext('TCP flags filter'), 0);
c4941d5b 61 add_boolean_row('ndp', 'NDP', 1);
746ebf2a
TL
62 add_integer_row('nf_conntrack_max', 'nf_conntrack_max', 32768);
63 add_integer_row('nf_conntrack_tcp_timeout_established',
64 'nf_conntrack_tcp_timeout_established', 7875);
307a2fb8
DM
65 add_log_row('log_level_in');
66 add_log_row('log_level_out');
67 add_log_row('tcp_flags_log_level', 120);
68 add_log_row('smurf_log_level');
69 } else if (me.fwtype === 'vm') {
0a3cf3d4 70 add_boolean_row('enable', gettext('Firewall'), 0);
6a5be79f 71 add_boolean_row('dhcp', 'DHCP', 1);
b9628aa5 72 add_boolean_row('ndp', 'NDP', 1);
0a3cf3d4 73 add_boolean_row('radv', gettext('Router Advertisement'), 0);
307a2fb8 74 add_boolean_row('macfilter', gettext('MAC filter'), 1);
9eef71f3 75 add_boolean_row('ipfilter', gettext('IP filter'), 0);
307a2fb8
DM
76 add_log_row('log_level_in');
77 add_log_row('log_level_out');
78 } else if (me.fwtype === 'dc') {
0a3cf3d4 79 add_boolean_row('enable', gettext('Firewall'), 0);
746ebf2a
TL
80 }
81
307a2fb8 82 if (me.fwtype === 'dc' || me.fwtype === 'vm') {
746ebf2a 83 me.rows.policy_in = {
307a2fb8
DM
84 header: gettext('Input Policy'),
85 required: true,
86 defaultValue: 'DROP',
87 editor: {
9fccc702 88 xtype: 'proxmoxWindowEdit',
307a2fb8
DM
89 subject: gettext('Input Policy'),
90 items: {
91 xtype: 'pveFirewallPolicySelector',
92 name: 'policy_in',
93 value: 'DROP',
94 fieldLabel: gettext('Input Policy')
95 }
96 }
97 };
98
746ebf2a 99 me.rows.policy_out = {
307a2fb8
DM
100 header: gettext('Output Policy'),
101 required: true,
102 defaultValue: 'ACCEPT',
103 editor: {
9fccc702 104 xtype: 'proxmoxWindowEdit',
307a2fb8
DM
105 subject: gettext('Output Policy'),
106 items: {
107 xtype: 'pveFirewallPolicySelector',
108 name: 'policy_out',
109 value: 'ACCEPT',
110 fieldLabel: gettext('Output Policy')
111 }
112 }
113 };
114 }
115
307a2fb8
DM
116 var edit_btn = new Ext.Button({
117 text: gettext('Edit'),
118 disabled: true,
746ebf2a 119 handler: me.run_editor
307a2fb8
DM
120 });
121
122 var set_button_status = function() {
123 var sm = me.getSelectionModel();
124 var rec = sm.getSelection()[0];
125
126 if (!rec) {
127 edit_btn.disable();
128 return;
129 }
746ebf2a 130 var rowdef = me.rows[rec.data.key];
307a2fb8
DM
131 edit_btn.setDisabled(!rowdef.editor);
132 };
133
bc5d0cf8 134 Ext.apply(me, {
307a2fb8 135 url: "/api2/json" + me.base_url,
307a2fb8 136 tbar: [ edit_btn ],
746ebf2a
TL
137 editorConfig: {
138 url: '/api2/extjs/' + me.base_url
139 },
307a2fb8 140 listeners: {
746ebf2a 141 itemdblclick: me.run_editor,
307a2fb8
DM
142 selectionchange: set_button_status
143 }
144 });
145
146 me.callParent();
147
746ebf2a
TL
148 me.on('activate', me.rstore.startUpdate);
149 me.on('destroy', me.rstore.stopUpdate);
150 me.on('deactivate', me.rstore.stopUpdate);
307a2fb8
DM
151 }
152});