Project

General

Profile

Download (38.9 KB) Statistics
| Branch: | Tag: | Revision:
1 b2ffe419 Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/*
4 37e2071c Scott Ullrich
	firewall_rules.php
5 e4cabb75 Scott Ullrich
	part of pfSense (http://www.pfsense.com)
6
        Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com)
7 b2ffe419 Scott Ullrich
8 e4cabb75 Scott Ullrich
	originally part of m0n0wall (http://m0n0.ch/wall)
9
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
10 37e2071c Scott Ullrich
	All rights reserved.
11 b2ffe419 Scott Ullrich
12 37e2071c Scott Ullrich
	Redistribution and use in source and binary forms, with or without
13
	modification, are permitted provided that the following conditions are met:
14 b2ffe419 Scott Ullrich
15 37e2071c Scott Ullrich
	1. Redistributions of source code must retain the above copyright notice,
16
	   this list of conditions and the following disclaimer.
17 b2ffe419 Scott Ullrich
18 37e2071c Scott Ullrich
	2. Redistributions in binary form must reproduce the above copyright
19
	   notice, this list of conditions and the following disclaimer in the
20
	   documentation and/or other materials provided with the distribution.
21 b2ffe419 Scott Ullrich
22 37e2071c Scott Ullrich
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
23
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
26
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
	POSSIBILITY OF SUCH DAMAGE.
32 5b237745 Scott Ullrich
*/
33 7ac5a4cb Scott Ullrich
/*
34
	pfSense_MODULE:	filter
35
*/
36 5b237745 Scott Ullrich
37 6b07c15a Matthew Grooms
##|+PRIV
38
##|*IDENT=page-firewall-rules
39
##|*NAME=Firewall: Rules page
40
##|*DESCR=Allow access to the 'Firewall: Rules' page.
41
##|*MATCH=firewall_rules.php*
42
##|-PRIV
43
44 3cceb5d5 jim-p
$statusurl = "status_filter_reload.php";
45
$logurl = "diag_logs_filter.php";
46
47 5b237745 Scott Ullrich
require("guiconfig.inc");
48 7a927e67 Scott Ullrich
require_once("functions.inc");
49
require_once("filter.inc");
50
require_once("shaper.inc");
51 5b237745 Scott Ullrich
52 7a808e01 Carlos Eduardo Ramos
$pgtitle = array(gettext("Firewall"),gettext("Rules"));
53
54 00c82782 Renato Botelho
function delete_nat_association($id) {
55
	global $config;
56
57
	if (!$id || !is_array($config['nat']['rule']))
58 673d29c0 Renato Botelho
		return;
59
60 00c82782 Renato Botelho
	$a_nat = &$config['nat']['rule'];
61
62
	foreach ($a_nat as &$natent)
63
		if ($natent['associated-rule-id'] == $id)
64
			$natent['associated-rule-id'] = '';
65 673d29c0 Renato Botelho
}
66
67 5b237745 Scott Ullrich
if (!is_array($config['filter']['rule'])) {
68
	$config['filter']['rule'] = array();
69
}
70
filter_rules_sort();
71
$a_filter = &$config['filter']['rule'];
72
73 07bd3f83 Scott Ullrich
$if = $_GET['if'];
74
if ($_POST['if'])
75
	$if = $_POST['if'];
76 b2ffe419 Scott Ullrich
77 cbe3ea96 Ermal Luçi
$ifdescs = get_configured_interface_with_descr();
78 07bd3f83 Scott Ullrich
79 32c58070 Scott Ullrich
// Drag and drop reordering
80
if($_REQUEST['dragdroporder']) {
81
	// First create a new ruleset array and tmp arrays
82 cb53651f Erik Fonnesbeck
	$a_filter_before = array();
83 32c58070 Scott Ullrich
	$a_filter_order = array();
84
	$a_filter_order_tmp = array();
85 cb53651f Erik Fonnesbeck
	$a_filter_after = array();
86
	$found = false;
87 32c58070 Scott Ullrich
	$drag_order = $_REQUEST['dragtable'];
88
	// Next traverse through rules building a new order for interface
89
	for ($i = 0; isset($a_filter[$i]); $i++) {
90 cb53651f Erik Fonnesbeck
		if(( $_REQUEST['if'] == "FloatingRules" && isset($a_filter[$i]['floating']) ) || ( $a_filter[$i]['interface'] == $_REQUEST['if'] && !isset($a_filter[$i]['floating']) )) {
91
			$a_filter_order_tmp[] = $a_filter[$i];
92
			$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 92125c97 Ermal Luçi
if (!$if || !isset($iflist[$if])) {
181
	if ("any" == $if)
182 15160475 Ermal Luçi
                $if = "FloatingRules";
183 92125c97 Ermal Luçi
        else if ("FloatingRules" != $if)
184
                $if = "wan";
185
}
186 07bd3f83 Scott Ullrich
187 5b237745 Scott Ullrich
if ($_POST) {
188
189
	$pconfig = $_POST;
190
191
	if ($_POST['apply']) {
192 37e2071c Scott Ullrich
		$retval = 0;
193 9a7e416c Scott Ullrich
		$retval = filter_configure();
194
195 a368a026 Ermal Lu?i
		clear_subsystem_dirty('filter');
196 a985eac2 Scott Ullrich
197 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>");
198 5b237745 Scott Ullrich
	}
199
}
200
201 d97c50cd Bill Marquette
if ($_GET['act'] == "del") {
202 673d29c0 Renato Botelho
	if ($a_filter[$_GET['id']]) {
203
		if (!empty($a_filter[$_GET['id']]['associated-rule-id'])) {
204 00c82782 Renato Botelho
			delete_nat_association($a_filter[$_GET['id']]['associated-rule-id']);
205 673d29c0 Renato Botelho
		}
206
		unset($a_filter[$_GET['id']]);
207
		write_config();
208 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
209 673d29c0 Renato Botelho
		header("Location: firewall_rules.php?if={$if}");
210
		exit;
211
	}
212 d97c50cd Bill Marquette
}
213
214 32c58070 Scott Ullrich
// Handle save msg if defined
215
if($_REQUEST['savemsg']) 
216
	$savemsg = htmlentities($_REQUEST['savemsg']);
217
218 07bd3f83 Scott Ullrich
if (isset($_POST['del_x'])) {
219
	/* delete selected rules */
220
	if (is_array($_POST['rule']) && count($_POST['rule'])) {
221
		foreach ($_POST['rule'] as $rulei) {
222 00c82782 Renato Botelho
			delete_nat_association($a_filter[$rulei]['associated-rule-id']);
223 07bd3f83 Scott Ullrich
			unset($a_filter[$rulei]);
224
		}
225 5b237745 Scott Ullrich
		write_config();
226 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
227 07bd3f83 Scott Ullrich
		header("Location: firewall_rules.php?if={$if}");
228 5b237745 Scott Ullrich
		exit;
229
	}
230 07bd3f83 Scott Ullrich
} else if ($_GET['act'] == "toggle") {
231
	if ($a_filter[$_GET['id']]) {
232 f53b85a3 Scott Ullrich
                if(isset($a_filter[$_GET['id']]['disabled']))
233 734edbdf Bill Marquette
                        unset($a_filter[$_GET['id']]['disabled']);
234
                else
235
                        $a_filter[$_GET['id']]['disabled'] = true;
236 5b237745 Scott Ullrich
		write_config();
237 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
238 07bd3f83 Scott Ullrich
		header("Location: firewall_rules.php?if={$if}");
239 5b237745 Scott Ullrich
		exit;
240
	}
241 07bd3f83 Scott Ullrich
} else {
242 b2ffe419 Scott Ullrich
	/* yuck - IE won't send value attributes for image buttons, while Mozilla does -
243 37e2071c Scott Ullrich
	   so we use .x/.y to fine move button clicks instead... */
244 07bd3f83 Scott Ullrich
	unset($movebtn);
245
	foreach ($_POST as $pn => $pd) {
246
		if (preg_match("/move_(\d+)_x/", $pn, $matches)) {
247
			$movebtn = $matches[1];
248
			break;
249
		}
250 5b237745 Scott Ullrich
	}
251 07bd3f83 Scott Ullrich
	/* move selected rules before this rule */
252
	if (isset($movebtn) && is_array($_POST['rule']) && count($_POST['rule'])) {
253
		$a_filter_new = array();
254 b2ffe419 Scott Ullrich
255 07bd3f83 Scott Ullrich
		/* copy all rules < $movebtn and not selected */
256
		for ($i = 0; $i < $movebtn; $i++) {
257
			if (!in_array($i, $_POST['rule']))
258
				$a_filter_new[] = $a_filter[$i];
259
		}
260 b2ffe419 Scott Ullrich
261 07bd3f83 Scott Ullrich
		/* copy all selected rules */
262
		for ($i = 0; $i < count($a_filter); $i++) {
263
			if ($i == $movebtn)
264
				continue;
265
			if (in_array($i, $_POST['rule']))
266
				$a_filter_new[] = $a_filter[$i];
267
		}
268 b2ffe419 Scott Ullrich
269 07bd3f83 Scott Ullrich
		/* copy $movebtn rule */
270
		if ($movebtn < count($a_filter))
271
			$a_filter_new[] = $a_filter[$movebtn];
272 b2ffe419 Scott Ullrich
273 07bd3f83 Scott Ullrich
		/* copy all rules > $movebtn and not selected */
274
		for ($i = $movebtn+1; $i < count($a_filter); $i++) {
275
			if (!in_array($i, $_POST['rule']))
276
				$a_filter_new[] = $a_filter[$i];
277
		}
278 b2ffe419 Scott Ullrich
279 07bd3f83 Scott Ullrich
		$a_filter = $a_filter_new;
280 5b237745 Scott Ullrich
		write_config();
281 a368a026 Ermal Lu?i
		mark_subsystem_dirty('filter');
282 07bd3f83 Scott Ullrich
		header("Location: firewall_rules.php?if={$if}");
283 5b237745 Scott Ullrich
		exit;
284
	}
285
}
286 3a54b6ca Scott Dale
$closehead = false;
287 5b237745 Scott Ullrich
288 9a25487b Scott Ullrich
include("head.inc");
289
290 3a54b6ca Scott Dale
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/domLib.js\"></script>";
291
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/domTT.js\"></script>";
292
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/behaviour.js\"></script>";
293
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/fadomatic.js\"></script>";
294 5b237745 Scott Ullrich
?>
295 3a54b6ca Scott Dale
</head>
296
297 5b237745 Scott Ullrich
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
298
<?php include("fbegin.inc"); ?>
299
<form action="firewall_rules.php" method="post">
300 6dc83d52 Scott Ullrich
301 625dcc40 Bill Marquette
<script type="text/javascript" language="javascript" src="/javascript/row_toggle.js">
302 fa65a62b Scott Ullrich
</script>
303 5b237745 Scott Ullrich
<?php if ($savemsg) print_info_box($savemsg); ?>
304 a368a026 Ermal Lu?i
<?php if (is_subsystem_dirty('filter')): ?><p>
305 619f2dbd Scott Ullrich
<?php
306
if($_REQUEST['undodrag']) {
307
	foreach($_REQUEST['dragtable'] as $dt) 
308
		$dragtable .= "&dragtable[]={$dt}";
309 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}");
310 619f2dbd Scott Ullrich
} else {
311 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."));
312 619f2dbd Scott Ullrich
}
313
?>
314
<br>
315 5b237745 Scott Ullrich
<?php endif; ?>
316 df222163 Scott Ullrich
<div id="loading" style="visibity:hidden">
317 6dc83d52 Scott Ullrich
	<img src="/themes/<?=$g['theme']?>/images/misc/loader.gif"> Loading, please wait...
318
	<p/>&nbsp;
319
</div>
320 07bd3f83 Scott Ullrich
<table width="100%" border="0" cellpadding="0" cellspacing="0">
321 37e2071c Scott Ullrich
  <tr><td class="tabnavtbl">
322 0366b748 Scott Ullrich
  <?php
323
	/* active tabs */
324
	$tab_array = array();
325 92125c97 Ermal Luçi
       if ("FloatingRules" == $if)
326
                        $active = true;
327
                else
328
                        $active = false;
329 38f90dc8 Rafael Lucas
        $tab_array[] = array(gettext("Floating"), $active, "firewall_rules.php?if=FloatingRules");
330 0366b748 Scott Ullrich
	$tabscounter = 0; $i = 0; foreach ($iflist as $ifent => $ifname) {
331
		if ($ifent == $if)
332
			$active = true;
333
		else
334
			$active = false;
335
		$tab_array[] = array($ifname, $active, "firewall_rules.php?if={$ifent}");
336
	}
337
	display_top_tabs($tab_array);
338
  ?>
339 07bd3f83 Scott Ullrich
  </td></tr>
340 b2ffe419 Scott Ullrich
  <tr>
341 d732f186 Bill Marquette
    <td>
342
	<div id="mainarea">
343
              <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
344 fa65a62b Scott Ullrich
                <tr id="frheader">
345 37e2071c Scott Ullrich
                  <td width="3%" class="list">&nbsp;</td>
346 5b237745 Scott Ullrich
                  <td width="5%" class="list">&nbsp;</td>
347 38f90dc8 Rafael Lucas
                  <td width="3%" class="listhdrr"><?=gettext("ID");?></td>
348
                  <td width="6%" class="listhdrr"><?=gettext("Proto");?></td>
349
                  <td width="12%" class="listhdrr"><?=gettext("Source");?></td>
350
                  <td width="6%" class="listhdrr"><?=gettext("Port");?></td>
351
                  <td width="12%" class="listhdrr"><?=gettext("Destination");?></td>
352
                  <td width="6%" class="listhdrr"><?=gettext("Port");?></td>
353
		  <td width="5%" class="listhdrr"><?=gettext("Gateway");?></td>
354
		  <td width="8%" class="listhdrr"><?=gettext("Queue");?></td>
355
		  <td width="5%" class="listhdrr"><?=gettext("Schedule");?></td>
356
                  <td width="19%" class="listhdr"><?=gettext("Description");?></td>
357 d415d821 Seth Mos
                  <td width="10%" class="list">
358
			<table border="0" cellspacing="0" cellpadding="1">
359
			   <tr>
360
				<?php
361
					$nrules = 0;
362
					for ($i = 0; isset($a_filter[$i]); $i++) {
363
						$filterent = $a_filter[$i];
364 92125c97 Ermal Luçi
						if ($filterent['interface'] != $if && !isset($filterent['floating']))
365 f1c49ff4 Scott Ullrich
							continue;
366
						if (isset($filterent['floating']) && "FloatingRules" != $if)
367 d415d821 Seth Mos
							continue;
368
						$nrules++;
369
					}
370
				?>
371
				<td>
372
				<?php if ($nrules == 0): ?>
373 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: ?>
374 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; ?>
375 d415d821 Seth Mos
				</td>
376 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>
377 d415d821 Seth Mos
			   </tr>
378
			</table>
379
		  </td>
380
		</tr>
381 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.
382
	if (!isset($config['system']['webgui']['noantilockout']) &&
383
		(((count($config['interfaces']) > 1) && ($if == 'lan'))
384 9c37f8cd jim-p
		|| ((count($config['interfaces']) == 1) && ($if == 'wan')))):
385
386
		$guiport = "80";
387
		if (isset($config['system']['webgui']['port']) && $config['system']['webgui']['port'] <> "")
388
			$guiport = "{$config['system']['webgui']['port']}";
389
		if ($config['system']['webgui']['protocol'] == "https")
390
			$guiport .= "<br/>443";
391
392
		$sshport = "";
393
		if (isset($config['system']['enablesshd'])) {
394
			$sshport = 22;
395
		if($config['system']['ssh']['port'] <> "")
396
			$sshport = $config['system']['ssh']['port'];
397
		}
398
		$sshport = "22<br/>";
399
?>
400 03976254 jim-p
		<tr valign="top" id="antilockout">
401
			<td class="list">&nbsp;</td>
402
			<td class="listt" align="center"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass.gif" width="11" height="11" border="0"></td>
403
			<td class="listlr" style="background-color: #E0E0E0"></td>
404
			<td class="listr" style="background-color: #E0E0E0">*</td>
405
			<td class="listr" style="background-color: #E0E0E0">*</td>
406
			<td class="listr" style="background-color: #E0E0E0">*</td>
407
			<td class="listr" style="background-color: #E0E0E0"><?=$iflist[$if];?> Address</td>
408 9c37f8cd jim-p
			<td class="listr" style="background-color: #E0E0E0"><?= $sshport . $guiport ?></td>
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="listbg"><?=gettext("Anti-Lockout Rule");?></td>
413
			<td valign="middle" nowrap class="list">
414
			<table border="0" cellspacing="0" cellpadding="1">
415
				<tr>
416
					<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>
417
					<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>
418
				</tr>
419
				<tr>
420
					<td align="center" valign="middle"></td>
421
					<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>
422
				</tr>
423
				</table>
424
			</td>
425
			</tr>
426
<?php endif; ?>
427
428 f1f60c92 Ermal Luçi
<?php if (isset($config['interfaces'][$if]['blockpriv'])): ?>
429 d9eeccbd Scott Ullrich
                <tr valign="top" id="frrfc1918">
430 664742f7 Renato Botelho
                  <td class="list">&nbsp;</td>
431 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>
432 56a10568 Scott Ullrich
                  <td class="listlr" style="background-color: #E0E0E0"></td>
433
                  <td class="listr" style="background-color: #E0E0E0">*</td>
434
                  <td class="listr" style="background-color: #E0E0E0"><?=gettext("RFC 1918 networks");?></td>
435
                  <td class="listr" style="background-color: #E0E0E0">*</td>
436
                  <td class="listr" style="background-color: #E0E0E0">*</td>
437
                  <td class="listr" style="background-color: #E0E0E0">*</td>
438
                  <td class="listr" style="background-color: #E0E0E0">*</td>
439
		<td class="listr" style="background-color: #E0E0E0">*</td>
440
	 		 <td class="listr" style="background-color: #E0E0E0"></td>
441 38f90dc8 Rafael Lucas
                  <td class="listbg"><?=gettext("Block private networks");?></td>
442 d9eeccbd Scott Ullrich
                  <td valign="middle" nowrap class="list">
443
				    <table border="0" cellspacing="0" cellpadding="1">
444
					<tr>
445 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>
446 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>
447 d9eeccbd Scott Ullrich
					</tr>
448
					<tr>
449
					  <td align="center" valign="middle"></td>
450 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>
451 d9eeccbd Scott Ullrich
					</tr>
452
					</table>
453
				  </td>
454
				</tr>
455 c20c0f5a Scott Ullrich
<?php endif; ?>
456 f1f60c92 Ermal Luçi
<?php if (isset($config['interfaces'][$if]['blockbogons'])): ?>
457 c20c0f5a Scott Ullrich
                <tr valign="top" id="frrfc1918">
458 664742f7 Renato Botelho
                  <td class="list">&nbsp;</td>
459 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>
460 56a10568 Scott Ullrich
                  <td class="listlr" style="background-color: #E0E0E0"></td>
461
                  <td class="listr" style="background-color: #E0E0E0">*</td>
462
                  <td class="listr" style="background-color: #E0E0E0"><?=gettext("Reserved/not assigned by IANA");?></td>
463
                  <td class="listr" style="background-color: #E0E0E0">*</td>
464
                  <td class="listr" style="background-color: #E0E0E0">*</td>
465
                  <td class="listr" style="background-color: #E0E0E0">*</td>
466
				  <td class="listr" style="background-color: #E0E0E0">*</td>
467
				   <td class="listr" style="background-color: #E0E0E0">*</td>
468
		  <td class="listr" style="background-color: #E0E0E0">*</td>
469 38f90dc8 Rafael Lucas
                  <td class="listbg"><?=gettext("Block bogon networks");?></td>
470 c20c0f5a Scott Ullrich
                  <td valign="middle" nowrap class="list">
471
				    <table border="0" cellspacing="0" cellpadding="1">
472
					<tr>
473 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>
474 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>
475 c20c0f5a Scott Ullrich
					</tr>
476
					<tr>
477
					  <td align="center" valign="middle"></td>
478 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>
479 c20c0f5a Scott Ullrich
					</tr>
480
					</table>
481
				  </td>
482
				</tr>
483
<?php endif; ?>
484 32c58070 Scott Ullrich
				<tbody id="dragtable" width="100%">
485 07bd3f83 Scott Ullrich
				<?php $nrules = 0; for ($i = 0; isset($a_filter[$i]); $i++):
486
					$filterent = $a_filter[$i];
487 92125c97 Ermal Luçi
					if ($filterent['interface'] != $if && !isset($filterent['floating']))
488 f1c49ff4 Scott Ullrich
						continue;
489
					if (isset($filterent['floating']) && "FloatingRules" != $if)
490
						continue;
491 8e0c3760 Ermal
					$isadvset = firewall_check_for_advanced_options($filterent);
492 f1c49ff4 Scott Ullrich
					if($isadvset)
493 e36c52f4 Erik Fonnesbeck
						$advanced_set = "<img src=\"./themes/{$g['theme']}/images/icons/icon_advanced.gif\" title=\"" . gettext("advanced settings set") . ": {$isadvset}\" border=\"0\">";
494 f1c49ff4 Scott Ullrich
					else 
495
						$advanced_set = ""
496 07bd3f83 Scott Ullrich
				?>
497 37e2071c Scott Ullrich
                <tr valign="top" id="fr<?=$nrules;?>">
498 f1c49ff4 Scott Ullrich
                  <td class="listt">
499
					<input type="checkbox" id="frc<?=$nrules;?>" name="rule[]" value="<?=$i;?>" onClick="fr_bgcolor('<?=$nrules;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;">
500
					<?php echo $advanced_set; ?>
501
				  </td>
502 37e2071c Scott Ullrich
                  <td class="listt" align="center">
503 5b237745 Scott Ullrich
				  <?php if ($filterent['type'] == "block")
504
				  			$iconfn = "block";
505
						else if ($filterent['type'] == "reject") {
506 e91baab8 Chris Buechler
							$iconfn = "reject";
507 5b237745 Scott Ullrich
						} else
508
							$iconfn = "pass";
509
						if (isset($filterent['disabled'])) {
510
							$textss = "<span class=\"gray\">";
511
							$textse = "</span>";
512
							$iconfn .= "_d";
513
						} else {
514
							$textss = $textse = "";
515
						}
516
				  ?>
517 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>
518 5b237745 Scott Ullrich
				  <?php if (isset($filterent['log'])):
519 6fecc73b Scott Dale
							$iconfnlog = "log_s";
520 5b237745 Scott Ullrich
						if (isset($filterent['disabled']))
521 6fecc73b Scott Dale
							$iconfnlog .= "_d";
522 5b237745 Scott Ullrich
				  	?>
523 6fecc73b Scott Dale
				  <br><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_<?=$iconfnlog;?>.gif" width="11" height="15" border="0">
524 5b237745 Scott Ullrich
				  <?php endif; ?>
525
				  </td>
526 3a54b6ca Scott Dale
				<?php
527 2a9db752 Scott Dale
				
528 2a113ca9 Scott Dale
				//build Alias popup box
529 3a54b6ca Scott Dale
				$span_end = "";
530
				$alias_src_span_begin = "";
531
				$alias_src_port_span_begin = "";
532
				$alias_dst_span_begin = "";
533
				$alias_dst_port_span_begin = "";
534
				
535 2a9db752 Scott Dale
				$alias_popup = rule_popup($filterent['source']['address'],pprint_port($filterent['source']['port']),$filterent['destination']['address'],pprint_port($filterent['destination']['port']));
536
				$span_end = "</U></span>";
537 3a54b6ca Scott Dale
					
538 2a9db752 Scott Dale
				$alias_src_span_begin = $alias_popup["src"];
539
				 									
540
				$alias_src_port_span_begin = $alias_popup["srcport"];
541
													
542
				$alias_dst_span_begin = $alias_popup["dst"];
543
														
544
				$alias_dst_port_span_begin = $alias_popup["dstport"];
545 3a54b6ca Scott Dale
					
546 2a113ca9 Scott Dale
				//build Schedule popup box
547
				$a_schedules = &$config['schedules']['schedule'];
548
				$schedule_span_begin = "";
549
				$schedule_span_end = "";
550 d2aa8cd6 sullrich
				$sched_caption_escaped = "";
551 eace1363 Scott Dale
				$sched_content = "";
552 3b907eb1 Scott Dale
				$schedstatus = false;
553 38f90dc8 Rafael Lucas
				$dayArray = array (gettext('Mon'),gettext('Tues'),gettext('Wed'),gettext('Thur'),gettext('Fri'),gettext('Sat'),gettext('Sun'));
554
				$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'));
555 b6ab9bd2 Ermal
				if($config['schedules']['schedule'] <> "" and is_array($config['schedules']['schedule'])) {
556 8ce97a08 Scott Dale
					foreach ($a_schedules as $schedule)
557
					{
558
						if ($schedule['name'] == $filterent['sched'] ){
559 60120e37 Ermal Lu?i
							$schedstatus = filter_get_time_based_rule_status($schedule);
560 8ce97a08 Scott Dale
							
561
							foreach($schedule['timerange'] as $timerange) {
562
								$tempFriendlyTime = "";
563
								$tempID = "";
564
								$firstprint = false;
565
								if ($timerange){
566
									$dayFriendly = "";
567
									$tempFriendlyTime = "";							
568
										
569
									//get hours
570
									$temptimerange = $timerange['hour'];
571
									$temptimeseparator = strrpos($temptimerange, "-");
572 2a113ca9 Scott Dale
									
573 8ce97a08 Scott Dale
									$starttime = substr ($temptimerange, 0, $temptimeseparator); 
574
									$stoptime = substr ($temptimerange, $temptimeseparator+1); 
575 2a113ca9 Scott Dale
										
576 8ce97a08 Scott Dale
									if ($timerange['month']){
577
										$tempmontharray = explode(",", $timerange['month']);
578
										$tempdayarray = explode(",",$timerange['day']);
579
										$arraycounter = 0;
580
										$firstDayFound = false;
581
										$firstPrint = false;
582
										foreach ($tempmontharray as $monthtmp){
583
											$month = $tempmontharray[$arraycounter];
584
											$day = $tempdayarray[$arraycounter];
585 2a113ca9 Scott Dale
											
586
											if (!$firstDayFound)
587
											{
588 8ce97a08 Scott Dale
												$firstDay = $day;
589
												$firstmonth = $month;
590 2a113ca9 Scott Dale
												$firstDayFound = true;
591
											}
592 8ce97a08 Scott Dale
												
593
											$currentDay = $day;
594
											$nextDay = $tempdayarray[$arraycounter+1];
595
											$currentDay++;
596
											if (($currentDay != $nextDay) || ($tempmontharray[$arraycounter] != $tempmontharray[$arraycounter+1])){
597
												if ($firstPrint)
598 2a113ca9 Scott Dale
													$dayFriendly .= ", ";
599
												$currentDay--;
600
												if ($currentDay != $firstDay)
601 8ce97a08 Scott Dale
													$dayFriendly .= $monthArray[$firstmonth-1] . " " . $firstDay . " - " . $currentDay ;
602 2a113ca9 Scott Dale
												else
603 8ce97a08 Scott Dale
													$dayFriendly .=  $monthArray[$month-1] . " " . $day;
604 2a113ca9 Scott Dale
												$firstDayFound = false;	
605 8ce97a08 Scott Dale
												$firstPrint = true;
606
											}													
607
											$arraycounter++;	
608 2a113ca9 Scott Dale
										}
609
									}
610 8ce97a08 Scott Dale
									else
611
									{
612
										$tempdayFriendly = $timerange['position'];
613
										$firstDayFound = false;
614
										$tempFriendlyDayArray = explode(",", $tempdayFriendly);								
615
										$currentDay = "";
616
										$firstDay = "";
617
										$nextDay = "";
618
										$counter = 0;													
619
										foreach ($tempFriendlyDayArray as $day){
620
											if ($day != ""){
621
												if (!$firstDayFound)
622
												{
623
													$firstDay = $tempFriendlyDayArray[$counter];
624
													$firstDayFound = true;
625
												}
626
												$currentDay =$tempFriendlyDayArray[$counter];
627
												//get next day
628
												$nextDay = $tempFriendlyDayArray[$counter+1];
629
												$currentDay++;					
630
												if ($currentDay != $nextDay){
631
													if ($firstprint)
632
														$dayFriendly .= ", ";
633
													$currentDay--;
634
													if ($currentDay != $firstDay)
635
														$dayFriendly .= $dayArray[$firstDay-1] . " - " . $dayArray[$currentDay-1];
636
													else
637
														$dayFriendly .= $dayArray[$firstDay-1];
638
													$firstDayFound = false;	
639
													$firstprint = true;			
640
												}
641
												$counter++;
642
											}
643
										}
644
									}		
645
									$timeFriendly = $starttime . " - " . $stoptime;
646
									$description = $timerange['rangedescr'];
647
									$sched_content .= $dayFriendly . "; " . $timeFriendly . "<br>";
648
								}
649 2a113ca9 Scott Dale
							}
650 d2aa8cd6 sullrich
							$sched_caption_escaped = str_replace("'", "\'", $schedule['descr']);
651
							$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>";
652 8ce97a08 Scott Dale
							$schedule_span_end = "</U></span>";
653 2a113ca9 Scott Dale
						}
654
					}
655
				}
656 6fecc73b Scott Dale
				$printicon = false;
657 616dd997 Scott Dale
				$alttext = "";
658
				$image = "";
659
				if (!isset($filterent['disabled'])){
660
					 if ($schedstatus) 
661
					 { 
662
					 	if ($iconfn == "block" || $iconfn == "reject")
663
					 	{
664 5b552ac7 Scott Dale
					 		$image = "icon_block";
665 38f90dc8 Rafael Lucas
					 		$alttext = gettext("Traffic matching this rule is currently being denied");
666 616dd997 Scott Dale
					 	}
667
					 	else
668
					 	{
669 5b552ac7 Scott Dale
					 		$image = "icon_pass";
670 38f90dc8 Rafael Lucas
					 		$alttext = gettext("Traffic matching this rule is currently being allowed");
671 616dd997 Scott Dale
					 	}
672
					 	$printicon = true;
673
					  }
674
					  else if ($filterent['sched'])
675
					  { 
676
					 	if ($iconfn == "block" || $iconfn == "reject")
677 5b552ac7 Scott Dale
					 		$image = "icon_block_d";
678 616dd997 Scott Dale
					 	else
679 5b552ac7 Scott Dale
					 		$image = "icon_block";
680 38f90dc8 Rafael Lucas
					 	$alttext = gettext("This rule is not currently active because its period has expired");
681 616dd997 Scott Dale
					 	$printicon = true;				  	
682
					  }
683
				}
684 3a54b6ca Scott Dale
				?>
685 98e29097 Bill Marquette
                  <td class="listlr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
686 b9e28d57 unknown
                    <?=$textss;?><?php if (isset($filterent['id'])) echo $filterent['id']; else echo ""; ?><?=$textse;?>
687
                  </td>
688
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
689 be81b340 Erik Fonnesbeck
                    <?=$textss;?><?php
690
			if (isset($filterent['protocol'])) {
691
				echo strtoupper($filterent['protocol']);
692
				if (strtoupper($filterent['protocol']) == "ICMP" && !empty($filterent['icmptype'])) {
693
					echo ' <span style="cursor: help;" title="ICMP type: ' . $icmptypes[$filterent['icmptype']] . '"><u>';
694
					echo $filterent['icmptype'];
695
					echo '</u></span>';
696
				}
697
			} else echo "*";
698
                    ?><?=$textse;?>
699 5b237745 Scott Ullrich
                  </td>
700 98e29097 Bill Marquette
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
701 3a54b6ca Scott Dale
				    <?=$textss;?><?php echo $alias_src_span_begin;?><?php echo htmlspecialchars(pprint_address($filterent['source']));?><?php echo $alias_src_span_end;?><?=$textse;?>
702 5b237745 Scott Ullrich
                  </td>
703 98e29097 Bill Marquette
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
704 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;?>
705 5b237745 Scott Ullrich
                  </td>
706 98e29097 Bill Marquette
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
707 3a54b6ca Scott Dale
				    <?=$textss;?><?php echo $alias_dst_span_begin;?><?php echo htmlspecialchars(pprint_address($filterent['destination'])); ?><?php echo $alias_dst_span_end;?><?=$textse;?>
708 5b237745 Scott Ullrich
                  </td>
709 3a54b6ca Scott Dale
	              <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
710
                    <?=$textss;?><?php echo $alias_dst_port_span_begin;?><?php echo htmlspecialchars(pprint_port($filterent['destination']['port'])); ?><?php echo $alias_dst_port_span_end;?><?=$textse;?>
711 5b237745 Scott Ullrich
                  </td>
712 b504c2f8 Scott Ullrich
                  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';">
713 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;?>
714 b504c2f8 Scott Ullrich
                  </td>
715 32c58070 Scott Ullrich
				  <td class="listr" onClick="fr_toggle(<?=$nrules;?>)" id="frd<?=$nrules;?>" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';"><?=$textss;?>
716 197bfe96 Ermal Luçi
                          <?php
717
							if (isset($filterent['ackqueue']) && isset($filterent['defaultqueue'])) {
718
								$desc = $filterent['ackqueue'] ;
719
							    echo "<a href=\"firewall_shaper_queues.php?queue={$filterent['ackqueue']}&action=show\">{$desc}</a>";
720
								$desc = $filterent['defaultqueue'];
721
							    echo "/<a href=\"firewall_shaper_queues.php?queue={$filterent['defaultqueue']}&action=show\">{$desc}</a>";
722
							} else if (isset($filterent['defaultqueue'])) {
723
								$desc = $filterent['defaultqueue'];
724
							    echo "<a href=\"firewall_shaper_queues.php?queue={$filterent['defaultqueue']}&action=show\">{$desc}</a>"; }
725 7a808e01 Carlos Eduardo Ramos
							else echo gettext("none");
726 197bfe96 Ermal Luçi
						  ?><?=$textse;?>
727
                        </td>
728 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">
729 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;?>
730 7738faa8 Scott Ullrich
                  </td>
731 c2a6f323 Scott Ullrich
                  <td class="listbg" onClick="fr_toggle(<?=$nrules;?>)" ondblclick="document.location='firewall_rules_edit.php?id=<?=$i;?>';" class="descr">
732 07bd3f83 Scott Ullrich
                    <?=$textss;?><?=htmlspecialchars($filterent['descr']);?>&nbsp;<?=$textse;?>
733 5b237745 Scott Ullrich
                  </td>
734
                  <td valign="middle" nowrap class="list">
735 07bd3f83 Scott Ullrich
				    <table border="0" cellspacing="0" cellpadding="1">
736
					<tr>
737 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>
738
					  <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>
739 07bd3f83 Scott Ullrich
					</tr>
740
					<tr>
741 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>
742 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>
743 07bd3f83 Scott Ullrich
					</tr>
744
					</table>
745 5b237745 Scott Ullrich
				  </td>
746
				</tr>
747 07bd3f83 Scott Ullrich
			  <?php $nrules++; endfor; ?>
748 32c58070 Scott Ullrich
			  </tbody>
749 07bd3f83 Scott Ullrich
			  <?php if ($nrules == 0): ?>
750 37e2071c Scott Ullrich
              <td class="listt"></td>
751 07bd3f83 Scott Ullrich
			  <td class="listt"></td>
752 d5a1008d Scott Ullrich
			  <td class="listlr" colspan="10" align="center" valign="middle">
753 07bd3f83 Scott Ullrich
			  <span class="gray">
754 8b6827a4 Carlos Eduardo Ramos
			  <?=gettext("No rules are currently defined for this interface"); ?><br>
755
			  <?=gettext("All incoming connections on this interface will be blocked until you add pass rules."); ?><br><br>
756 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>
757 07bd3f83 Scott Ullrich
			  </td>
758
			  <?php endif; ?>
759 37e2071c Scott Ullrich
                <tr id="fr<?=$nrules;?>">
760
                  <td class="list"></td>
761
                  <td class="list"></td>
762
                  <td class="list">&nbsp;</td>
763
                  <td class="list">&nbsp;</td>
764
                  <td class="list">&nbsp;</td>
765 b9e28d57 unknown
                  <td class="list">&nbsp;</td>
766 1c7e3ec6 Bill Marquette
		  <td class="list">&nbsp;</td>
767
		  <td class="list">&nbsp;</td>
768
                  <td class="list">&nbsp;</td>
769 37e2071c Scott Ullrich
                  <td class="list">&nbsp;</td>
770
                  <td class="list">&nbsp;</td>
771
                  <td class="list">&nbsp;</td>
772 07bd3f83 Scott Ullrich
                  <td class="list">
773
				    <table border="0" cellspacing="0" cellpadding="1">
774
					<tr>
775
				      <td>
776 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>
777 37e2071c Scott Ullrich
					  <td></td>
778 07bd3f83 Scott Ullrich
				    </tr>
779
					<tr>
780 3086d0f8 Scott Ullrich
					  <td>
781
					  <?php if ($nrules == 0): ?>
782 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: ?>
783 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; ?>
784 3086d0f8 Scott Ullrich
					  </td>
785 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>
786 07bd3f83 Scott Ullrich
					</tr>
787
				    </table>
788
				  </td>
789 5b237745 Scott Ullrich
				</tr>
790
              </table>
791 d732f186 Bill Marquette
	      <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0">
792 b2ffe419 Scott Ullrich
                <tr>
793 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass.gif" width="11" height="11"></td>
794 38f90dc8 Rafael Lucas
                  <td><?=gettext("pass");?></td>
795 5b237745 Scott Ullrich
                  <td width="14"></td>
796 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block.gif" width="11" height="11"></td>
797 38f90dc8 Rafael Lucas
                  <td><?=gettext("block");?></td>
798 5b237745 Scott Ullrich
                  <td width="14"></td>
799 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_reject.gif" width="11" height="11"></td>
800 38f90dc8 Rafael Lucas
                  <td><?=gettext("reject");?></td>
801 5b237745 Scott Ullrich
                  <td width="14"></td>
802 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_log.gif" width="11" height="11"></td>
803 38f90dc8 Rafael Lucas
                  <td><?=gettext("log");?></td>
804 5b237745 Scott Ullrich
                </tr>
805 b2ffe419 Scott Ullrich
                <tr>
806 677c0869 Erik Kristensen
                  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_pass_d.gif" width="11" height="11"></td>
807 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("pass (disabled)");?></td>
808 d732f186 Bill Marquette
                  <td>&nbsp;</td>
809 677c0869 Erik Kristensen
                  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_block_d.gif" width="11" height="11"></td>
810 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("block (disabled)");?></td>
811 d732f186 Bill Marquette
                  <td>&nbsp;</td>
812 677c0869 Erik Kristensen
                  <td><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_reject_d.gif" width="11" height="11"></td>
813 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("reject (disabled)");?></td>
814 d732f186 Bill Marquette
                  <td>&nbsp;</td>
815 677c0869 Erik Kristensen
                  <td width="16"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_log_d.gif" width="11" height="11"></td>
816 38f90dc8 Rafael Lucas
                  <td nowrap><?=gettext("log (disabled)");?></td>
817 5b237745 Scott Ullrich
                </tr>
818 d732f186 Bill Marquette
		<tr>
819 05860c07 Scott Ullrich
		  <td colspan="10">
820 c662cc9d Scott Ullrich
  &nbsp;<p/>
821
  <strong>
822 45a06eeb Renato Botelho
	<span class="red"><?=gettext("Hint:");?></span>
823 c662cc9d Scott Ullrich
  </strong><br>
824
	<ul>
825 74aff49c Renato Botelho
  <li><?=gettext("Rules are evaluated on a first-match basis (i.e. " .
826
  "the action of the first rule to match a packet will be executed). " .
827
  "This means that if you use block rules, you'll have to pay attention " .
828
  "to the rule order. Everything that isn't explicitly passed is blocked " .
829
  "by default. ");?>
830 c662cc9d Scott Ullrich
</li>
831
</ul>
832 d732f186 Bill Marquette
		 </td>
833
	        </tr>
834
              </table>
835
	</div>
836
    </td>
837
  </tr>
838
</table>
839 dd5bf424 Scott Ullrich
  <input type="hidden" name="if" value="<?=htmlspecialchars($if);?>">
840 32c58070 Scott Ullrich
  <script type="text/javascript">
841 7abaeb1f Scott Ullrich
	var number_of_rules = <?=$nrules?>;
842 32c58070 Scott Ullrich
<?php $nrules = 0; for ($i = 0; isset($a_filter[$i]); $i++): ?>
843 7ff41586 Scott Ullrich
/*
844 32c58070 Scott Ullrich
	Sortable.create("dragtable", { 
845
		tag:"tr", 
846
		format:"fr([0-9999999])",
847
		containment:["dragtable"], 
848 7abaeb1f Scott Ullrich
		onChange:function(affected) {
849
			document.body.style.cursor = 'move';
850 32c58070 Scott Ullrich
		},
851 7abaeb1f Scott Ullrich
		onUpdate:function(container) { 
852
			document.body.style.cursor = 'move';
853 32c58070 Scott Ullrich
			updateOrder(Sortable.serialize('dragtable', 'tr'));
854
		} 
855
	});
856 7ff41586 Scott Ullrich
*/
857 32c58070 Scott Ullrich
<?php endfor; ?>
858
	function updateOrder(order) {
859 12c54789 Scott Ullrich
		if(document.getElementById("redboxtable"))
860
			$('redboxtable').hide();
861 6dc83d52 Scott Ullrich
		$('loading').show();
862 32c58070 Scott Ullrich
		document.body.style.cursor = 'wait';
863 dd5bf424 Scott Ullrich
		document.location = 'firewall_rules.php?if=<?=htmlspecialchars($if);?>&dragdroporder=true&' + Sortable.serialize('dragtable', 'tr');
864 32c58070 Scott Ullrich
		return;
865
	}
866 6dc83d52 Scott Ullrich
	$('loading').hide();
867 32c58070 Scott Ullrich
  </script>
868 07bd3f83 Scott Ullrich
</form>
869 5b237745 Scott Ullrich
<?php include("fend.inc"); ?>
870 af4aa061 Scott Ullrich
</body>
871
</html>