diff options
author | Seth Mos <seth.mos@xs4all.nl> | 2008-06-18 08:28:12 +0000 |
---|---|---|
committer | Seth Mos <seth.mos@xs4all.nl> | 2008-06-18 08:28:12 +0000 |
commit | 5ccd98577afcb96bed6b5be7ab816a6f2d3aca61 (patch) | |
tree | 76e73e99e4c36cee9de6c96ff3d9ca82c651b9c2 /usr/local | |
parent | da669e7fb1a0b4d80f0d275fb5f33f6dcc085200 (diff) | |
download | pfsense-5ccd98577afcb96bed6b5be7ab816a6f2d3aca61.zip pfsense-5ccd98577afcb96bed6b5be7ab816a6f2d3aca61.tar.gz |
Add gateway groups edit page.
Diffstat (limited to 'usr/local')
-rwxr-xr-x | usr/local/www/system_gateway_groups.php | 16 | ||||
-rwxr-xr-x | usr/local/www/system_gateway_groups_edit.php | 192 |
2 files changed, 204 insertions, 4 deletions
diff --git a/usr/local/www/system_gateway_groups.php b/usr/local/www/system_gateway_groups.php index 481370d..647bb42 100755 --- a/usr/local/www/system_gateway_groups.php +++ b/usr/local/www/system_gateway_groups.php @@ -35,6 +35,7 @@ if (!is_array($config['gateways']['gateway_group'])) $config['gateways']['gateway_group'] = array(); $a_gateway_groups = &$config['gateways']['gateway_group']; +$a_gateways = &$config['gateways']['gateway_item']; $changedesc = "Gateway Groups: "; if ($_POST) { @@ -77,7 +78,7 @@ include("head.inc"); <body link="#0000CC" vlink="#0000CC" alink="#0000CC"> <?php include("fbegin.inc"); ?> -<form action="system_gateways.php" method="post"> +<form action="system_gateway_groups.php" method="post"> <input type="hidden" name="y1" value="1"> <?php if ($savemsg) print_info_box($savemsg); ?> <?php if (file_exists($d_staticroutesdirty_path)): ?><p> @@ -123,12 +124,19 @@ effect.");?><br> </td> <td class="listr" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';"> <?php - echo htmlspecialchars($gateway_group['members']); ?> + foreach($gateway_group['item'] as $item) { + $itemsplit = explode("|", $item); + echo htmlspecialchars($itemsplit[0]) . "<br/>\n"; + } + ?> </td> <td class="listr" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';"> <?php - echo htmlspecialchars($gateway_group['priorities']); ?> - ?> + foreach($gateway_group['item'] as $item) { + $itemsplit = explode("|", $item); + echo "Tier ". htmlspecialchars($itemsplit[1]) . "<br/>\n"; + } + ?> </td> <td class="listbg" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';"> <font color="#FFFFFF"><?=htmlspecialchars($gateway_group['descr']);?> diff --git a/usr/local/www/system_gateway_groups_edit.php b/usr/local/www/system_gateway_groups_edit.php new file mode 100755 index 0000000..34557ca --- /dev/null +++ b/usr/local/www/system_gateway_groups_edit.php @@ -0,0 +1,192 @@ +<?php +/* $Id$ */ +/* + system_gateway_groups_edit.php + part of pfSense (http://pfsense.com) + + Copyright (C) 2007 Seth Mos <seth.mos@xs4all.nl>. + 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 + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); + +if (!is_array($config['gateways']['gateway_item'])) + $config['gateways']['gateway_item'] = array(); + +$a_gateway_groups = &$config['gateways']['gateway_group']; +$a_gateways = &$config['gateways']['gateway_item']; + +$id = $_GET['id']; +if (isset($_POST['id'])) + $id = $_POST['id']; + +if (isset($_GET['dup'])) { + $id = $_GET['dup']; +} + +if (isset($id) && $a_gateway_groups[$id]) { + $pconfig['name'] = $a_gateway_groups[$id]['name']; + $pconfig['item'] = &$a_gateway_groups[$id]['item']; + $pconfig['descr'] = $a_gateway_groups[$id]['descr']; +} + +if (isset($_GET['dup'])) + unset($id); + +if ($_POST) { + + unset($input_errors); + $pconfig = $_POST; + + /* input validation */ + $reqdfields = explode(" ", "name"); + $reqdfieldsn = explode(",", "Name"); + + do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); + + if (! isset($_POST['name'])) { + $input_errors[] = "A valid gateway group name must be specified."; + } + + /* check for overlaps */ + foreach ($a_gateway_groups as $gateway_group) { + if (isset($id) && ($a_gateway_groups[$id]) && ($a_gateway_groups[$id] === $gateway_group)) + continue; + + if ($gateway_group['name'] == $_POST['name']) { + $input_errors[] = "A gateway group with this name \"{$_POST['name']}\" already exists."; + break; + } + } + + /* Build list of items in group with priority */ + $pconfig['item'] = array(); + foreach($a_gateways as $gateway) { + if($_POST[$gateway['name']] > 0) { + /* we have a priority above 0 (disabled), add item to list */ + $pconfig['item'][] = "{$gateway[name]}|{$_POST[$gateway['name']]}"; + } + + } + if(count($pconfig['item']) == 0) { + $input_errors[] = "No gateway(s) have been selected to be used in this group"; + } + + if (!$input_errors) { + $gateway_group = array(); + $gateway_group['name'] = $_POST['name']; + $gateway_group['item'] = $pconfig['item']; + $gateway_group['descr'] = $_POST['descr']; + + if (isset($id) && $a_gateway_groups[$id]) + $a_gateway_groups[$id] = $gateway_group; + else + $a_gateway_groups[] = $gateway_group; + + touch($d_staticroutesdirty_path); + + write_config(); + + header("Location: system_gateway_groups.php"); + exit; + } +} + +$pgtitle = array("System","Gateways","Edit gateway"); +include("head.inc"); + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<?php if ($input_errors) print_input_errors($input_errors); ?> + <form action="system_gateway_groups_edit.php" method="post" name="iform" id="iform"> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td width="22%" valign="top" class="vncellreq">Group Name</td> + <td width="78%" class="vtable"> + <input name="name" type="text" class="formfld unknown" id="name" size="20" value="<?=htmlspecialchars($pconfig['name']);?>"> + <br> <span class="vexpl">Group Name</span></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq">Gateway Priority</td> + <td width="78%" class="vtable"> + <?php + foreach($a_gateways as $gateway) { + $selected = array(); + $name = $gateway['name']; + $interface = $gateway['interface']; + foreach($pconfig['item'] as $item) { + $itemsplit = explode("|", $item); + if($itemsplit[0] == $name) { + $selected[$itemsplit[1]] = "selected"; + } else { + $selected[0] = "selected"; + } + + } + echo "<select name='{$name}' class='formfldselect' id='{$name}'>"; + echo "<option value='0' $selected[0] >Never</option>"; + echo "<option value='1' $selected[1] >Tier 1</option>"; + echo "<option value='2' $selected[2] >Tier 2</option>"; + echo "<option value='3' $selected[3]>Tier 3</option>"; + echo "<option value='4' $selected[4]>Tier 4</option>"; + echo "<option value='5' $selected[5]>Tier 5</option>"; + echo "</select> <strong>$name ({$interface})</strong><br/>"; + } + ?> + <br/><span class="vexpl"> + <strong>Link Priority</strong> <br /> + The priority selected here defines in what order failover and balancing of links will be done. + Multiple links of the same priority will balance connections until all links in the priority will be exhausted. + If all links in a priority level are exhausted we will use the next available link(s) in the next priority level. + </span><br /> + </td> + </tr> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell">Description</td> + <td width="78%" class="vtable"> + <input name="descr" type="text" class="formfld unknown" 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 width="22%" valign="top"> </td> + <td width="78%"> + <input name="Submit" type="submit" class="formbtn" value="Save"> <input type="button" value="Cancel" class="formbtn" onclick="history.back()"> + <?php if (isset($id) && $a_gateways[$id]): ?> + <input name="id" type="hidden" value="<?=$id;?>"> + <?php endif; ?> + </td> + </tr> + </table> +</form> +<?php include("fend.inc"); ?> +<script language="JavaScript"> + enable_change(); +</script> +</body> +</html> |