Project

General

Profile

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