Project

General

Profile

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