diff --git a/usr/local/www/system_gateway_groups.php b/usr/local/www/system_gateway_groups.php index 481370d8e7..647bb42d73 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"); -
+

@@ -123,12 +124,19 @@ effect.");?>
+ foreach($gateway_group['item'] as $item) { + $itemsplit = explode("|", $item); + echo htmlspecialchars($itemsplit[0]) . "
\n"; + } + ?> - ?> + foreach($gateway_group['item'] as $item) { + $itemsplit = explode("|", $item); + echo "Tier ". htmlspecialchars($itemsplit[1]) . "
\n"; + } + ?>   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 0000000000..34557ca9e1 --- /dev/null +++ b/usr/local/www/system_gateway_groups_edit.php @@ -0,0 +1,192 @@ +. + 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"); + +?> + + + + + + + + + + + + + + + + + + + + + + + + +
Group Name + +
Group Name
Gateway Priority + "; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo " $name ({$interface})
"; + } + ?> +
+ Link Priority
+ 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. +

+
Description + +
You may enter a description here + for your reference (not parsed).
  + + + + +
+ + + + +