]>
git.proxmox.com Git - pve-manager.git/blob - www/manager/grid/FirewallOptions.js
1 Ext
.define('PVE.FirewallOptions', {
2 extend
: 'PVE.grid.ObjectGrid',
3 alias
: ['widget.pveFirewallOptions'],
5 fwtype
: undefined, // 'dc', 'node' or 'vm'
9 initComponent : function() {
10 /*jslint confusion: true */
15 throw "missing base_url configuration";
18 if (me
.fwtype
=== 'dc' || me
.fwtype
=== 'node' || me
.fwtype
=== 'vm') {
19 if (me
.fwtype
=== 'node') {
23 throw "unknown firewall option type";
28 var add_boolean_row = function(name
, text
, defaultValue
, labelWidth
) {
32 defaultValue
: defaultValue
|| 0,
33 renderer
: PVE
.Utils
.format_boolean
,
35 xtype
: 'pveWindowEdit',
37 fieldDefaults
: { labelWidth
: labelWidth
|| 100 },
40 defaultValue
: defaultValue
|| 0,
41 checked
: defaultValue
? true : false,
50 var add_integer_row = function(name
, text
, labelWidth
, minValue
) {
54 renderer: function(value
) {
55 return value
|| PVE
.Utils
.defaultText
;
58 xtype
: 'pveWindowEdit',
60 fieldDefaults
: { labelWidth
: labelWidth
|| 100 },
67 emptyText
: gettext('Default'),
68 getSubmitData: function() {
70 var val
= me
.getSubmitValue();
71 if (val
!== null && val
!== '') {
76 return { 'delete' : name
};
84 var add_log_row = function(name
, labelWidth
) {
88 defaultValue
: 'nolog',
90 xtype
: 'pveWindowEdit',
92 fieldDefaults
: { labelWidth
: labelWidth
|| 100 },
94 xtype
: 'pveKVComboBox',
97 data
: [['nolog', 'nolog'], ['info', 'info'], ['err', 'err'],
98 ['warning', 'warning'], ['crit', 'crit'], ['alert', 'alert'],
99 ['emerg', 'emerg'], ['debug', 'debug']]
106 if (me
.fwtype
=== 'node') {
107 add_boolean_row('enable', gettext('Enable Firewall'), 1);
108 add_boolean_row('nosmurfs', gettext('SMURFS filter'), 1);
109 add_boolean_row('tcpflags', gettext('TCP flags filter'), 0);
110 add_boolean_row('ndp', gettext('Enable NDP'), 1);
111 add_integer_row('nf_conntrack_max', 'nf_conntrack_max', 120, 32768);
112 add_integer_row('nf_conntrack_tcp_timeout_established',
113 'nf_conntrack_tcp_timeout_established', 250, 7875);
114 add_log_row('log_level_in');
115 add_log_row('log_level_out');
116 add_log_row('tcp_flags_log_level', 120);
117 add_log_row('smurf_log_level');
118 } else if (me
.fwtype
=== 'vm') {
119 add_boolean_row('enable', gettext('Enable Firewall'), 0);
120 add_boolean_row('dhcp', gettext('Enable DHCP'), 0);
121 add_boolean_row('ndp', gettext('Enable NDP'), 1);
122 add_boolean_row('radv', gettext('Allow Router Advertisement'), 0);
123 add_boolean_row('macfilter', gettext('MAC filter'), 1);
124 add_log_row('log_level_in');
125 add_log_row('log_level_out');
126 } else if (me
.fwtype
=== 'dc') {
127 add_boolean_row('enable', gettext('Enable Firewall'), 0);
130 if (me
.fwtype
=== 'dc' || me
.fwtype
=== 'vm') {
132 header
: gettext('Input Policy'),
134 defaultValue
: 'DROP',
136 xtype
: 'pveWindowEdit',
137 subject
: gettext('Input Policy'),
139 xtype
: 'pveFirewallPolicySelector',
142 fieldLabel
: gettext('Input Policy')
148 header
: gettext('Output Policy'),
150 defaultValue
: 'ACCEPT',
152 xtype
: 'pveWindowEdit',
153 subject
: gettext('Output Policy'),
155 xtype
: 'pveFirewallPolicySelector',
158 fieldLabel
: gettext('Output Policy')
164 var reload = function() {
168 var run_editor = function() {
169 var sm
= me
.getSelectionModel();
170 var rec
= sm
.getSelection()[0];
175 var rowdef
= rows
[rec
.data
.key
];
176 if (!rowdef
.editor
) {
181 if (Ext
.isString(rowdef
.editor
)) {
182 win
= Ext
.create(rowdef
.editor
, {
183 pveSelNode
: me
.pveSelNode
,
184 confid
: rec
.data
.key
,
185 url
: '/api2/extjs' + me
.base_url
188 var config
= Ext
.apply({
189 pveSelNode
: me
.pveSelNode
,
190 confid
: rec
.data
.key
,
191 url
: '/api2/extjs' + me
.base_url
193 win
= Ext
.createWidget(rowdef
.editor
.xtype
, config
);
198 win
.on('destroy', reload
);
201 var edit_btn
= new Ext
.Button({
202 text
: gettext('Edit'),
207 var set_button_status = function() {
208 var sm
= me
.getSelectionModel();
209 var rec
= sm
.getSelection()[0];
215 var rowdef
= rows
[rec
.data
.key
];
216 edit_btn
.setDisabled(!rowdef
.editor
);
220 url
: "/api2/json" + me
.base_url
,
225 itemdblclick
: run_editor
,
226 selectionchange
: set_button_status
232 me
.on('show', reload
);