Project

General

Profile

Download (39.9 KB) Statistics
| Branch: | Tag: | Revision:
1 b2ffe419 Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/*
4 37e2071c Scott Ullrich
	firewall_rules.php
5 e4cabb75 Scott Ullrich
	part of pfSense (http://www.pfsense.com)
6
        Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com)
7 b2ffe419 Scott Ullrich
8 e4cabb75 Scott Ullrich
	originally part of m0n0wall (http://m0n0.ch/wall)
9
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
10 37e2071c Scott Ullrich
	All rights reserved.
11 b2ffe419 Scott Ullrich
12 37e2071c Scott Ullrich
	Redistribution and use in source and binary forms, with or without
13
	modification, are permitted provided that the following conditions are met:
14 b2ffe419 Scott Ullrich
15 37e2071c Scott Ullrich
	1. Redistributions of source code must retain the above copyright notice,
16
	   this list of conditions and the following disclaimer.
17 b2ffe419 Scott Ullrich
18 37e2071c Scott Ullrich
	2. Redistributions in binary form must reproduce the above copyright
19
	   notice, this list of conditions and the following disclaimer in the
20
	   documentation and/or other materials provided with the distribution.
21 b2ffe419 Scott Ullrich
22 37e2071c Scott Ullrich
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
23
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
26
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
	POSSIBILITY OF SUCH DAMAGE.
32 5b237745 Scott Ullrich
*/
33 7ac5a4cb Scott Ullrich
/*
34
	pfSense_MODULE:	filter
35
*/
36 5b237745 Scott Ullrich
37 6b07c15a Matthew Grooms
##|+PRIV
38
##|*IDENT=page-firewall-rules
39
##|*NAME=Firewall: Rules page
40
##|*DESCR=Allow access to the 'Firewall: Rules' page.
41
##|*MATCH=firewall_rules.php*
42
##|-PRIV
43
44 3cceb5d5 jim-p
$statusurl = "status_filter_reload.php";
45
$logurl = "diag_logs_filter.php";
46
47 5b237745 Scott Ullrich
require("guiconfig.inc");
48 7a927e67 Scott Ullrich
require_once("functions.inc");
49
require_once("filter.inc");
50
require_once("shaper.inc");
51 5b237745 Scott Ullrich
52 7a808e01 Carlos Eduardo Ramos
$pgtitle = array(gettext("Firewall"),gettext("Rules"));
53
54 00c82782 Renato Botelho
function delete_nat_association($id) {
55
	global $config;
56
57
	if (!$id || !is_array($config['nat']['rule']))
58 673d29c0 Renato Botelho
		return;
59
60 00c82782 Renato Botelho
	$a_nat = &$config['nat']['rule'];
61
62
	foreach ($a_nat as &$natent)
63
		if ($natent['associated-rule-id'] == $id)
64
			$natent['associated-rule-id'] = '';
65 673d29c0 Renato Botelho
}
66
67 5b237745 Scott Ullrich
if (!is_array($config['filter']['rule'])) {
68
	$config['filter']['rule'] = array();
69
}
70
filter_rules_sort();
71
$a_filter = &$config['filter']['rule'];
72
73 07bd3f83 Scott Ullrich
$if = $_GET['if'];
74
if ($_POST['if'])
75
	$if = $_POST['if'];
76 b2ffe419 Scott Ullrich
77 cbe3ea96 Ermal Luçi
$ifdescs = get_configured_interface_with_descr();
78 07bd3f83 Scott Ullrich
79 32c58070 Scott Ullrich
// Drag and drop reordering
80
if($_REQUEST['dragdroporder']) {
81
	// First create a new ruleset array and tmp arrays
82 cb53651f Erik Fonnesbeck
	$a_filter_before = array();
83 32c58070 Scott Ullrich
	$a_filter_order = array();
84
	$a_filter_order_tmp = array();
85 cb53651f Erik Fonnesbeck
	$a_filter_after = array();
86
	$found = false;
87 32c58070 Scott Ullrich
	$drag_order = $_REQUEST['dragtable'];
88
	// Next traverse through rules building a new order for interface
89
	for ($i = 0; isset($a_filter[$i]); $i++) {
90 cb53651f Erik Fonnesbeck
		if(( $_REQUEST['if'] == "FloatingRules" && isset($a_filter[$i]['floating']) ) || ( $a_filter[$i]['interface'] == $_REQUEST['if'] && !isset($a_filter[$i]['floating']) )) {
91 32c58070 Scott Ullrich
			$a_filter_order_tmp[] = $a_filter[$i];
92 cb53651f Erik Fonnesbeck
			$found = true;
93
		} else if (!$found)
94
			$a_filter_before[] = $a_filter[$i];
95
		else
96
			$a_filter_after[] = $a_filter[$i];
97 32c58070 Scott Ullrich
	}
98
	// Reorder rules with the posted order
99 cb53651f Erik Fonnesbeck
	for ($i = 0; $i<count($drag_order); $i++)
100 32c58070 Scott Ullrich
		$a_filter_order[] = $a_filter_order_tmp[$drag_order[$i]];
101 cb53651f Erik Fonnesbeck
	// In case $drag_order didn't account for some rules, make sure we don't lose them
102
	if(count($a_filter_order) < count($a_filter_order_tmp)) {
103
		for ($i = 0; $i<count($a_filter_order_tmp); $i++)
104
			if(!in_array($i, $drag_order))
105
				$a_filter_order[] = $a_filter_order_tmp[$i];
106
	}
107 32c58070 Scott Ullrich
	// Overwrite filter rules with newly created items
108 cb53651f Erik Fonnesbeck
	$config['filter']['rule'] = array_merge($a_filter_before, $a_filter_order, $a_filter_after);
109 32c58070 Scott Ullrich
	// Write configuration
110
	$config = write_config("Drag and drop firewall rules ordering update.");
111
	// Redirect back to page
112 68cbabcb Scott Ullrich
	mark_subsystem_dirty('filter');
113 619f2dbd Scott Ullrich
	$undo = array();
114
	foreach($_REQUEST['dragtable'] as $dt) 
115
		$undo[] = "";
116
	$counter = 0;
117
	foreach($_REQUEST['dragtable'] as $dt) {
118
		$undo[$dt] = $counter;
119
		$counter++;
120
	}
121
	foreach($undo as $dt) 
122
		$undotxt .= "&dragtable[]={$dt}";
123
	Header("Location: firewall_rules.php?if=" . $_REQUEST['if'] . "&undodrag=true" . $undotxt);
124 32c58070 Scott Ullrich
	exit;
125
}
126
127 be81b340 Erik Fonnesbeck
$icmptypes = array(
128
	"" => gettext("any"),
129 a01ce4c7 jim-p
	"echoreq" => gettext("Echo request"),
130 be81b340 Erik Fonnesbeck
	"echorep" => gettext("Echo reply"),
131
	"unreach" => gettext("Destination unreachable"),
132
	"squench" => gettext("Source quench"),
133
	"redir" => gettext("Redirect"),
134
	"althost" => gettext("Alternate Host"),
135
	"routeradv" => gettext("Router advertisement"),
136
	"routersol" => gettext("Router solicitation"),
137
	"timex" => gettext("Time exceeded"),
138
	"paramprob" => gettext("Invalid IP header"),
139
	"timereq" => gettext("Timestamp"),
140
	"timerep" => gettext("Timestamp reply"),
141
	"inforeq" => gettext("Information request"),
142
	"inforep" => gettext("Information reply"),
143
	"maskreq" => gettext("Address mask request"),
144
	"maskrep" => gettext("Address mask reply")
145
);
146
147 90ba56ad Scott Ullrich
/* add group interfaces */
148
if (is_array($config['ifgroups']['ifgroupentry']))
149
	foreach($config['ifgroups']['ifgroupentry'] as $ifgen)
150
		if (have_ruleint_access($ifgen['ifname']))
151
			$iflist[$ifgen['ifname']] = $ifgen['ifname'];
152
153 aef4dc74 Ermal Luçi
foreach ($ifdescs as $ifent => $ifdesc)
154
	if(have_ruleint_access($ifent)) 
155
		$iflist[$ifent] = $ifdesc;
156 88bcd1d2 Scott Dale
157 617f8d25 Ermal Lu?i
if ($config['l2tp']['mode'] == "server")
158
        if(have_ruleint_access("l2tp"))
159
                $iflist['l2tp'] = "L2TP VPN";
160
161 07bd3f83 Scott Ullrich
if ($config['pptpd']['mode'] == "server")
162 d81c2ad1 Scott Ullrich
	if(have_ruleint_access("pptp")) 
163
		$iflist['pptp'] = "PPTP VPN";
164 50e0d2a1 Scott Ullrich
165 b0899ee4 Ermal
if (is_array($config['pppoes']['pppoe'])) {
166
	foreach ($config['pppoes']['pppoe'] as $pppoes)
167
		if (($pppoes['mode'] == 'server') && have_ruleint_access("pppoe"))
168
			$iflist['pppoe'] = "PPPoE Server";
169
}
170 0c554ff6 Scott Ullrich
171 88bcd1d2 Scott Dale
/* add ipsec interfaces */
172 c6dfd289 jim-p
if (isset($config['ipsec']['enable']) || isset($config['ipsec']['client']['enable']))
173 d81c2ad1 Scott Ullrich
	if(have_ruleint_access("enc0")) 
174 0f266b2e Chris Buechler
		$iflist["enc0"] = "IPsec";
175 07bd3f83 Scott Ullrich
176 bfb60ac8 Ermal Luçi
/* add openvpn/tun interfaces */
177 d799787e Matthew Grooms
if  ($config['openvpn']["openvpn-server"] || $config['openvpn']["openvpn-client"])
178
   	$iflist["openvpn"] = "OpenVPN";
179 bfb60ac8 Ermal Luçi
180 4a6cf823 Scott Ullrich
pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/interfaces_override");
181
182 92125c97 Ermal Luçi
if (!$if || !isset($iflist[$if])) {
183
	if ("any" == $if)
184 15160475 Ermal Luçi
                $if = "FloatingRules";
185 0416d9a0 Darren Embry
        else if ("FloatingRules" != $if) {
186
		if (isset($iflist['wan']))
187
			$if = "wan";
188
		else
189
			$if = "FloatingRules";
190
	}
191 92125c97 Ermal Luçi
}
192 07bd3f83 Scott Ullrich
193 5b237745 Scott Ullrich
if ($_POST) {
194
195
	$pconfig = $_POST;
196
197
	if ($_POST['apply']) {
198 37e2071c Scott Ullrich
		$retval = 0;
199 9a7e416c Scott Ullrich
		$retval = filter_configure();
200
201 a368a026 Ermal Lu?i
		clear_subsystem_dirty('filter');
202 a985eac2 Scott Ullrich
203 1a700ea6 Scott Ullrich
		pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/apply");
204
205 b807a161 Scott Ullrich
		$savemsg = sprintf(gettext("The settings have been applied. The firewall rules are now reloading in the background.<br/>You can also %s monitor %s the reload progress"),"<a href='status_filter_reload.php'>","</a>");
206 5b237745 Scott Ullrich
	}
207
}
208
209 d97c50cd Bill Marquette
if ($_GET['act'] == "del") {
210 673d29c0 Renato Botelho
	if ($a_filter[$_GET['id']]) {
211
		if (!empty($a_filter[$_GET['id']]['associated-rule-id'])) {
212 00c82782 Renato Botelho
			delete_nat_association($a_filter[$_GET['id']]['associated-rule-id']);
213 673d29c0 Renato Botelho
		}
214
		unset($a_filter[$_GET['id']]);
215
		write_config();
216 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
217 673d29c0 Renato Botelho
		header("Location: firewall_rules.php?if={$if}");
218
		exit;
219
	}
220 d97c50cd Bill Marquette
}
221
222 32c58070 Scott Ullrich
// Handle save msg if defined
223
if($_REQUEST['savemsg']) 
224
	$savemsg = htmlentities($_REQUEST['savemsg']);
225
226 07bd3f83 Scott Ullrich
if (isset($_POST['del_x'])) {
227
	/* delete selected rules */
228
	if (is_array($_POST['rule']) && count($_POST['rule'])) {
229
		foreach ($_POST['rule'] as $rulei) {
230 00c82782 Renato Botelho
			delete_nat_association($a_filter[$rulei]['associated-rule-id']);
231 07bd3f83 Scott Ullrich
			unset($a_filter[$rulei]);
232
		}
233 5b237745 Scott Ullrich
		write_config();
234 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
235 07bd3f83 Scott Ullrich
		header("Location: firewall_rules.php?if={$if}");
236 5b237745 Scott Ullrich
		exit;
237
	}
238 07bd3f83 Scott Ullrich
} else if ($_GET['act'] == "toggle") {
239
	if ($a_filter[$_GET['id']]) {
240 f53b85a3 Scott Ullrich
                if(isset($a_filter[$_GET['id']]['disabled']))
241 734edbdf Bill Marquette
                        unset($a_filter[$_GET['id']]['disabled']);
242
                else
243
                        $a_filter[$_GET['id']]['disabled'] = true;
244 5b237745 Scott Ullrich
		write_config();
245 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
246 07bd3f83 Scott Ullrich
		header("Location: firewall_rules.php?if={$if}");
247 5b237745 Scott Ullrich
		exit;
248
	}
249 07bd3f83 Scott Ullrich
} else {
250 b2ffe419 Scott Ullrich
	/* yuck - IE won't send value attributes for image buttons, while Mozilla does -
251 37e2071c Scott Ullrich
	   so we use .x/.y to fine move button clicks instead... */
252 07bd3f83 Scott Ullrich
	unset($movebtn);
253
	foreach ($_POST as $pn => $pd) {
254
		if (preg_match("/move_(\d+)_x/", $pn, $matches)) {
255
			$movebtn = $matches[1];
256
			break;
257
		}
258 5b237745 Scott Ullrich
	}
259 07bd3f83 Scott Ullrich
	/* move selected rules before this rule */
260
	if (isset($movebtn) && is_array($_POST['rule']) && count($_POST['rule'])) {
261
		$a_filter_new = array();
262 b2ffe419 Scott Ullrich
263 07bd3f83 Scott Ullrich
		/* copy all rules < $movebtn and not selected */
264
		for ($i = 0; $i < $movebtn; $i++) {
265
			if (!in_array($i, $_POST['rule']))
266
				$a_filter_new[] = $a_filter[$i];
267
		}
268 b2ffe419 Scott Ullrich
269 07bd3f83 Scott Ullrich
		/* copy all selected rules */
270
		for ($i = 0; $i < count($a_filter); $i++) {
271
			if ($i == $movebtn)
272
				continue;
273
			if (in_array($i, $_POST['rule']))
274
				$a_filter_new[] = $a_filter[$i];
275
		}
276 b2ffe419 Scott Ullrich
277 07bd3f83 Scott Ullrich
		/* copy $movebtn rule */
278
		if ($movebtn < count($a_filter))
279
			$a_filter_new[] = $a_filter[$movebtn];
280 b2ffe419 Scott Ullrich
281 07bd3f83 Scott Ullrich
		/* copy all rules > $movebtn and not selected */
282
		for ($i = $movebtn+1; $i < count($a_filter); $i++) {
283
			if (!in_array($i, $_POST['rule']))
284
				$a_filter_new[] = $a_filter[$i];
285
		}
286 b2ffe419 Scott Ullrich
287 07bd3f83 Scott Ullrich
		$a_filter = $a_filter_new;
288 5b237745 Scott Ullrich
		write_config();
289 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
290 07bd3f83 Scott Ullrich
		header("Location: firewall_rules.php?if={$if}");
291 5b237745 Scott Ullrich
		exit;
292
	}
293
}
294 3a54b6ca Scott Dale
$closehead = false;
295 5b237745 Scott Ullrich
296 9a25487b Scott Ullrich
include("head.inc");
297 5b237745 Scott Ullrich
?>
298 e5c6bd24 Scott Ullrich
<link rel="stylesheet" href="/javascript/chosen/chosen.css" />
299 3a54b6ca Scott Dale
</head>
300
301 5b237745 Scott Ullrich
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
302 6134cc8f Vinicius Coque
<script src="/javascript/chosen/chosen.jquery.js" type="text/javascript"></script>
303 5b237745 Scott Ullrich
<?php include("fbegin.inc"); ?>
304
<form action="firewall_rules.php" method="post">
305 6dc83d52 Scott Ullrich
306 625dcc40 Bill Marquette
<script type="text/javascript" language="javascript" src="/javascript/row_toggle.js">
307 fa65a62b Scott Ullrich
</script>
308 5b237745 Scott Ullrich
<?php if ($savemsg) print_info_box($savemsg); ?>
309 a368a026 Ermal Lu?i
<?php if (is_subsystem_dirty('filter')): ?><p>
310 619f2dbd Scott Ullrich
<?php
311
if($_REQUEST['undodrag']) {
312
	foreach($_REQUEST['dragtable'] as $dt) 
313
		$dragtable .= "&dragtable[]={$dt}";
314 891d4f60 Renato Botelho
	print_info_box_np_undo(gettext("The firewall rule configuration has been changed.<br>You must apply the changes in order for them to take effect."), "apply" , gettext("Apply changes") , "firewall_rules.php?if={$_REQUEST['if']}&dragdroporder=true&{$dragtable}");
315 619f2dbd Scott Ullrich
} else {
316 891d4f60 Renato Botelho
	print_info_box_np(gettext("The firewall rule configuration has been changed.<br>You must apply the changes in order for them to take effect."));
317 619f2dbd Scott Ullrich
}
318
?>
319
<br>
320 5b237745 Scott Ullrich
<?php endif; ?>
321 df222163 Scott Ullrich
<div id="loading" style="visibity:hidden">
322 6dc83d52 Scott Ullrich
	<img src="/themes/<?=$g['theme']?>/images/misc/loader.gif"> Loading, please wait...
323
	<p/>&nbsp;
324
</div>
325 3a4ca65e Scott Ullrich
<?php
326
	pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/before_table");
327
?>
328 07bd3f83 Scott Ullrich
<table width="100%" border="0" cellpadding="0" cellspacing="0">
329 37e2071c Scott Ullrich
  <tr><td class="tabnavtbl">
330 0366b748 Scott Ullrich
  <?php
331
	/* active tabs */
332
	$tab_array = array();
333 92125c97 Ermal Luçi
       if ("FloatingRules" == $if)
334
                        $active = true;
335
                else
336
                        $active = false;
337 38f90dc8 Rafael Lucas
        $tab_array[] = array(gettext("Floating"), $active, "firewall_rules.php?if=FloatingRules");
338 0366b748 Scott Ullrich
	$tabscounter = 0; $i = 0; foreach ($iflist as $ifent => $ifname) {
339
		if ($ifent == $if)
340
			$active = true;
341
		else
342
			$active = false;
343
		$tab_array[] = array($ifname, $active, "firewall_rules.php?if={$ifent}");
344
	}
345
	display_top_tabs($tab_array);
346
  ?>
347 07bd3f83 Scott Ullrich
  </td></tr>
348 b2ffe419 Scott Ullrich
  <tr>
349 d732f186 Bill Marquette
    <td>
350
	<div id="mainarea">
351 1db196b2 Scott Ullrich
		<table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
352 b733ce0d Scott Ullrich
<?php
353
		pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/before_first_tr");
354
?>
355 1db196b2 Scott Ullrich
			<tr id="frheader">
356
			<td width="3%" class="list">&nbsp;</td>
357
			<td width="5%" class="list">&nbsp;</td>
358 5fec5fe4 Scott Ullrich
			<td width="3%" class="listhdrr"><?=gettext("ID");?></td>
359 1db196b2 Scott Ullrich
<?php
360
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tablehead");
361
?>
362
			<td width="6%" class="listhdrr"><?=gettext("Proto");?></td>
363
			<td width="12%" class="listhdrr"><?=gettext("Source");?></td>
364
			<td width="6%" class="listhdrr"><?=gettext("Port");?></td>
365
			<td width="12%" class="listhdrr"><?=gettext("Destination");?></td>
366
			<td width="6%" class="listhdrr"><?=gettext("Port");?></td>
367
			<td width="5%" class="listhdrr"><?=gettext("Gateway");?></td>
368
			<td width="8%" class="listhdrr"><?=gettext("Queue");?></td>
369
			<td width="5%" class="listhdrr"><?=gettext("Schedule");?></td>
370
<?php
371 10995178 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_desc_tablehead");
372 1db196b2 Scott Ullrich
?>
373
			<td width="19%" class="listhdr"><?=gettext("Description");?></td>
374
			<td width="10%" class="list">
375 d415d821 Seth Mos
			<table border="0" cellspacing="0" cellpadding="1">
376
			   <tr>
377
				<?php
378
					$nrules = 0;
379
					for ($i = 0; isset($a_filter[$i]); $i++) {
380
						$filterent = $a_filter[$i];
381 92125c97 Ermal Luçi
						if ($filterent['interface'] != $if && !isset($filterent['floating']))
382 f1c49ff4 Scott Ullrich
							continue;
383
						if (isset($filterent['floating']) && "FloatingRules" != $if)
384 d415d821 Seth Mos
							continue;
385
						$nrules++;
386
					}
387
				?>
388
				<td>
389
				<?php if ($nrules == 0): ?>
390 7a808e01 Carlos Eduardo Ramos
				<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?gettext("delete selected rules"); ?>" border="0"><?php else: ?>
391 d281f557 Vinicius Coque
				<input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected rules");?>" onclick="return confirm('<?=gettext('Do you really want to delete the selected rules?');?>')"><?php endif; ?>
392 d415d821 Seth Mos
				</td>
393 dd5bf424 Scott Ullrich
				<td align="center" valign="middle"><a href="firewall_rules_edit.php?if=<?=htmlspecialchars($if);?>&after=-1"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add new rule");?>" width="17" height="17" border="0"></a></td>
394 d415d821 Seth Mos
			   </tr>
395
			</table>
396
		  </td>
397
		</tr>
398 03976254 jim-p
<?php   // Show the anti-lockout rule if it's enabled, and we are on LAN with an if count > 1, or WAN with an if count of 1.
399
	if (!isset($config['system']['webgui']['noantilockout']) &&
400
		(((count($config['interfaces']) > 1) && ($if == 'lan'))
401 9c37f8cd jim-p
		|| ((count($config['interfaces']) == 1) && ($if == 'wan')))):
402
403 31f0ef21 jim-p
		$alports = implode('<br/>', filter_get_antilockout_ports(true));
404 9c37f8cd jim-p
?>
405 03976254 jim-p
		<tr valign="top" id="antilockout">
406
			<td class="list">&nbsp;</td>
407
			<td class="listt" align="center"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass.gif" width="11" height="11" border="0"></td>
408 4e8854c6 Charlie Root
			<td class="listlr" style="background-color: #E0E0E0">&nbsp;</td>
409 5fec5fe4 Scott Ullrich
<?php
410
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tr_antilockout");
411
?>
412 03976254 jim-p
			<td class="listr" style="background-color: #E0E0E0">*</td>
413
			<td class="listr" style="background-color: #E0E0E0">*</td>
414
			<td class="listr" style="background-color: #E0E0E0">*</td>
415
			<td class="listr" style="background-color: #E0E0E0"><?=$iflist[$if];?> Address</td>
416 31f0ef21 jim-p
			<td class="listr" style="background-color: #E0E0E0"><?= $alports ?></td>
417 03976254 jim-p
			<td class="listr" style="background-color: #E0E0E0">*</td>
418
			<td class="listr" style="background-color: #E0E0E0">*</td>
419 4e8854c6 Charlie Root
			<td class="listr" style="background-color: #E0E0E0">&nbsp;</td>
420 03976254 jim-p
			<td class="listbg"><?=gettext("Anti-Lockout Rule");?></td>
421
			<td valign="middle" nowrap class="list">
422
			<table border="0" cellspacing="0" cellpadding="1">
423
				<tr>
424
					<td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected rules before this rule");?>"></td>
425
					<td><a href="system_advanced_admin.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" title="<?=gettext("edit rule");?>" width="17" height="17" border="0"></a></td>
426
				</tr>
427
				<tr>
428
					<td align="center" valign="middle"></td>
429
					<td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus_d.gif" title="<?=gettext("add a new rule based on this one");?>" width="17" height="17" border="0"></td>
430
				</tr>
431
				</table>
432
			</td>
433
			</tr>
434
<?php endif; ?>
435
436 f1f60c92 Ermal Luçi
<?php if (isset($config['interfaces'][$if]['blockpriv'])): ?>
437 d9eeccbd Scott Ullrich
                <tr valign="top" id="frrfc1918">
438 664742f7 Renato Botelho
                  <td class="list">&nbsp;</td>
439 f77830b3 Scott Ullrich
                  <td class="listt" align="center"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block.gif" width="11" height="11" border="0"></td>
440 4e8854c6 Charlie Root
                  <td class="listlr" style="background-color: #E0E0E0">&nbsp;</td>
441 56a10568 Scott Ullrich
                  <td class="listr" style="background-color: #E0E0E0">*</td>
442
                  <td class="listr" style="background-color: #E0E0E0"><?=gettext("RFC 1918 networks");?></td>
443
                  <td class="listr" style="background-color: #E0E0E0">*</td>
444
                  <td class="listr" style="background-color: #E0E0E0">*</td>
445
                  <td class="listr" style="background-color: #E0E0E0">*</td>
446
                  <td class="listr" style="background-color: #E0E0E0">*</td>
447
		<td class="listr" style="background-color: #E0E0E0">*</td>
448 4e8854c6 Charlie Root
	 		 <td class="listr" style="background-color: #E0E0E0">&nbsp;</td>
449 38f90dc8 Rafael Lucas
                  <td class="listbg"><?=gettext("Block private networks");?></td>
450 d9eeccbd Scott Ullrich
                  <td valign="middle" nowrap class="list">
451
				    <table border="0" cellspacing="0" cellpadding="1">
452
					<tr>
453 38f90dc8 Rafael Lucas
					  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected rules before this rule");?>"></td>
454 dd5bf424 Scott Ullrich
					  <td><a href="interfaces.php?if=<?=htmlspecialchars($if)?>#rfc1918"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" title="<?=gettext("edit rule");?>" width="17" height="17" border="0"></a></td>
455 d9eeccbd Scott Ullrich
					</tr>
456
					<tr>
457
					  <td align="center" valign="middle"></td>
458 38f90dc8 Rafael Lucas
					  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus_d.gif" title="<?=gettext("add a new rule based on this one");?>" width="17" height="17" border="0"></td>
459 d9eeccbd Scott Ullrich
					</tr>
460
					</table>
461
				  </td>
462
				</tr>
463 c20c0f5a Scott Ullrich
<?php endif; ?>
464 f1f60c92 Ermal Luçi
<?php if (isset($config['interfaces'][$if]['blockbogons'])): ?>
465 c20c0f5a Scott Ullrich
                <tr valign="top" id="frrfc1918">
466 664742f7 Renato Botelho
                  <td class="list">&nbsp;</td>
467 c20c0f5a Scott Ullrich
                  <td class="listt" align="center"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block.gif" width="11" height="11" border="0"></td>
468 4e8854c6 Charlie Root
                  <td class="listlr" style="background-color: #E0E0E0">&nbsp;</td>
469 56a10568 Scott Ullrich
                  <td class="listr" style="background-color: #E0E0E0">*</td>
470
                  <td class="listr" style="background-color: #E0E0E0"><?=gettext("Reserved/not assigned by IANA");?></td>
471
                  <td class="listr" style="background-color: #E0E0E0">*</td>
472
                  <td class="listr" style="background-color: #E0E0E0">*</td>
473
                  <td class="listr" style="background-color: #E0E0E0">*</td>
474
				  <td class="listr" style="background-color: #E0E0E0">*</td>
475
				   <td class="listr" style="background-color: #E0E0E0">*</td>
476
		  <td class="listr" style="background-color: #E0E0E0">*</td>
477 38f90dc8 Rafael Lucas
                  <td class="listbg"><?=gettext("Block bogon networks");?></td>
478 c20c0f5a Scott Ullrich
                  <td valign="middle" nowrap class="list">
479
				    <table border="0" cellspacing="0" cellpadding="1">
480
					<tr>
481 38f90dc8 Rafael Lucas
					  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected rules before this rule");?>"></td>
482 dd5bf424 Scott Ullrich
					  <td><a href="interfaces.php?if=<?=htmlspecialchars($if)?>#rfc1918"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" title="<?=gettext("edit rule");?>" width="17" height="17" border="0"></a></td>
483 c20c0f5a Scott Ullrich
					</tr>
484
					<tr>
485
					  <td align="center" valign="middle"></td>
486 38f90dc8 Rafael Lucas
					  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus_d.gif" title="<?=gettext("add a new rule based on this one");?>" width="17" height="17" border="0"></td>
487 c20c0f5a Scott Ullrich
					</tr>
488
					</table>
489
				  </td>
490
				</tr>
491
<?php endif; ?>
492 32c58070 Scott Ullrich
				<tbody id="dragtable" width="100%">
493 07bd3f83 Scott Ullrich
				<?php $nrules = 0; for ($i = 0; isset($a_filter[$i]); $i++):
494 20246b93 Scott Ullrich
					pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/row_start");
495 07bd3f83 Scott Ullrich
					$filterent = $a_filter[$i];
496 92125c97 Ermal Luçi
					if ($filterent['interface'] != $if && !isset($filterent['floating']))
497 f1c49ff4 Scott Ullrich
						continue;
498
					if (isset($filterent['floating']) && "FloatingRules" != $if)
499
						continue;
500 8e0c3760 Ermal
					$isadvset = firewall_check_for_advanced_options($filterent);
501 f1c49ff4 Scott Ullrich
					if($isadvset)
502 e36c52f4 Erik Fonnesbeck
						$advanced_set = "<img src=\"./themes/{$g['theme']}/images/icons/icon_advanced.gif\" title=\"" . gettext("advanced settings set") . ": {$isadvset}\" border=\"0\">";
503 f1c49ff4 Scott Ullrich
					else 
504 7c1e7572 Scott Ullrich
						$advanced_set = "";
505 07bd3f83 Scott Ullrich
				?>
506 37e2071c Scott Ullrich
                <tr valign="top" id="fr<?=$nrules;?>">
507 f1c49ff4 Scott Ullrich
                  <td class="listt">
508
					<input type="checkbox" id="frc<?=$nrules;?>" name="rule[]" value="<?=$i;?>" onClick="fr_bgcolor('<?=$nrules;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;">
509
					<?php echo $advanced_set; ?>
510
				  </td>
511 37e2071c Scott Ullrich
                  <td class="listt" align="center">
512 5b237745 Scott Ullrich
				  <?php if ($filterent['type'] == "block")
513
				  			$iconfn = "block";
514
						else if ($filterent['type'] == "reject") {
515 e91baab8 Chris Buechler
							$iconfn = "reject";
516 5b237745 Scott Ullrich
						} else
517
							$iconfn = "pass";
518
						if (isset($filterent['disabled'])) {
519
							$textss = "<span class=\"gray\">";
520
							$textse = "</span>";
521
							$iconfn .= "_d";
522
						} else {
523
							$textss = $textse = "";
524
						}
525
				  ?>
526 dd5bf424 Scott Ullrich
				  <a href="?if=<?=htmlspecialchars($if);?>&act=toggle&id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_<?=$iconfn;?>.gif" width="11" height="11" border="0" title="<?=gettext("click to toggle enabled/disabled status");?>"></a>
527 5b237745 Scott Ullrich
				  <?php if (isset($filterent['log'])):
528 6fecc73b Scott Dale
							$iconfnlog = "log_s";
529 5b237745 Scott Ullrich
						if (isset($filterent['disabled']))
530 6fecc73b Scott Dale
							$iconfnlog .= "_d";
531 5b237745 Scott Ullrich
				  	?>
532 6fecc73b Scott Dale
				  <br><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_<?=$iconfnlog;?>.gif" width="11" height="15" border="0">
533 5b237745 Scott Ullrich
				  <?php endif; ?>
534
				  </td>
535 3a54b6ca Scott Dale
				<?php
536 2a9db752 Scott Dale
				
537 2a113ca9 Scott Dale
				//build Alias popup box
538 3a54b6ca Scott Dale
				$span_end = "";
539
				$alias_src_span_begin = "";
540
				$alias_src_port_span_begin = "";
541
				$alias_dst_span_begin = "";
542
				$alias_dst_port_span_begin = "";
543
				
544 2a9db752 Scott Dale
				$alias_popup = rule_popup($filterent['source']['address'],pprint_port($filterent['source']['port']),$filterent['destination']['address'],pprint_port($filterent['destination']['port']));
545
				$span_end = "</U></span>";
546 3a54b6ca Scott Dale
					
547 2a9db752 Scott Dale
				$alias_src_span_begin = $alias_popup["src"];
548
				 									
549
				$alias_src_port_span_begin = $alias_popup["srcport"];
550
													
551
				$alias_dst_span_begin = $alias_popup["dst"];
552
														
553
				$alias_dst_port_span_begin = $alias_popup["dstport"];
554 3a54b6ca Scott Dale
					
555 2a113ca9 Scott Dale
				//build Schedule popup box
556
				$a_schedules = &$config['schedules']['schedule'];
557
				$schedule_span_begin = "";
558
				$schedule_span_end = "";
559 d2aa8cd6 sullrich
				$sched_caption_escaped = "";
560 eace1363 Scott Dale
				$sched_content = "";
561 3b907eb1 Scott Dale
				$schedstatus = false;
562 38f90dc8 Rafael Lucas
				$dayArray = array (gettext('Mon'),gettext('Tues'),gettext('Wed'),gettext('Thur'),gettext('Fri'),gettext('Sat'),gettext('Sun'));
563
				$monthArray = array (gettext('January'),gettext('February'),gettext('March'),gettext('April'),gettext('May'),gettext('June'),gettext('July'),gettext('August'),gettext('September'),gettext('October'),gettext('November'),gettext('December'));
564 b6ab9bd2 Ermal
				if($config['schedules']['schedule'] <> "" and is_array($config['schedules']['schedule'])) {
565 8ce97a08 Scott Dale
					foreach ($a_schedules as $schedule)
566
					{
567
						if ($schedule['name'] == $filterent['sched'] ){
568 60120e37 Ermal Lu?i
							$schedstatus = filter_get_time_based_rule_status($schedule);
569 8ce97a08 Scott Dale
							
570
							foreach($schedule['timerange'] as $timerange) {
571
								$tempFriendlyTime = "";
572
								$tempID = "";
573
								$firstprint = false;
574
								if ($timerange){
575
									$dayFriendly = "";
576
									$tempFriendlyTime = "";							
577
										
578
									//get hours
579
									$temptimerange = $timerange['hour'];
580
									$temptimeseparator = strrpos($temptimerange, "-");
581 2a113ca9 Scott Dale
									
582 8ce97a08 Scott Dale
									$starttime = substr ($temptimerange, 0, $temptimeseparator); 
583
									$stoptime = substr ($temptimerange, $temptimeseparator+1); 
584 2a113ca9 Scott Dale
										
585 8ce97a08 Scott Dale
									if ($timerange['month']){
586
										$tempmontharray = explode(",", $timerange['month']);
587
										$tempdayarray = explode(",",$timerange['day']);
588
										$arraycounter = 0;
589
										$firstDayFound = false;
590
										$firstPrint = false;
591
										foreach ($tempmontharray as $monthtmp){
592
											$month = $tempmontharray[$arraycounter];
593
											$day = $tempdayarray[$arraycounter];
594 2a113ca9 Scott Dale
											
595
											if (!$firstDayFound)
596
											{
597 8ce97a08 Scott Dale
												$firstDay = $day;
598
												$firstmonth = $month;
599 2a113ca9 Scott Dale
												$firstDayFound = true;
600
											}
601 8ce97a08 Scott Dale
												
602
											$currentDay = $day;
603
											$nextDay = $tempdayarray[$arraycounter+1];
604
											$currentDay++;
605
											if (($currentDay != $nextDay) || ($tempmontharray[$arraycounter] != $tempmontharray[$arraycounter+1])){
606
												if ($firstPrint)
607 2a113ca9 Scott Dale
													$dayFriendly .= ", ";
608
												$currentDay--;
609
												if ($currentDay != $firstDay)
610 8ce97a08 Scott Dale
													$dayFriendly .= $monthArray[$firstmonth-1] . " " . $firstDay . " - " . $currentDay ;
611 2a113ca9 Scott Dale
												else
612 8ce97a08 Scott Dale
													$dayFriendly .=  $monthArray[$month-1] . " " . $day;
613 2a113ca9 Scott Dale
												$firstDayFound = false;	
614 8ce97a08 Scott Dale
												$firstPrint = true;
615
											}													
616
											$arraycounter++;	
617 2a113ca9 Scott Dale
										}
618
									}
619 8ce97a08 Scott Dale
									else
620
									{
621
										$tempdayFriendly = $timerange['position'];
622
										$firstDayFound = false;
623
										$tempFriendlyDayArray = explode(",", $tempdayFriendly);								
624
										$currentDay = "";
625
										$firstDay = "";
626
										$nextDay = "";
627
										$counter = 0;													
628
										foreach ($tempFriendlyDayArray as $day){
629
											if ($day != ""){
630
												if (!$firstDayFound)
631
												{
632
													$firstDay = $tempFriendlyDayArray[$counter];
633
													$firstDayFound = true;
634
												}
635
												$currentDay =$tempFriendlyDayArray[$counter];
636
												//get next day
637
												$nextDay = $tempFriendlyDayArray[$counter+1];
638
												$currentDay++;					
639
												if ($currentDay != $nextDay){
640
													if ($firstprint)
641
														$dayFriendly .= ", ";
642
													$currentDay--;
643
													if ($currentDay != $firstDay)
644
														$dayFriendly .= $dayArray[$firstDay-1] . " - " . $dayArray[$currentDay-1];
645
													else
646
														$dayFriendly .= $dayArray[$firstDay-1];
647
													$firstDayFound = false;	
648
													$firstprint = true;			
649
												}
650
												$counter++;
651
											}
652
										}
653
									}		
654
									$timeFriendly = $starttime . " - " . $stoptime;
655
									$description = $timerange['rangedescr'];
656
									$sched_content .= $dayFriendly . "; " . $timeFriendly . "<br>";
657
								}
658 2a113ca9 Scott Dale
							}
659 d2aa8cd6 sullrich
							$sched_caption_escaped = str_replace("'", "\'", $schedule['descr']);
660
							$schedule_span_begin = "<span style=\"cursor: help;\" onmouseover=\"domTT_activate(this, event, 'content', '<h1>{$sched_caption_escaped}</h1><p>{$sched_content}</p>', 'trail', true, 'delay', 0, 'fade', 'both', 'fadeMax', 93, 'styleClass', 'niceTitle');\" onmouseout=\"this.style.color = ''; domTT_mouseout(this, event);\"><U>";
661 8ce97a08 Scott Dale
							$schedule_span_end = "</U></span>";
662 2a113ca9 Scott Dale
						}
663
					}
664
				}
665 6fecc73b Scott Dale
				$printicon = false;
666 616dd997 Scott Dale
				$alttext = "";
667
				$image = "";
668
				if (!isset($filterent['disabled'])){
669
					 if ($schedstatus) 
670
					 { 
671
					 	if ($iconfn == "block" || $iconfn == "reject")
672
					 	{
673 5b552ac7 Scott Dale
					 		$image = "icon_block";
674 38f90dc8 Rafael Lucas
					 		$alttext = gettext("Traffic matching this rule is currently being denied");
675 616dd997 Scott Dale
					 	}
676
					 	else
677
					 	{
678 5b552ac7 Scott Dale
					 		$image = "icon_pass";
679 38f90dc8 Rafael Lucas
					 		$alttext = gettext("Traffic matching this rule is currently being allowed");
680 616dd997 Scott Dale
					 	}
681
					 	$printicon = true;
682
					  }
683
					  else if ($filterent['sched'])
684
					  { 
685
					 	if ($iconfn == "block" || $iconfn == "reject")
686 5b552ac7 Scott Dale
					 		$image = "icon_block_d";
687 616dd997 Scott Dale
					 	else
688 5b552ac7 Scott Dale
					 		$image = "icon_block";
689 38f90dc8 Rafael Lucas
					 	$alttext = gettext("This rule is not currently active because its period has expired");
690 616dd997 Scott Dale
					 	$printicon = true;				  	
691
					  }
692
				}
693 3a54b6ca Scott Dale
				?>
694 98e29097 Bill Marquette
                  <td class="listlr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
695 4e8854c6 Charlie Root
                    <?=$textss;?><?php if (isset($filterent['id'])) echo $filterent['id']."&nbsp;"; else echo "&nbsp;"; ?><?=$textse;?>
696 b9e28d57 unknown
                  </td>
697 5fec5fe4 Scott Ullrich
<?php
698
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tr");
699
?>
700 b9e28d57 unknown
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
701 be81b340 Erik Fonnesbeck
                    <?=$textss;?><?php
702 290797ea Seth Mos
			if (isset($filterent['ipprotocol'])) {
703
				switch($filterent['ipprotocol']) {
704
					case "inet":
705
						echo "IPv4 ";
706
						break;
707
					case "inet6":
708
						echo "IPv6 ";
709
						break;
710 05a4cebd smos
					case "inet46":
711
						echo "IPv4+6 ";
712
						break;
713 290797ea Seth Mos
				}
714
			} else {
715
				echo "IPv4 ";
716
			}
717 be81b340 Erik Fonnesbeck
			if (isset($filterent['protocol'])) {
718
				echo strtoupper($filterent['protocol']);
719
				if (strtoupper($filterent['protocol']) == "ICMP" && !empty($filterent['icmptype'])) {
720
					echo ' <span style="cursor: help;" title="ICMP type: ' . $icmptypes[$filterent['icmptype']] . '"><u>';
721
					echo $filterent['icmptype'];
722
					echo '</u></span>';
723
				}
724
			} else echo "*";
725
                    ?><?=$textse;?>
726 5b237745 Scott Ullrich
                  </td>
727 98e29097 Bill Marquette
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
728 3a54b6ca Scott Dale
				    <?=$textss;?><?php echo $alias_src_span_begin;?><?php echo htmlspecialchars(pprint_address($filterent['source']));?><?php echo $alias_src_span_end;?><?=$textse;?>
729 5b237745 Scott Ullrich
                  </td>
730 98e29097 Bill Marquette
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
731 3a54b6ca Scott Dale
                    <?=$textss;?><?php echo $alias_src_port_span_begin;?><?php echo htmlspecialchars(pprint_port($filterent['source']['port'])); ?><?php echo $alias_src_port_span_end;?><?=$textse;?>
732 5b237745 Scott Ullrich
                  </td>
733 98e29097 Bill Marquette
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
734 3a54b6ca Scott Dale
				    <?=$textss;?><?php echo $alias_dst_span_begin;?><?php echo htmlspecialchars(pprint_address($filterent['destination'])); ?><?php echo $alias_dst_span_end;?><?=$textse;?>
735 5b237745 Scott Ullrich
                  </td>
736 3a54b6ca Scott Dale
	              <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
737
                    <?=$textss;?><?php echo $alias_dst_port_span_begin;?><?php echo htmlspecialchars(pprint_port($filterent['destination']['port'])); ?><?php echo $alias_dst_port_span_end;?><?=$textse;?>
738 5b237745 Scott Ullrich
                  </td>
739 b504c2f8 Scott Ullrich
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
740 e9832b41 Bill Marquette
                    <?=$textss;?><?php if (isset($config['interfaces'][$filterent['gateway']]['descr'])) echo htmlspecialchars($config['interfaces'][$filterent['gateway']]['descr']); else  echo htmlspecialchars(pprint_port($filterent['gateway'])); ?><?=$textse;?>
741 b504c2f8 Scott Ullrich
                  </td>
742 32c58070 Scott Ullrich
				  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';"><?=$textss;?>
743 197bfe96 Ermal Luçi
                          <?php
744
							if (isset($filterent['ackqueue']) && isset($filterent['defaultqueue'])) {
745
								$desc = $filterent['ackqueue'] ;
746
							    echo "<a href=\"firewall_shaper_queues.php?queue={$filterent['ackqueue']}&action=show\">{$desc}</a>";
747
								$desc = $filterent['defaultqueue'];
748
							    echo "/<a href=\"firewall_shaper_queues.php?queue={$filterent['defaultqueue']}&action=show\">{$desc}</a>";
749
							} else if (isset($filterent['defaultqueue'])) {
750
								$desc = $filterent['defaultqueue'];
751
							    echo "<a href=\"firewall_shaper_queues.php?queue={$filterent['defaultqueue']}&action=show\">{$desc}</a>"; }
752 7a808e01 Carlos Eduardo Ramos
							else echo gettext("none");
753 197bfe96 Ermal Luçi
						  ?><?=$textse;?>
754
                        </td>
755 3595b631 Scott Dale
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';"><font color="black">
756 d3bcf522 Scott Dale
                    <?php if ($printicon) { ?><img src="./themes/<?= $g['theme']; ?>/images/icons/<?php echo $image; ?>.gif" title="<?php echo $alttext;?>" border="0"><?php } ?>&nbsp;<?=$textss;?><?php echo $schedule_span_begin;?><?=htmlspecialchars($filterent['sched']);?><?php echo $schedule_span_end; ?><?=$textse;?>
757 7738faa8 Scott Ullrich
                  </td>
758 1db196b2 Scott Ullrich
<?php
759
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_descr_tr");
760
?>
761 c2a6f323 Scott Ullrich
                  <td class="listbg" onClick="fr_toggle(<?=$nrules;?>)" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';" class="descr">
762 07bd3f83 Scott Ullrich
                    <?=$textss;?><?=htmlspecialchars($filterent['descr']);?>&nbsp;<?=$textse;?>
763 5b237745 Scott Ullrich
                  </td>
764
                  <td valign="middle" nowrap class="list">
765 07bd3f83 Scott Ullrich
				    <table border="0" cellspacing="0" cellpadding="1">
766
					<tr>
767 7a808e01 Carlos Eduardo Ramos
					  <td><input name="move_<?=$i;?>" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" width="17" height="17" title="<?=gettext("move selected rules before this rule"); ?>" onMouseOver="fr_insline(<?=$nrules;?>, true)" onMouseOut="fr_insline(<?=$nrules;?>, false)"></td>
768
					  <td><a href="firewall_rules_edit.php?id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" title="<?=gettext("edit rule"); ?>" width="17" height="17" border="0"></a></td>
769 07bd3f83 Scott Ullrich
					</tr>
770
					<tr>
771 dd5bf424 Scott Ullrich
					  <td align="center" valign="middle"><a href="firewall_rules.php?act=del&if=<?=htmlspecialchars($if);?>&id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete rule"); ?>" onclick="return confirm('Do you really want to delete this rule?')"></a></td>
772 7a808e01 Carlos Eduardo Ramos
					  <td><a href="firewall_rules_edit.php?dup=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add a new rule based on this one"); ?>" width="17" height="17" border="0"></a></td>
773 07bd3f83 Scott Ullrich
					</tr>
774
					</table>
775 5b237745 Scott Ullrich
				  </td>
776
				</tr>
777 07bd3f83 Scott Ullrich
			  <?php $nrules++; endfor; ?>
778 32c58070 Scott Ullrich
			  </tbody>
779 07bd3f83 Scott Ullrich
			  <?php if ($nrules == 0): ?>
780 37e2071c Scott Ullrich
              <td class="listt"></td>
781 07bd3f83 Scott Ullrich
			  <td class="listt"></td>
782 d5a1008d Scott Ullrich
			  <td class="listlr" colspan="10" align="center" valign="middle">
783 07bd3f83 Scott Ullrich
			  <span class="gray">
784 7be46353 jim-p
			<?php if ($_REQUEST['if'] == "FloatingRules"): ?>
785
			  <?=gettext("No floating rules are currently defined."); ?><br/><br/>
786
			<?php else: ?>
787
			  <?=gettext("No rules are currently defined for this interface"); ?><br/>
788
			  <?=gettext("All incoming connections on this interface will be blocked until you add pass rules."); ?><br/><br/>
789
			<?php endif; ?>
790 dd5bf424 Scott Ullrich
			  <?=gettext("Click the"); ?> <a href="firewall_rules_edit.php?if=<?=htmlspecialchars($if);?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add new rule");?>" border="0" width="17" height="17" align="absmiddle"></a><?=gettext(" button to add a new rule.");?></span>
791 07bd3f83 Scott Ullrich
			  </td>
792
			  <?php endif; ?>
793 37e2071c Scott Ullrich
                <tr id="fr<?=$nrules;?>">
794
                  <td class="list"></td>
795
                  <td class="list"></td>
796 8c5bf3d7 Scott Ullrich
<?php
797
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tr_belowtable");
798
?>
799 37e2071c Scott Ullrich
                  <td class="list">&nbsp;</td>
800
                  <td class="list">&nbsp;</td>
801
                  <td class="list">&nbsp;</td>
802 b9e28d57 unknown
                  <td class="list">&nbsp;</td>
803 1c7e3ec6 Bill Marquette
		  <td class="list">&nbsp;</td>
804
		  <td class="list">&nbsp;</td>
805
                  <td class="list">&nbsp;</td>
806 37e2071c Scott Ullrich
                  <td class="list">&nbsp;</td>
807
                  <td class="list">&nbsp;</td>
808
                  <td class="list">&nbsp;</td>
809 07bd3f83 Scott Ullrich
                  <td class="list">
810
				    <table border="0" cellspacing="0" cellpadding="1">
811
					<tr>
812
				      <td>
813 38f90dc8 Rafael Lucas
					  <?php if ($nrules == 0): ?><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected rules to end");?>" border="0"><?php else: ?><input name="move_<?=$i;?>" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" width="17" height="17" title="<?=gettext("move selected rules to end");?>" onMouseOver="fr_insline(<?=$nrules;?>, true)" onMouseOut="fr_insline(<?=$nrules;?>, false)"><?php endif; ?></td>
814 37e2071c Scott Ullrich
					  <td></td>
815 07bd3f83 Scott Ullrich
				    </tr>
816
					<tr>
817 3086d0f8 Scott Ullrich
					  <td>
818
					  <?php if ($nrules == 0): ?>
819 38f90dc8 Rafael Lucas
					  <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected rules");?>" border="0"><?php else: ?>
820 d281f557 Vinicius Coque
					  <input name="del" type="image" src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" title="<?=gettext("delete selected rules");?>" onclick="return confirm('<?=gettext('Do you really want to delete the selected rules?');?>')"><?php endif; ?>
821 3086d0f8 Scott Ullrich
					  </td>
822 dd5bf424 Scott Ullrich
			                  <td><a href="firewall_rules_edit.php?if=<?=htmlspecialchars($if);?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add new rule");?>" width="17" height="17" border="0"></a></td>
823 07bd3f83 Scott Ullrich
					</tr>
824
				    </table>
825
				  </td>
826 5b237745 Scott Ullrich
				</tr>
827
              </table>
828 d732f186 Bill Marquette
	      <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0">
829 b2ffe419 Scott Ullrich
                <tr>
830 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass.gif" width="11" height="11"></td>
831 38f90dc8 Rafael Lucas
                  <td><?=gettext("pass");?></td>
832 5b237745 Scott Ullrich
                  <td width="14"></td>
833 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block.gif" width="11" height="11"></td>
834 38f90dc8 Rafael Lucas
                  <td><?=gettext("block");?></td>
835 5b237745 Scott Ullrich
                  <td width="14"></td>
836 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_reject.gif" width="11" height="11"></td>
837 38f90dc8 Rafael Lucas
                  <td><?=gettext("reject");?></td>
838 5b237745 Scott Ullrich
                  <td width="14"></td>
839 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_log.gif" width="11" height="11"></td>
840 38f90dc8 Rafael Lucas
                  <td><?=gettext("log");?></td>
841 5b237745 Scott Ullrich
                </tr>
842 b2ffe419 Scott Ullrich
                <tr>
843 677c0869 Erik Kristensen
                  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass_d.gif" width="11" height="11"></td>
844 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("pass (disabled)");?></td>
845 d732f186 Bill Marquette
                  <td>&nbsp;</td>
846 677c0869 Erik Kristensen
                  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block_d.gif" width="11" height="11"></td>
847 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("block (disabled)");?></td>
848 d732f186 Bill Marquette
                  <td>&nbsp;</td>
849 677c0869 Erik Kristensen
                  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_reject_d.gif" width="11" height="11"></td>
850 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("reject (disabled)");?></td>
851 d732f186 Bill Marquette
                  <td>&nbsp;</td>
852 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_log_d.gif" width="11" height="11"></td>
853 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("log (disabled)");?></td>
854 5b237745 Scott Ullrich
                </tr>
855 d732f186 Bill Marquette
		<tr>
856 05860c07 Scott Ullrich
		  <td colspan="10">
857 c662cc9d Scott Ullrich
  &nbsp;<p/>
858
  <strong>
859 45a06eeb Renato Botelho
	<span class="red"><?=gettext("Hint:");?></span>
860 c662cc9d Scott Ullrich
  </strong><br>
861
	<ul>
862 badc2340 jim-p
<? if ("FloatingRules" != $if): ?>
863
	<li><?=gettext("Rules are evaluated on a first-match basis (i.e. " .
864
	"the action of the first rule to match a packet will be executed). " .
865
	"This means that if you use block rules, you'll have to pay attention " .
866
	"to the rule order. Everything that isn't explicitly passed is blocked " .
867
	"by default. ");?>
868
	</li>
869
<? else: ?>
870
	<li><?=gettext("Floating rules are evaluated on a first-match basis (i.e. " .
871
	"the action of the first rule to match a packet will be executed) only " .
872
	"if the 'quick' option is checked on a rule. Otherwise they will only apply if no " .
873
	"other rules match. Pay close attention to the rule order and options " .
874
	"chosen. If no rule here matches, the per-interface or default rules are used. ");?>
875
	</li>
876
<? endif; ?>
877 c662cc9d Scott Ullrich
</ul>
878 d732f186 Bill Marquette
		 </td>
879
	        </tr>
880
              </table>
881
	</div>
882
    </td>
883
  </tr>
884
</table>
885 dd5bf424 Scott Ullrich
  <input type="hidden" name="if" value="<?=htmlspecialchars($if);?>">
886 32c58070 Scott Ullrich
  <script type="text/javascript">
887 7abaeb1f Scott Ullrich
	var number_of_rules = <?=$nrules?>;
888 32c58070 Scott Ullrich
<?php $nrules = 0; for ($i = 0; isset($a_filter[$i]); $i++): ?>
889 7ff41586 Scott Ullrich
/*
890 32c58070 Scott Ullrich
	Sortable.create("dragtable", { 
891
		tag:"tr", 
892
		format:"fr([0-9999999])",
893
		containment:["dragtable"], 
894 7abaeb1f Scott Ullrich
		onChange:function(affected) {
895
			document.body.style.cursor = 'move';
896 32c58070 Scott Ullrich
		},
897 7abaeb1f Scott Ullrich
		onUpdate:function(container) { 
898
			document.body.style.cursor = 'move';
899 32c58070 Scott Ullrich
			updateOrder(Sortable.serialize('dragtable', 'tr'));
900
		} 
901
	});
902 7ff41586 Scott Ullrich
*/
903 32c58070 Scott Ullrich
<?php endfor; ?>
904
	function updateOrder(order) {
905 12c54789 Scott Ullrich
		if(document.getElementById("redboxtable"))
906 df39dd8a Vinicius Coque
			jQuery('#redboxtable').hide();
907
		jQuery('#loading').show();
908 32c58070 Scott Ullrich
		document.body.style.cursor = 'wait';
909 dd5bf424 Scott Ullrich
		document.location = 'firewall_rules.php?if=<?=htmlspecialchars($if);?>&dragdroporder=true&' + Sortable.serialize('dragtable', 'tr');
910 32c58070 Scott Ullrich
		return;
911
	}
912 df39dd8a Vinicius Coque
	jQuery('#loading').hide();
913 32c58070 Scott Ullrich
  </script>
914 07bd3f83 Scott Ullrich
</form>
915 5b237745 Scott Ullrich
<?php include("fend.inc"); ?>
916 af4aa061 Scott Ullrich
</body>
917
</html>