summaryrefslogtreecommitdiffstats
path: root/usr/local/www/firewall_aliases_edit.php
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2004-11-21 02:16:09 +0000
committerScott Ullrich <sullrich@pfsense.org>2004-11-21 02:16:09 +0000
commitd2cfb7a4f7f11653b2372ebec416c5482b32afd4 (patch)
tree6429b859b3769bf5d9176cc24099427279f8aec3 /usr/local/www/firewall_aliases_edit.php
parentc55b323d6100c3ca8ef32c7b857d12e5bca2dd80 (diff)
downloadpfsense-d2cfb7a4f7f11653b2372ebec416c5482b32afd4.zip
pfsense-d2cfb7a4f7f11653b2372ebec416c5482b32afd4.tar.gz
Add the ability to define networks, ports and or hosts as aliases. Allow the alias to point to more than ONE item ;)
Diffstat (limited to 'usr/local/www/firewall_aliases_edit.php')
-rwxr-xr-xusr/local/www/firewall_aliases_edit.php197
1 files changed, 153 insertions, 44 deletions
diff --git a/usr/local/www/firewall_aliases_edit.php b/usr/local/www/firewall_aliases_edit.php
index 8955197..4219d37 100755
--- a/usr/local/www/firewall_aliases_edit.php
+++ b/usr/local/www/firewall_aliases_edit.php
@@ -1,22 +1,22 @@
#!/usr/local/bin/php
-<?php
+<?php
/*
firewall_aliases_edit.php
part of m0n0wall (http://m0n0.ch/wall)
-
+
Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
All rights reserved.
-
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
-
+
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
-
+
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
-
+
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
@@ -43,7 +43,7 @@ if (isset($_POST['id']))
if (isset($id) && $a_aliases[$id]) {
$pconfig['name'] = $a_aliases[$id]['name'];
- list($pconfig['address'],$pconfig['address_subnet']) =
+ list($pconfig['address'],$pconfig['address_subnet']) =
explode('/', $a_aliases[$id]['address']);
if ($pconfig['address_subnet'])
$pconfig['type'] = "network";
@@ -60,14 +60,14 @@ if ($_POST) {
/* input validation */
$reqdfields = explode(" ", "name address");
$reqdfieldsn = explode(",", "Name,Address");
-
+
if ($_POST['type'] == "network") {
$reqdfields[] = "address_subnet";
$reqdfieldsn[] = "Subnet bit count";
}
-
+
do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
-
+
if (($_POST['name'] && !is_validaliasname($_POST['name']))) {
$input_errors[] = "The alias name may only consist of the characters a-z, A-Z, 0-9.";
}
@@ -77,7 +77,7 @@ if ($_POST) {
if (($_POST['address_subnet'] && !is_numeric($_POST['address_subnet']))) {
$input_errors[] = "A valid subnet bit count must be specified.";
}
-
+
/* check for name conflicts */
foreach ($a_aliases as $alias) {
if (isset($id) && ($a_aliases[$id]) && ($a_aliases[$id] === $alias))
@@ -94,19 +94,36 @@ if ($_POST) {
$alias['name'] = $_POST['name'];
if ($_POST['type'] == "network")
$alias['address'] = $_POST['address'] . "/" . $_POST['address_subnet'];
+
else
$alias['address'] = $_POST['address'];
+
+ $address = $alias['address'];
+ $isfirst = 0;
+ for($x=0; $x<99; $x++) {
+ $comd = "\$subnet = \$_POST['address" . $x . "'];";
+ eval($comd);
+ $comd = "\$subnet_address = \$_POST['address_subnet" . $x . "'];";
+ eval($comd);
+ if($subnet <> "") {
+ $address .= ", ";
+ $address .= $subnet;
+ if($subnet_address <> "") $address .= "/" . $subnet_address;
+ }
+ }
+
+ $alias['address'] = $address;
$alias['descr'] = $_POST['descr'];
if (isset($id) && $a_aliases[$id])
$a_aliases[$id] = $alias;
else
$a_aliases[] = $alias;
-
+
touch($d_aliasesdirty_path);
-
+
write_config();
-
+
header("Location: firewall_aliases.php");
exit;
}
@@ -123,63 +140,150 @@ if ($_POST) {
function typesel_change() {
switch (document.iform.type.selectedIndex) {
case 0: /* host */
+ var cmd;
document.iform.address_subnet.disabled = 1;
document.iform.address_subnet.value = "";
+ newrows = totalrows+1;
+ for(i=2; i<newrows; i++) {
+ comd = 'document.iform.address_subnet' + i + '.disabled = 1;';
+ eval(comd);
+ comd = 'document.iform.address_subnet' + i + '.value = "";';
+ eval(comd);
+ }
break;
case 1: /* network */
+ var cmd;
document.iform.address_subnet.disabled = 0;
+ newrows = totalrows+1;
+ for(i=2; i<newrows; i++) {
+ comd = 'document.iform.address_subnet' + i + '.disabled = 0;';
+ eval(comd);
+ comd = 'document.iform.address_subnet' + i + '.value = "32";';
+ eval(comd);
+ }
break;
+
}
}
-//-->
+
+function update_box_type() {
+ var indexNum = document.forms[0].type.selectedIndex;
+ var selected = document.forms[0].type.options[indexNum].text;
+ if(selected == 'Network(s)') {
+ document.getElementById ("addressnetworkport").firstChild.data = "Network(s)";
+ document.getElementById ("address_subnet").visible = true;
+ } else if(selected == 'Hosts(s)') {
+ ument.getElementById ("addressnetworkport").firstChild.data = "Host(s)";
+ document.getElementById ("address_subnet").visible = false;
+ } else if(selected == 'Port(s)') {
+
+ document.getElementById ("addressnetworkport").firstChild.data = "Port(s)";
+ document.getElementById ("address_subnet").visible = false;
+ }
+}
+
+-->
</script>
</head>
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
<?php include("fbegin.inc"); ?>
+
+<script type="text/javascript" language="javascript" src="row_helper.js">
+</script>
+
+<input type='hidden' name='address_type' value='textbox'></input>
+<input type='hidden' name='address_subnet_type' value='select'></input>
+
+<script type="text/javascript" language='javascript'>
+<!--
+
+rowname[0] = "address";
+rowtype[0] = "textbox";
+
+rowname[1] = "address_subnet";
+rowtype[1] = "select";
+
+rowname[2] = "address_subnet";
+rowtype[2] = "select";
+-->
+</script>
+
<p class="pgtitle">Firewall: Aliases: Edit alias</p>
<?php if ($input_errors) print_input_errors($input_errors); ?>
<form action="firewall_aliases_edit.php" method="post" name="iform" id="iform">
<table width="100%" border="0" cellpadding="6" cellspacing="0">
- <tr>
+ <tr>
<td valign="top" class="vncellreq">Name</td>
- <td class="vtable"> <input name="name" type="text" class="formfld" id="name" size="40" value="<?=htmlspecialchars($pconfig['name']);?>">
- <br> <span class="vexpl">The name of the alias may only consist
+ <td class="vtable"> <input name="name" type="text" class="formfld" id="name" size="40" value="<?=htmlspecialchars($pconfig['name']);?>">
+ <br> <span class="vexpl">The name of the alias may only consist
of the characters a-z, A-Z and 0-9.</span></td>
</tr>
- <tr>
+ <tr>
+ <td width="22%" valign="top" class="vncell">Description</td>
+ <td width="78%" class="vtable"> <input name="descr" type="text" class="formfld" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>">
+ <br> <span class="vexpl">You may enter a description here
+ for your reference (not parsed).</span></td>
+ </tr>
+ <tr>
<td valign="top" class="vncellreq">Type</td>
- <td class="vtable">
- <select name="type" class="formfld" id="type" onChange="typesel_change()">
- <option value="host" <?php if ($pconfig['type'] == "host") echo "selected"; ?>>Host</option>
- <option value="network" <?php if ($pconfig['type'] == "network") echo "selected"; ?>>Network</option>
+ <td class="vtable">
+ <select name="type" class="formfld" id="type" onChange="update_box_type(); typesel_change();">
+ <option value="host" <?php if ($pconfig['type'] == "host") echo "selected"; ?>>Host(s)</option>
+ <option value="network" <?php if ($pconfig['type'] == "network") echo "selected"; ?>>Network(s)</option>
+ <option value="port" <?php if ($pconfig['type'] == "port") echo "selected"; ?>>Port(s)</option>
</select>
</td>
</tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq">Address</td>
- <td width="78%" class="vtable"> <input name="address" type="text" class="formfld" id="address" size="20" value="<?=htmlspecialchars($pconfig['address']);?>">
- /
- <select name="address_subnet" class="formfld" id="address_subnet">
- <?php for ($i = 32; $i >= 1; $i--): ?>
- <option value="<?=$i;?>" <?php if ($i == $pconfig['address_subnet']) echo "selected"; ?>>
- <?=$i;?>
- </option>
- <?php endfor; ?>
- </select> <br> <span class="vexpl">The address that this alias
- represents.</span></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell">Description</td>
- <td width="78%" class="vtable"> <input name="descr" type="text" class="formfld" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>">
- <br> <span class="vexpl">You may enter a description here
- for your reference (not parsed).</span></td>
+ <tr>
+ <td width="22%" valign="top" class="vncellreq"><div id="addressnetworkport" name="addressnetworkport">Host(s)</div></td>
+ <td width="78%" class="vtable">
+
+
+ <table name="maintable" id="maintable">
+ <tbody>
+
+ <?php
+ $counter = 0;
+ $address = $a_aliases[$id]['address'];
+ $item = explode(", ", $address);
+ foreach($item as $ww) {
+ $address = $item[$counter];
+ $address_subnet = "";
+ $item2 = explode("/", $address);
+ foreach($item2 as $current) {
+ if($item2[1] <> "") {
+ $address = $item2[0];
+ $address_subnet = $item2[1];
+ }
+ }
+ if($counter > 0) $tracker = $counter + 1;
+ ?>
+ <tr><td> <input name="address<?php echo $tracker; ?>" type="text" class="formfld" id="address<?php echo $tracker; ?>" size="20" value="<?=htmlspecialchars($address);?>"></td><td>
+ <select name="address_subnet<?php echo $tracker; ?>" class="formfld" id="address_subnet<?php echo $tracker; ?>">
+ <option></option>
+ <?php for ($i = 32; $i >= 1; $i--): ?>
+ <option value="<?=$i;?>" <?php if ($i == $address_subnet) echo "selected"; ?>><?=$i;?></option>
+ <?php endfor; ?>
+ </select>
+ <?php
+ if($counter > 0)
+ echo "<input type=\"button\" onclick=\"removeRow(this); typesel_change();\" value=\"Delete\">";
+ ?>
+
+ </td></tr>
+ <?php $counter++; } ?>
+
+ </tbody>
+ </table>
+ <input type="button" onclick="addRowTo('maintable'); typesel_change();" value="Add">
+ </td>
</tr>
- <tr>
+ <tr>
<td width="22%" valign="top">&nbsp;</td>
- <td width="78%"> <input name="Submit" type="submit" class="formbtn" value="Save">
+ <td width="78%"> <input name="Submit" type="submit" class="formbtn" value="Save">
<?php if (isset($id) && $a_aliases[$id]): ?>
- <input name="id" type="hidden" value="<?=$id;?>">
+ <input name="id" type="hidden" value="<?=$id;?>">
<?php endif; ?>
</td>
</tr>
@@ -187,7 +291,12 @@ function typesel_change() {
</form>
<script language="JavaScript">
<!--
+field_counter_js = 2;
+rows = 1;
+totalrows = <?php echo $counter; ?>;
+loaded = <?php echo $counter; ?>;
typesel_change();
+
//-->
</script>
<?php include("fend.inc"); ?>
OpenPOWER on IntegriCloud