Commit 49da067c authored by Ad Schellevis's avatar Ad Schellevis Committed by Franco Fichtner

(legacy) refactor status_lb_pool.php

(cherry picked from commit 159d2fd2)
parent 0eba8133
<?php
/*
Copyright (C) 2014-2015 Deciso B.V.
Copyright (C) 2014-2016 Deciso B.V.
Copyright (C) 2010 Seth Mos <seth.mos@dds.nl>.
All rights reserved.
......@@ -33,114 +33,83 @@ require_once("vslb.inc");
require_once("services.inc");
require_once("interfaces.inc");
if (!is_array($config['load_balancer'])) {
if (empty($config['load_balancer']) || !is_array($config['load_balancer'])) {
$config['load_balancer'] = array();
}
if (!is_array($config['load_balancer']['lbpool'])) {
if (empty($config['load_balancer']['lbpool']) || !is_array($config['load_balancer']['lbpool'])) {
$config['load_balancer']['lbpool'] = array();
}
$a_pool = &$config['load_balancer']['lbpool'];
$lb_logfile = '/var/log/relayd.log';
$nentries = $config['syslog']['nentries'];
if (!$nentries) {
$nentries = 50;
}
$now = time();
$year = date("Y");
$service_hook = 'relayd';
include("head.inc");
$relay_hosts = get_lb_summary();
if ($_POST) {
if ($_POST['apply']) {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_POST['apply'])) {
relayd_configure();
filter_configure();
$savemsg = get_std_save_message();
clear_subsystem_dirty('loadbalancer');
header("Location: status_lb_pool.php");
exit;
} else {
/* Keep a list of servers we find in POST variables */
$newservers = array();
foreach ($_POST as $name => $value) {
/* Look through the POST vars to find the pool data */
if (strpos($name, '|') !== false){
list($poolname, $ip) = explode("|", $name);
$ip = str_replace('_', '.', $ip);
$newservers[$poolname][] = $ip;
} elseif (is_ipaddr($value)) {
$newservers[$name][] = $value;
}
}
// change pool configuration (enabled/disabled servers)
$pconfig = $_POST;
if (!empty($pconfig['pools'])) {
foreach ($pconfig['pools'] as $form_pool) {
foreach ($a_pool as & $pool) {
if (is_array($pool['servers']) && is_array($pool['serversdisabled'])) {
$oldservers = array_merge($pool['servers'], $pool['serversdisabled']);
} elseif (is_array($pool['servers'])) {
$oldservers = $pool['servers'];
} elseif (is_array($pool['serversdisabled'])) {
$oldservers = $pool['serversdisabled'];
} else {
$oldservers = array();
if ($pool['name'] == $form_pool) {
$all_ips = array_merge((array) $pool['servers'], (array) $pool['serversdisabled']);
$new_disabled = array_diff($all_ips, (array)$pconfig[$form_pool]);
$new_enabled = (array)$pconfig[$form_pool];
$pool['servers'] = $new_enabled;
$pool['serversdisabled'] = $new_disabled;
}
if (is_array($newservers[$pool['name']])) {
$pool['servers'] = $newservers[$pool['name']];
$pool['serversdisabled'] = array_diff($oldservers, $newservers[$pool['name']]);
}
}
mark_subsystem_dirty('loadbalancer');
write_config("Updated load balancer pools via status screen.");
}
header("Location: status_lb_pool.php");
exit;
}
}
$service_hook = 'relayd';
include("head.inc");
$relay_hosts = get_lb_summary();
legacy_html_escape_form_data($a_pool);
legacy_html_escape_form_data($relay_hosts);
?>
<body>
<?php include("fbegin.inc"); ?>
<section class="page-content-main">
<div class="container-fluid">
<div class="row">
<?php if (is_subsystem_dirty('loadbalancer')): ?><br/>
<?php print_info_box_apply(sprintf(gettext("The load balancer configuration has been changed%sYou must apply the changes in order for them to take effect."), "<br />"));?>
<?php endif; ?>
<section class="col-xs-12">
<div class="tab-content content-box col-xs-12">
<form action="status_lb_pool.php" method="post">
<form method="post">
<div class="table-responsive">
<table class="table table-striped table-sort ">
<table class="table table-striped">
<thead>
<tr>
<td width="10%" class="listhdrr"><?=gettext("Name");?></td>
<td width="10%" class="listhdrr"><?=gettext("Mode");?></td>
<td width="20%" class="listhdrr"><?=gettext("Servers");?></td>
<td width="10%" class="listhdrr"><?=gettext("Monitor");?></td>
<td width="30%" class="listhdr"><?=gettext("Description");?></td>
<th><?=gettext("Name");?></th>
<th><?=gettext("Mode");?></th>
<th><?=gettext("Servers");?></th>
<th><?=gettext("Monitor");?></th>
<th><?=gettext("Description");?></th>
</tr>
</thead>
<tbody>
<?php foreach ($a_pool as & $pool): ?>
<?php
foreach ($a_pool as & $pool): ?>
<tr>
<td class="listlr">
<?=$pool['name'];?>
</td>
<td class="listr" align="center" >
<?php
<td><?=$pool['name'];?></td>
<td>
<?php
switch($pool['mode']) {
case "loadbalance":
echo "Load balancing";
......@@ -150,81 +119,62 @@ if ($_POST) {
break;
default:
echo "(default)";
}
?>
}?>
</td>
<td class="listr" align="center">
<table border="0" cellpadding="2" cellspacing="0" summary="status">
<?php
<td>
<input type="hidden" name="pools[]" value="<?=$pool['name'];?>">
<table class="table table-condensed">
<?php
$pool_hosts=array();
$svr = array();
foreach ((array) $pool['servers'] as $server) {
$svr['ip']['addr']=$server;
$svr['ip']['state']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['state'];
$svr['ip']['avail']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['avail'];
$svr['addr']=$server;
$svr['state']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['state'];
$svr['avail']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['avail'];
$svr['bgcolor'] = $svr['state'] == 'up' ? "#90EE90" : "#F08080";
$pool_hosts[]=$svr;
}
foreach ((array) $pool['serversdisabled'] as $server) {
$svr['ip']['addr']="$server";
$svr['ip']['state']='disabled';
$svr['ip']['avail']='disabled';
$svr['addr']="$server";
$svr['state']='disabled';
$svr['avail']='disabled';
$svr['bgcolor']='white';
$pool_hosts[]=$svr;
}
asort($pool_hosts);
foreach ($pool_hosts as $server):?>
<tr>
<td>
<input type="<?=$pool['mode'] == "loadbalance" ? "checkbox" : "radio";?>"
name="<?=$pool['name'];?>[]" value="<?=$server['addr'];?>"
<?=$server['state'] != 'disabled' ? "checked=\"checked\"" : "";?>
/>
</td>
<td style="background:<?=$server['bgcolor'];?>"><?="{$server['addr']}:{$pool['port']}";?></td>
<td style="background:<?=$server['bgcolor'];?>"><?=!empty($server['avail']) ? " ({$server['avail']}) " : "";?></td>
</tr>
foreach ((array) $pool_hosts as $server) {
if($server['ip']['addr']!="") {
switch ($server['ip']['state']) {
case 'up':
$bgcolor = "#90EE90"; // lightgreen
$checked = "checked=\"checked\"";
break;
case 'disabled':
$bgcolor = "white";
$checked = "";
break;
default:
$bgcolor = "#F08080"; // lightcoral
$checked = "checked=\"checked\"";
}
echo "<tr>";
switch ($pool['mode']) {
case 'loadbalance':
echo "<td><input type=\"checkbox\" name=\"{$pool['name']}|" . str_replace('.', '_', $server['ip']['addr']) . "\" {$checked} /></td>\n";
break;
case 'failover':
echo "<td><input type=\"radio\" name=\"{$pool['name']}\" value=\"{$server['ip']['addr']}\" {$checked} /></td>\n";
break;
}
echo "<td bgcolor=\"{$bgcolor}\">&nbsp;{$server['ip']['addr']}:{$pool['port']}&nbsp;</td><td bgcolor=\"{$bgcolor}\">&nbsp;";
# echo "<td bgcolor=\"{$bgcolor}\">&nbsp;{$server['ip']['addr']}:{$pool['port']} ";
if($server['ip']['avail'])
echo " ({$server['ip']['avail']}) ";
echo "&nbsp;</td></tr>";
}
}
?>
<?php
endforeach;?>
</table>
</td>
<td class="listr" >
<?php echo $pool['monitor']; ?>
</td>
<td class="listbg" >
<?=$pool['descr'];?>
</td>
<td><?=$pool['monitor']; ?></td>
<td><?=$pool['descr'];?></td>
</tr>
<?php endforeach; ?>
<tr><td colspan="5">
<?php
endforeach; ?>
<tr>
<td colspan="5">
<input name="Submit" type="submit" class="btn btn-primary" value="<?= gettext("Save"); ?>" />
<input name="Reset" type="reset" class="btn btn-default" value="<?= gettext("Reset"); ?>" />
</td></tr>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</form>
</div>
</section>
</div>
</div>
</section>
<?php include("foot.inc"); ?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment