Project

General

Profile

Download (39.7 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 c7281770 Chris Buechler
	part of pfSense (https://www.pfsense.org)
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 15e47776 Luiz Gustavo Costa
	$config = write_config(gettext("Drag and drop firewall rules ordering update."));
109 32c58070 Scott Ullrich
	// 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 8cd558b6 ayvis
		$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 07130afe ayvis
<script type="text/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 8cd558b6 ayvis
	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 8cd558b6 ayvis
	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 8cd558b6 ayvis
<br />
317 5b237745 Scott Ullrich
<?php endif; ?>
318 df222163 Scott Ullrich
<div id="loading" style="visibity:hidden">
319 15e47776 Luiz Gustavo Costa
    <img src="/themes/<?=$g['theme']?>/images/misc/loader.gif" alt="loader" /> <?php echo gettext("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 1db196b2 Scott Ullrich
			<tr id="frheader">
352
			<td width="3%" class="list">&nbsp;</td>
353
			<td width="5%" class="list">&nbsp;</td>
354 5fec5fe4 Scott Ullrich
			<td width="3%" class="listhdrr"><?=gettext("ID");?></td>
355 56dda8e0 Renato Botelho
			<?php
356 1db196b2 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tablehead");
357 56dda8e0 Renato Botelho
			?>
358 1db196b2 Scott Ullrich
			<td width="6%" class="listhdrr"><?=gettext("Proto");?></td>
359
			<td width="12%" class="listhdrr"><?=gettext("Source");?></td>
360
			<td width="6%" class="listhdrr"><?=gettext("Port");?></td>
361
			<td width="12%" class="listhdrr"><?=gettext("Destination");?></td>
362
			<td width="6%" class="listhdrr"><?=gettext("Port");?></td>
363
			<td width="5%" class="listhdrr"><?=gettext("Gateway");?></td>
364
			<td width="8%" class="listhdrr"><?=gettext("Queue");?></td>
365
			<td width="5%" class="listhdrr"><?=gettext("Schedule");?></td>
366 56dda8e0 Renato Botelho
			<?php
367 10995178 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_desc_tablehead");
368 56dda8e0 Renato Botelho
			?>
369 1db196b2 Scott Ullrich
			<td width="19%" class="listhdr"><?=gettext("Description");?></td>
370
			<td width="10%" class="list">
371 44605bc8 Colin Fleming
				<table border="0" cellspacing="0" cellpadding="1" summary="delete selected rules">
372 56dda8e0 Renato Botelho
					<tr>
373
					<?php
374
						$nrules = 0;
375
						for ($i = 0; isset($a_filter[$i]); $i++) {
376
							$filterent = $a_filter[$i];
377
							if ($filterent['interface'] != $if && !isset($filterent['floating']))
378
								continue;
379
							if (isset($filterent['floating']) && "FloatingRules" != $if)
380
								continue;
381
							$nrules++;
382
						}
383
					?>
384
					<td>
385
					<?php if ($nrules == 0): ?>
386 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: ?>
387
						<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?');?>')" />
388 56dda8e0 Renato Botelho
					<?php endif; ?>
389
					</td>
390 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>
391 56dda8e0 Renato Botelho
					</tr>
392
				</table>
393
			</td>
394
			</tr>
395
			<?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.
396
				if (!isset($config['system']['webgui']['noantilockout']) &&
397
					(((count($config['interfaces']) > 1) && ($if == 'lan'))
398
					|| ((count($config['interfaces']) == 1) && ($if == 'wan')))):
399
400 8cd558b6 ayvis
					$alports = implode('<br />', filter_get_antilockout_ports(true));
401 56dda8e0 Renato Botelho
			?>
402
			<tr valign="top" id="antilockout">
403 03976254 jim-p
			<td class="list">&nbsp;</td>
404 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>
405 4e8854c6 Charlie Root
			<td class="listlr" style="background-color: #E0E0E0">&nbsp;</td>
406 56dda8e0 Renato Botelho
			<?php
407 5fec5fe4 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tr_antilockout");
408 56dda8e0 Renato Botelho
			?>
409 03976254 jim-p
			<td class="listr" style="background-color: #E0E0E0">*</td>
410
			<td class="listr" style="background-color: #E0E0E0">*</td>
411
			<td class="listr" style="background-color: #E0E0E0">*</td>
412
			<td class="listr" style="background-color: #E0E0E0"><?=$iflist[$if];?> Address</td>
413 31f0ef21 jim-p
			<td class="listr" style="background-color: #E0E0E0"><?= $alports ?></td>
414 03976254 jim-p
			<td class="listr" style="background-color: #E0E0E0">*</td>
415
			<td class="listr" style="background-color: #E0E0E0">*</td>
416 4e8854c6 Charlie Root
			<td class="listr" style="background-color: #E0E0E0">&nbsp;</td>
417 03976254 jim-p
			<td class="listbg"><?=gettext("Anti-Lockout Rule");?></td>
418 f4245bbc Colin Fleming
			<td valign="middle" class="list nowrap">
419 44605bc8 Colin Fleming
			<table border="0" cellspacing="0" cellpadding="1" summary="move rules before">
420 03976254 jim-p
				<tr>
421 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>
422
					<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>
423 03976254 jim-p
				</tr>
424
				<tr>
425
					<td align="center" valign="middle"></td>
426 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>
427 03976254 jim-p
				</tr>
428
				</table>
429
			</td>
430
			</tr>
431
<?php endif; ?>
432
433 f1f60c92 Ermal Luçi
<?php if (isset($config['interfaces'][$if]['blockpriv'])): ?>
434 56dda8e0 Renato Botelho
			<tr valign="top" id="frrfc1918">
435
			<td class="list">&nbsp;</td>
436 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>
437 56dda8e0 Renato Botelho
			<td class="listlr" style="background-color: #E0E0E0">&nbsp;</td>
438
			<td class="listr" style="background-color: #E0E0E0">*</td>
439
			<td class="listr" style="background-color: #E0E0E0"><?=gettext("RFC 1918 networks");?></td>
440
			<td class="listr" style="background-color: #E0E0E0">*</td>
441
			<td class="listr" style="background-color: #E0E0E0">*</td>
442
			<td class="listr" style="background-color: #E0E0E0">*</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">&nbsp;</td>
446
			<td class="listbg"><?=gettext("Block private networks");?></td>
447 f4245bbc Colin Fleming
			<td valign="middle" class="list nowrap">
448 44605bc8 Colin Fleming
				<table border="0" cellspacing="0" cellpadding="1" summary="move rules before">
449 d9eeccbd Scott Ullrich
					<tr>
450 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>
451
					<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>
452 d9eeccbd Scott Ullrich
					</tr>
453
					<tr>
454 56dda8e0 Renato Botelho
					<td align="center" valign="middle"></td>
455 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>
456 d9eeccbd Scott Ullrich
					</tr>
457 56dda8e0 Renato Botelho
				</table>
458
			</td>
459
			</tr>
460 c20c0f5a Scott Ullrich
<?php endif; ?>
461 f1f60c92 Ermal Luçi
<?php if (isset($config['interfaces'][$if]['blockbogons'])): ?>
462 56dda8e0 Renato Botelho
			<tr valign="top" id="frrfc1918">
463
			<td class="list">&nbsp;</td>
464 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>
465 56dda8e0 Renato Botelho
			<td class="listlr" style="background-color: #E0E0E0">&nbsp;</td>
466
			<td class="listr" style="background-color: #E0E0E0">*</td>
467
			<td class="listr" style="background-color: #E0E0E0"><?=gettext("Reserved/not assigned by IANA");?></td>
468
			<td class="listr" style="background-color: #E0E0E0">*</td>
469
			<td class="listr" style="background-color: #E0E0E0">*</td>
470
			<td class="listr" style="background-color: #E0E0E0">*</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="listbg"><?=gettext("Block bogon networks");?></td>
475 f4245bbc Colin Fleming
			<td valign="middle" class="list nowrap">
476 44605bc8 Colin Fleming
				<table border="0" cellspacing="0" cellpadding="1" summary="move rules before">
477 c20c0f5a Scott Ullrich
					<tr>
478 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>
479
					<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>
480 c20c0f5a Scott Ullrich
					</tr>
481
					<tr>
482 56dda8e0 Renato Botelho
					<td align="center" valign="middle"></td>
483 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>
484 c20c0f5a Scott Ullrich
					</tr>
485 56dda8e0 Renato Botelho
				</table>
486
			</td>
487
			</tr>
488 c20c0f5a Scott Ullrich
<?php endif; ?>
489 f4245bbc Colin Fleming
			<tbody id="dragtable">
490 56dda8e0 Renato Botelho
<?php $nrules = 0; for ($i = 0; isset($a_filter[$i]); $i++):
491
	pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/row_start");
492
	$filterent = $a_filter[$i];
493
	if ($filterent['interface'] != $if && !isset($filterent['floating']))
494
		continue;
495
	if (isset($filterent['floating']) && "FloatingRules" != $if)
496
		continue;
497
	$isadvset = firewall_check_for_advanced_options($filterent);
498
	if($isadvset)
499 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\" />";
500 56dda8e0 Renato Botelho
	else
501
		$advanced_set = "";
502
?>
503
			<tr valign="top" id="fr<?=$nrules;?>">
504
			<td class="listt">
505 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;" />
506 56dda8e0 Renato Botelho
				<?php echo $advanced_set; ?>
507
			</td>
508
			<td class="listt" align="center">
509
			<?php
510
				if ($filterent['type'] == "block")
511
					$iconfn = "block";
512
				else if ($filterent['type'] == "reject")
513
					$iconfn = "reject";
514 c739be2c Colin Fleming
				else if ($filterent['type'] == "match")
515
					$iconfn = "match";
516 56dda8e0 Renato Botelho
				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 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>
527 56dda8e0 Renato Botelho
			<?php
528
				if (isset($filterent['log'])):
529
					$iconfnlog = "log_s";
530
				if (isset($filterent['disabled']))
531
					$iconfnlog .= "_d";
532
			?>
533 8cd558b6 ayvis
			<br /><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_<?=$iconfnlog;?>.gif" width="11" height="15" border="0" alt="icon" />
534 56dda8e0 Renato Botelho
<?php endif; ?>
535
			</td>
536
			<?php
537
538 2a113ca9 Scott Dale
				//build Alias popup box
539 3a54b6ca Scott Dale
				$alias_src_span_begin = "";
540
				$alias_src_port_span_begin = "";
541
				$alias_dst_span_begin = "";
542
				$alias_dst_port_span_begin = "";
543 56dda8e0 Renato Botelho
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 56dda8e0 Renato Botelho
546 2a9db752 Scott Dale
				$alias_src_span_begin = $alias_popup["src"];
547
				$alias_src_port_span_begin = $alias_popup["srcport"];
548
				$alias_dst_span_begin = $alias_popup["dst"];
549
				$alias_dst_port_span_begin = $alias_popup["dstport"];
550 56dda8e0 Renato Botelho
551 59167b10 Darren Embry
				$alias_src_span_end = $alias_popup["src_end"];
552
				$alias_src_port_span_end = $alias_popup["srcport_end"];
553
				$alias_dst_span_end = $alias_popup["dst_end"];
554
				$alias_dst_port_span_end = $alias_popup["dstport_end"];
555 56dda8e0 Renato Botelho
556 2a113ca9 Scott Dale
				//build Schedule popup box
557
				$a_schedules = &$config['schedules']['schedule'];
558
				$schedule_span_begin = "";
559
				$schedule_span_end = "";
560 d2aa8cd6 sullrich
				$sched_caption_escaped = "";
561 eace1363 Scott Dale
				$sched_content = "";
562 3b907eb1 Scott Dale
				$schedstatus = false;
563 38f90dc8 Rafael Lucas
				$dayArray = array (gettext('Mon'),gettext('Tues'),gettext('Wed'),gettext('Thur'),gettext('Fri'),gettext('Sat'),gettext('Sun'));
564
				$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'));
565 b6ab9bd2 Ermal
				if($config['schedules']['schedule'] <> "" and is_array($config['schedules']['schedule'])) {
566 8ce97a08 Scott Dale
					foreach ($a_schedules as $schedule)
567
					{
568
						if ($schedule['name'] == $filterent['sched'] ){
569 60120e37 Ermal Lu?i
							$schedstatus = filter_get_time_based_rule_status($schedule);
570 56dda8e0 Renato Botelho
571 8ce97a08 Scott Dale
							foreach($schedule['timerange'] as $timerange) {
572
								$tempFriendlyTime = "";
573
								$tempID = "";
574
								$firstprint = false;
575
								if ($timerange){
576
									$dayFriendly = "";
577 56dda8e0 Renato Botelho
									$tempFriendlyTime = "";
578
579 8ce97a08 Scott Dale
									//get hours
580
									$temptimerange = $timerange['hour'];
581
									$temptimeseparator = strrpos($temptimerange, "-");
582 56dda8e0 Renato Botelho
583
									$starttime = substr ($temptimerange, 0, $temptimeseparator);
584
									$stoptime = substr ($temptimerange, $temptimeseparator+1);
585
586 8ce97a08 Scott Dale
									if ($timerange['month']){
587
										$tempmontharray = explode(",", $timerange['month']);
588
										$tempdayarray = explode(",",$timerange['day']);
589
										$arraycounter = 0;
590
										$firstDayFound = false;
591
										$firstPrint = false;
592
										foreach ($tempmontharray as $monthtmp){
593
											$month = $tempmontharray[$arraycounter];
594
											$day = $tempdayarray[$arraycounter];
595 56dda8e0 Renato Botelho
596 2a113ca9 Scott Dale
											if (!$firstDayFound)
597
											{
598 8ce97a08 Scott Dale
												$firstDay = $day;
599
												$firstmonth = $month;
600 2a113ca9 Scott Dale
												$firstDayFound = true;
601
											}
602 56dda8e0 Renato Botelho
603 8ce97a08 Scott Dale
											$currentDay = $day;
604
											$nextDay = $tempdayarray[$arraycounter+1];
605
											$currentDay++;
606
											if (($currentDay != $nextDay) || ($tempmontharray[$arraycounter] != $tempmontharray[$arraycounter+1])){
607
												if ($firstPrint)
608 2a113ca9 Scott Dale
													$dayFriendly .= ", ";
609
												$currentDay--;
610
												if ($currentDay != $firstDay)
611 8ce97a08 Scott Dale
													$dayFriendly .= $monthArray[$firstmonth-1] . " " . $firstDay . " - " . $currentDay ;
612 2a113ca9 Scott Dale
												else
613 8ce97a08 Scott Dale
													$dayFriendly .=  $monthArray[$month-1] . " " . $day;
614 56dda8e0 Renato Botelho
												$firstDayFound = false;
615 8ce97a08 Scott Dale
												$firstPrint = true;
616 56dda8e0 Renato Botelho
											}
617
											$arraycounter++;
618 2a113ca9 Scott Dale
										}
619
									}
620 8ce97a08 Scott Dale
									else
621
									{
622
										$tempdayFriendly = $timerange['position'];
623
										$firstDayFound = false;
624 56dda8e0 Renato Botelho
										$tempFriendlyDayArray = explode(",", $tempdayFriendly);
625 8ce97a08 Scott Dale
										$currentDay = "";
626
										$firstDay = "";
627
										$nextDay = "";
628 56dda8e0 Renato Botelho
										$counter = 0;
629 8ce97a08 Scott Dale
										foreach ($tempFriendlyDayArray as $day){
630
											if ($day != ""){
631
												if (!$firstDayFound)
632
												{
633
													$firstDay = $tempFriendlyDayArray[$counter];
634
													$firstDayFound = true;
635
												}
636
												$currentDay =$tempFriendlyDayArray[$counter];
637
												//get next day
638
												$nextDay = $tempFriendlyDayArray[$counter+1];
639 56dda8e0 Renato Botelho
												$currentDay++;
640 8ce97a08 Scott Dale
												if ($currentDay != $nextDay){
641
													if ($firstprint)
642
														$dayFriendly .= ", ";
643
													$currentDay--;
644
													if ($currentDay != $firstDay)
645
														$dayFriendly .= $dayArray[$firstDay-1] . " - " . $dayArray[$currentDay-1];
646
													else
647
														$dayFriendly .= $dayArray[$firstDay-1];
648 56dda8e0 Renato Botelho
													$firstDayFound = false;
649
													$firstprint = true;
650 8ce97a08 Scott Dale
												}
651
												$counter++;
652
											}
653
										}
654 56dda8e0 Renato Botelho
									}
655 8ce97a08 Scott Dale
									$timeFriendly = $starttime . " - " . $stoptime;
656
									$description = $timerange['rangedescr'];
657 8cd558b6 ayvis
									$sched_content .= $dayFriendly . "; " . $timeFriendly . "<br />";
658 8ce97a08 Scott Dale
								}
659 2a113ca9 Scott Dale
							}
660 d2aa8cd6 sullrich
							$sched_caption_escaped = str_replace("'", "\'", $schedule['descr']);
661 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>";
662
							$schedule_span_end = "</u></span>";
663 2a113ca9 Scott Dale
						}
664
					}
665
				}
666 6fecc73b Scott Dale
				$printicon = false;
667 616dd997 Scott Dale
				$alttext = "";
668
				$image = "";
669 56dda8e0 Renato Botelho
				if (!isset($filterent['disabled'])) {
670
					if ($schedstatus) {
671
						if ($iconfn == "block" || $iconfn == "reject") {
672
							$image = "icon_block";
673
							$alttext = gettext("Traffic matching this rule is currently being denied");
674
						} else {
675
							$image = "icon_pass";
676
							$alttext = gettext("Traffic matching this rule is currently being allowed");
677
						}
678
						$printicon = true;
679
					} else if ($filterent['sched']) {
680
						if ($iconfn == "block" || $iconfn == "reject")
681
							$image = "icon_block_d";
682
						else
683
							$image = "icon_block";
684
						$alttext = gettext("This rule is not currently active because its period has expired");
685
						$printicon = true;
686
					}
687 616dd997 Scott Dale
				}
688 56dda8e0 Renato Botelho
			?>
689 f4245bbc Colin Fleming
			<td class="listlr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
690 56dda8e0 Renato Botelho
				<?=$textss;?><?php if (isset($filterent['id'])) echo $filterent['id']."&nbsp;"; else echo "&nbsp;"; ?><?=$textse;?>
691
			</td>
692
			<?php
693 5fec5fe4 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tr");
694 56dda8e0 Renato Botelho
			?>
695 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
696 56dda8e0 Renato Botelho
			<?=$textss;?>
697
			<?php
698
				if (isset($filterent['ipprotocol'])) {
699
					switch($filterent['ipprotocol']) {
700
						case "inet":
701
							echo "IPv4 ";
702
							break;
703
						case "inet6":
704
							echo "IPv6 ";
705
							break;
706
						case "inet46":
707
							echo "IPv4+6 ";
708
							break;
709
					}
710
				} else {
711
					echo "IPv4 ";
712 be81b340 Erik Fonnesbeck
				}
713 56dda8e0 Renato Botelho
				if (isset($filterent['protocol'])) {
714
					echo strtoupper($filterent['protocol']);
715
					if (strtoupper($filterent['protocol']) == "ICMP" && !empty($filterent['icmptype'])) {
716
						echo ' <span style="cursor: help;" title="ICMP type: ' . $icmptypes[$filterent['icmptype']] . '"><u>';
717
						echo $filterent['icmptype'];
718
						echo '</u></span>';
719
					}
720
				} else echo "*";
721
			?>
722
			<?=$textse;?>
723
			</td>
724 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
725 56dda8e0 Renato Botelho
				<?=$textss;?><?php echo $alias_src_span_begin;?><?php echo htmlspecialchars(pprint_address($filterent['source']));?><?php echo $alias_src_span_end;?><?=$textse;?>
726
			</td>
727 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
728 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;?>
729
			</td>
730 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
731 56dda8e0 Renato Botelho
				<?=$textss;?><?php echo $alias_dst_span_begin;?><?php echo htmlspecialchars(pprint_address($filterent['destination'])); ?><?php echo $alias_dst_span_end;?><?=$textse;?>
732
			</td>
733 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
734 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;?>
735
			</td>
736 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
737 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;?>
738
			</td>
739 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
740 56dda8e0 Renato Botelho
			<?=$textss;?>
741
			<?php
742
				if (isset($filterent['ackqueue']) && isset($filterent['defaultqueue'])) {
743
					$desc = $filterent['ackqueue'] ;
744 f4245bbc Colin Fleming
					echo "<a href=\"firewall_shaper_queues.php?queue={$filterent['ackqueue']}&amp;action=show\">{$desc}</a>";
745 56dda8e0 Renato Botelho
					$desc = $filterent['defaultqueue'];
746 f4245bbc Colin Fleming
					echo "/<a href=\"firewall_shaper_queues.php?queue={$filterent['defaultqueue']}&amp;action=show\">{$desc}</a>";
747 56dda8e0 Renato Botelho
				} else if (isset($filterent['defaultqueue'])) {
748
					$desc = $filterent['defaultqueue'];
749 f4245bbc Colin Fleming
					echo "<a href=\"firewall_shaper_queues.php?queue={$filterent['defaultqueue']}&amp;action=show\">{$desc}</a>";
750 56dda8e0 Renato Botelho
				} else
751
					echo gettext("none");
752
			?>
753
			<?=$textse;?>
754
			</td>
755 f4245bbc Colin Fleming
			<td class="listr" onclick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';"><font color="black">
756 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;?>
757 f4245bbc Colin Fleming
			</font></td>
758 56dda8e0 Renato Botelho
			<?php
759 1db196b2 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_descr_tr");
760 56dda8e0 Renato Botelho
			?>
761 f4245bbc Colin Fleming
			<td class="listbg descr" onclick="fr_toggle(<?=$nrules;?>)" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
762 56dda8e0 Renato Botelho
				<?=$textss;?><?=htmlspecialchars($filterent['descr']);?>&nbsp;<?=$textse;?>
763
			</td>
764 f4245bbc Colin Fleming
			<td valign="middle" class="list nowrap">
765 44605bc8 Colin Fleming
				<table border="0" cellspacing="0" cellpadding="1" summary="move before">
766 07bd3f83 Scott Ullrich
					<tr>
767 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>
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" alt="edit" /></a></td>
769 07bd3f83 Scott Ullrich
					</tr>
770
					<tr>
771 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>
772
					<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>
773 07bd3f83 Scott Ullrich
					</tr>
774 56dda8e0 Renato Botelho
				</table>
775
			</td>
776
			</tr>
777
			<?php $nrules++; endfor; ?>
778 f4245bbc Colin Fleming
			  <tr><td></td></tr></tbody>
779 56dda8e0 Renato Botelho
<?php if ($nrules == 0): ?>
780 f4245bbc Colin Fleming
			<tr>
781 56dda8e0 Renato Botelho
			<td class="listt"></td>
782
			<td class="listt"></td>
783
			<td class="listlr" colspan="10" align="center" valign="middle">
784
			<span class="gray">
785
	<?php if ($_REQUEST['if'] == "FloatingRules"): ?>
786 8cd558b6 ayvis
				<?=gettext("No floating rules are currently defined."); ?><br /><br />
787 56dda8e0 Renato Botelho
	<?php else: ?>
788 8cd558b6 ayvis
				<?=gettext("No rules are currently defined for this interface"); ?><br />
789
				<?=gettext("All incoming connections on this interface will be blocked until you add pass rules."); ?><br /><br />
790 56dda8e0 Renato Botelho
	<?php endif; ?>
791 f4245bbc Colin Fleming
				<?=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>
792 56dda8e0 Renato Botelho
			</td>
793 f4245bbc Colin Fleming
			</tr>
794 56dda8e0 Renato Botelho
<?php endif; ?>
795
			<tr id="fr<?=$nrules;?>">
796
			<td class="list"></td>
797
			<td class="list"></td>
798
			<?php
799 8c5bf3d7 Scott Ullrich
				pfSense_handle_custom_code("/usr/local/pkg/firewall_rules/pre_id_tr_belowtable");
800 56dda8e0 Renato Botelho
			?>
801
			<td class="list">&nbsp;</td>
802
			<td class="list">&nbsp;</td>
803
			<td class="list">&nbsp;</td>
804
			<td class="list">&nbsp;</td>
805
			<td class="list">&nbsp;</td>
806
			<td class="list">&nbsp;</td>
807
			<td class="list">&nbsp;</td>
808
			<td class="list">&nbsp;</td>
809
			<td class="list">&nbsp;</td>
810
			<td class="list">&nbsp;</td>
811
			<td class="list">
812 44605bc8 Colin Fleming
				<table border="0" cellspacing="0" cellpadding="1" summary="move rules">
813 07bd3f83 Scott Ullrich
					<tr>
814 56dda8e0 Renato Botelho
					<td>
815 f4245bbc Colin Fleming
						<?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>
816 56dda8e0 Renato Botelho
					<td></td>
817 07bd3f83 Scott Ullrich
					</tr>
818 56dda8e0 Renato Botelho
					<tr>
819
					<td>
820
<?php if ($nrules == 0): ?>
821 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: ?>
822
						<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?');?>')" />
823 a3381369 Colin Fleming
<?php endif; ?>
824 56dda8e0 Renato Botelho
					</td>
825 f4245bbc Colin Fleming
			                <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>
826 56dda8e0 Renato Botelho
					</tr>
827
				</table>
828
			</td>
829
			</tr>
830
		</table>
831 44605bc8 Colin Fleming
		<table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0" summary="icons">
832 56dda8e0 Renato Botelho
			<tr>
833 f4245bbc Colin Fleming
				<td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass.gif" width="11" height="11" alt="pass" /></td>
834 c739be2c Colin Fleming
				<td width="100"><?=gettext("pass");?></td>
835
				<td width="14"></td>
836
				<td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_match.gif" width="11" height="11" alt="match" /></td>
837
				<td width="100"><?=gettext("match");?></td>
838 56dda8e0 Renato Botelho
				<td width="14"></td>
839 f4245bbc Colin Fleming
				<td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block.gif" width="11" height="11" alt="block" /></td>
840 c739be2c Colin Fleming
				<td width="100"><?=gettext("block");?></td>
841 56dda8e0 Renato Botelho
				<td width="14"></td>
842 f4245bbc Colin Fleming
				<td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_reject.gif" width="11" height="11" alt="reject" /></td>
843 c739be2c Colin Fleming
				<td width="100"><?=gettext("reject");?></td>
844 56dda8e0 Renato Botelho
				<td width="14"></td>
845 f4245bbc Colin Fleming
				<td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_log.gif" width="11" height="11" alt="log" /></td>
846 c739be2c Colin Fleming
				<td width="100"><?=gettext("log");?></td>
847 56dda8e0 Renato Botelho
			</tr>
848
			<tr>
849 f4245bbc Colin Fleming
				<td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass_d.gif" width="11" height="11" alt="pass disabled" /></td>
850
				<td class="nowrap"><?=gettext("pass (disabled)");?></td>
851 56dda8e0 Renato Botelho
				<td>&nbsp;</td>
852 c739be2c Colin Fleming
				<td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_match_d.gif" width="11" height="11" alt="match disabled" /></td>
853
				<td class="nowrap"><?=gettext("match (disabled)");?></td>
854
				<td>&nbsp;</td>
855 f4245bbc Colin Fleming
				<td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block_d.gif" width="11" height="11" alt="block disabled" /></td>
856
				<td class="nowrap"><?=gettext("block (disabled)");?></td>
857 56dda8e0 Renato Botelho
				<td>&nbsp;</td>
858 f4245bbc Colin Fleming
				<td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_reject_d.gif" width="11" height="11" alt="reject disabled" /></td>
859
				<td class="nowrap"><?=gettext("reject (disabled)");?></td>
860 56dda8e0 Renato Botelho
				<td>&nbsp;</td>
861 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>
862
				<td class="nowrap"><?=gettext("log (disabled)");?></td>
863 56dda8e0 Renato Botelho
			</tr>
864
			<tr>
865
				<td colspan="10">
866 44605bc8 Colin Fleming
					<p>&nbsp;</p>
867 56dda8e0 Renato Botelho
					<strong>
868
						<span class="red"><?=gettext("Hint:");?></span>
869 8cd558b6 ayvis
					</strong><br />
870 56dda8e0 Renato Botelho
					<ul>
871
					<?php if ("FloatingRules" != $if): ?>
872
						<li><?=gettext("Rules are evaluated on a first-match basis (i.e. " .
873
						"the action of the first rule to match a packet will be executed). " .
874
						"This means that if you use block rules, you'll have to pay attention " .
875
						"to the rule order. Everything that isn't explicitly passed is blocked " .
876
						"by default. ");?>
877
						</li>
878
					<?php else: ?>
879
						<li><?=gettext("Floating rules are evaluated on a first-match basis (i.e. " .
880
						"the action of the first rule to match a packet will be executed) only " .
881
						"if the 'quick' option is checked on a rule. Otherwise they will only apply if no " .
882
						"other rules match. Pay close attention to the rule order and options " .
883
						"chosen. If no rule here matches, the per-interface or default rules are used. ");?>
884
						</li>
885
					<?php endif; ?>
886
					</ul>
887
				 </td>
888
			</tr>
889
		</table>
890
		</div>
891
	</td>
892
	</tr>
893 d732f186 Bill Marquette
</table>
894 f4245bbc Colin Fleming
<input type="hidden" name="if" value="<?=htmlspecialchars($if);?>" />
895 56dda8e0 Renato Botelho
<script type="text/javascript">
896 f4245bbc Colin Fleming
//<![CDATA[
897 7abaeb1f Scott Ullrich
	var number_of_rules = <?=$nrules?>;
898 56dda8e0 Renato Botelho
	<?php $nrules = 0; for ($i = 0; isset($a_filter[$i]); $i++): ?>
899
	/*
900
		Sortable.create("dragtable", {
901
			tag:"tr",
902
			format:"fr([0-9999999])",
903
			containment:["dragtable"],
904
			onChange:function(affected) {
905
				document.body.style.cursor = 'move';
906
			},
907
			onUpdate:function(container) {
908
				document.body.style.cursor = 'move';
909
				updateOrder(Sortable.serialize('dragtable', 'tr'));
910
			}
911
		});
912
	*/
913
	<?php endfor; ?>
914 32c58070 Scott Ullrich
	function updateOrder(order) {
915 12c54789 Scott Ullrich
		if(document.getElementById("redboxtable"))
916 df39dd8a Vinicius Coque
			jQuery('#redboxtable').hide();
917
		jQuery('#loading').show();
918 32c58070 Scott Ullrich
		document.body.style.cursor = 'wait';
919 dd5bf424 Scott Ullrich
		document.location = 'firewall_rules.php?if=<?=htmlspecialchars($if);?>&dragdroporder=true&' + Sortable.serialize('dragtable', 'tr');
920 32c58070 Scott Ullrich
		return;
921
	}
922 df39dd8a Vinicius Coque
	jQuery('#loading').hide();
923 f4245bbc Colin Fleming
//]]>
924 56dda8e0 Renato Botelho
</script>
925 07bd3f83 Scott Ullrich
</form>
926 5b237745 Scott Ullrich
<?php include("fend.inc"); ?>
927 af4aa061 Scott Ullrich
</body>
928
</html>