* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
##|+PRIV
##|*IDENT=page-services-loadbalancer-virtualservers
##|*NAME=Services: Load Balancer: Virtual Servers
##|*DESCR=Allow access to the 'Services: Load Balancer: Virtual Servers' page.
##|*MATCH=load_balancer_virtual_server.php*
##|-PRIV
require_once("guiconfig.inc");
require_once("functions.inc");
require_once("filter.inc");
require_once("shaper.inc");
require_once("vslb.inc");
if (!is_array($config['load_balancer']['virtual_server'])) {
$config['load_balancer']['virtual_server'] = array();
}
$a_vs = &$config['load_balancer']['virtual_server'];
$pconfig = $_POST;
if ($_POST['apply']) {
$retval = 0;
$retval |= filter_configure();
$retval |= relayd_configure();
/* Wipe out old relayd anchors no longer in use. */
cleanup_lb_marked();
clear_subsystem_dirty('loadbalancer');
}
if ($_POST['act'] == "del") {
if (array_key_exists($_POST['id'], $a_vs)) {
if (!$input_errors) {
cleanup_lb_mark_anchor($a_vs[$_POST['id']]['name']);
unset($a_vs[$_POST['id']]);
write_config();
mark_subsystem_dirty('loadbalancer');
header("Location: load_balancer_virtual_server.php");
exit;
}
}
}
/* Index lbpool array for easy hyperlinking */
$poodex = array();
for ($i = 0; isset($config['load_balancer']['lbpool'][$i]); $i++) {
$poodex[$config['load_balancer']['lbpool'][$i]['name']] = $i;
}
for ($i = 0; isset($config['load_balancer']['virtual_server'][$i]); $i++) {
if ($a_vs[$i]) {
$a_vs[$i]['mode'] = htmlspecialchars($a_vs[$i]['mode']);
$a_vs[$i]['relay_protocol'] = htmlspecialchars($a_vs[$i]['relay_protocol']);
$a_vs[$i]['poolname'] = "" . htmlspecialchars($a_vs[$i]['poolname']) . "";
if ($a_vs[$i]['sitedown'] != '') {
$a_vs[$i]['sitedown'] = "" . htmlspecialchars($a_vs[$i]['sitedown']) . "";
} else {
$a_vs[$i]['sitedown'] = 'none';
}
}
}
// Return the index of any alias matching the specified name and type
function alias_idx($name, $type) {
global $config;
if (empty($config['aliases']['alias'])) {
return(-1);
}
$idx = 0;
foreach ($config['aliases']['alias'] as $alias) {
if (($alias['name'] == $name) && ($alias['type'] == $type)) {
return($idx);
}
$idx++;
}
return(-1);
}
$pgtitle = array(gettext("Services"), gettext("Load Balancer"), gettext("Virtual Servers"));
$pglinks = array("", "load_balancer_pool.php", "@self");
$shortcut_section = "relayd-virtualservers";
include("head.inc");
if ($input_errors) {
print_input_errors($input_errors);
}
if ($_POST['apply']) {
print_apply_result_box($retval);
}
if (is_subsystem_dirty('loadbalancer')) {
print_apply_box(gettext("The virtual server configuration has been changed.") . "
" . gettext("The changes must be applied for them to take effect."));
}
/* active tabs */
$tab_array = array();
$tab_array[] = array(gettext("Pools"), false, "load_balancer_pool.php");
$tab_array[] = array(gettext("Virtual Servers"), true, "load_balancer_virtual_server.php");
$tab_array[] = array(gettext("Monitors"), false, "load_balancer_monitor.php");
$tab_array[] = array(gettext("Settings"), false, "load_balancer_setting.php");
display_top_tabs($tab_array);
?>