Commit 159d2fd2 authored by Ad Schellevis's avatar Ad Schellevis

(legacy) refactor status_lb_pool.php

parent b459bada
<?php <?php
/* /*
Copyright (C) 2014-2015 Deciso B.V. Copyright (C) 2014-2016 Deciso B.V.
Copyright (C) 2010 Seth Mos <seth.mos@dds.nl>. Copyright (C) 2010 Seth Mos <seth.mos@dds.nl>.
All rights reserved. All rights reserved.
...@@ -33,114 +33,83 @@ require_once("vslb.inc"); ...@@ -33,114 +33,83 @@ require_once("vslb.inc");
require_once("services.inc"); require_once("services.inc");
require_once("interfaces.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(); $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(); $config['load_balancer']['lbpool'] = array();
} }
$a_pool = &$config['load_balancer']['lbpool']; $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 ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['apply']) { if (!empty($_POST['apply'])) {
relayd_configure(); relayd_configure();
filter_configure(); filter_configure();
$savemsg = get_std_save_message();
clear_subsystem_dirty('loadbalancer'); clear_subsystem_dirty('loadbalancer');
header("Location: status_lb_pool.php");
exit;
} else { } else {
/* Keep a list of servers we find in POST variables */ // change pool configuration (enabled/disabled servers)
$newservers = array(); $pconfig = $_POST;
foreach ($_POST as $name => $value) { if (!empty($pconfig['pools'])) {
/* Look through the POST vars to find the pool data */ foreach ($pconfig['pools'] as $form_pool) {
if (strpos($name, '|') !== false){
list($poolname, $ip) = explode("|", $name);
$ip = str_replace('_', '.', $ip);
$newservers[$poolname][] = $ip;
} elseif (is_ipaddr($value)) {
$newservers[$name][] = $value;
}
}
foreach ($a_pool as & $pool) { foreach ($a_pool as & $pool) {
if (is_array($pool['servers']) && is_array($pool['serversdisabled'])) { if ($pool['name'] == $form_pool) {
$oldservers = array_merge($pool['servers'], $pool['serversdisabled']); $all_ips = array_merge((array) $pool['servers'], (array) $pool['serversdisabled']);
} elseif (is_array($pool['servers'])) { $new_disabled = array_diff($all_ips, (array)$pconfig[$form_pool]);
$oldservers = $pool['servers']; $new_enabled = (array)$pconfig[$form_pool];
} elseif (is_array($pool['serversdisabled'])) { $pool['servers'] = $new_enabled;
$oldservers = $pool['serversdisabled']; $pool['serversdisabled'] = $new_disabled;
} else {
$oldservers = array();
} }
if (is_array($newservers[$pool['name']])) {
$pool['servers'] = $newservers[$pool['name']];
$pool['serversdisabled'] = array_diff($oldservers, $newservers[$pool['name']]);
} }
} }
mark_subsystem_dirty('loadbalancer'); mark_subsystem_dirty('loadbalancer');
write_config("Updated load balancer pools via status screen."); 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> <body>
<?php include("fbegin.inc"); ?> <?php include("fbegin.inc"); ?>
<section class="page-content-main"> <section class="page-content-main">
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<?php if (is_subsystem_dirty('loadbalancer')): ?><br/> <?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 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; ?> <?php endif; ?>
<section class="col-xs-12"> <section class="col-xs-12">
<div class="tab-content content-box col-xs-12"> <div class="tab-content content-box col-xs-12">
<form method="post">
<form action="status_lb_pool.php" method="post">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped">
<table class="table table-striped table-sort ">
<thead> <thead>
<tr> <tr>
<td width="10%" class="listhdrr"><?=gettext("Name");?></td> <th><?=gettext("Name");?></th>
<td width="10%" class="listhdrr"><?=gettext("Mode");?></td> <th><?=gettext("Mode");?></th>
<td width="20%" class="listhdrr"><?=gettext("Servers");?></td> <th><?=gettext("Servers");?></th>
<td width="10%" class="listhdrr"><?=gettext("Monitor");?></td> <th><?=gettext("Monitor");?></th>
<td width="30%" class="listhdr"><?=gettext("Description");?></td> <th><?=gettext("Description");?></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<?php
<?php foreach ($a_pool as & $pool): ?> foreach ($a_pool as & $pool): ?>
<tr> <tr>
<td class="listlr"> <td><?=$pool['name'];?></td>
<?=$pool['name'];?> <td>
</td> <?php
<td class="listr" align="center" >
<?php
switch($pool['mode']) { switch($pool['mode']) {
case "loadbalance": case "loadbalance":
echo "Load balancing"; echo "Load balancing";
...@@ -150,81 +119,62 @@ if ($_POST) { ...@@ -150,81 +119,62 @@ if ($_POST) {
break; break;
default: default:
echo "(default)"; echo "(default)";
} }?>
?>
</td> </td>
<td class="listr" align="center"> <td>
<table border="0" cellpadding="2" cellspacing="0" summary="status"> <input type="hidden" name="pools[]" value="<?=$pool['name'];?>">
<?php <table class="table table-condensed">
<?php
$pool_hosts=array(); $pool_hosts=array();
$svr = array();
foreach ((array) $pool['servers'] as $server) { foreach ((array) $pool['servers'] as $server) {
$svr['ip']['addr']=$server; $svr['addr']=$server;
$svr['ip']['state']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['state']; $svr['state']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['state'];
$svr['ip']['avail']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['avail']; $svr['avail']=$relay_hosts[$pool['name'].":".$pool['port']][$server]['avail'];
$svr['bgcolor'] = $svr['state'] == 'up' ? "#90EE90" : "#F08080";
$pool_hosts[]=$svr; $pool_hosts[]=$svr;
} }
foreach ((array) $pool['serversdisabled'] as $server) { foreach ((array) $pool['serversdisabled'] as $server) {
$svr['ip']['addr']="$server"; $svr['addr']="$server";
$svr['ip']['state']='disabled'; $svr['state']='disabled';
$svr['ip']['avail']='disabled'; $svr['avail']='disabled';
$svr['bgcolor']='white';
$pool_hosts[]=$svr; $pool_hosts[]=$svr;
} }
asort($pool_hosts); 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) { <?php
if($server['ip']['addr']!="") { endforeach;?>
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>";
}
}
?>
</table> </table>
</td> </td>
<td class="listr" > <td><?=$pool['monitor']; ?></td>
<?php echo $pool['monitor']; ?> <td><?=$pool['descr'];?></td>
</td>
<td class="listbg" >
<?=$pool['descr'];?>
</td>
</tr> </tr>
<?php endforeach; ?> <?php
<tr><td colspan="5"> endforeach; ?>
<tr>
<td colspan="5">
<input name="Submit" type="submit" class="btn btn-primary" value="<?= gettext("Save"); ?>" /> <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>
</td></tr> </tr>
</tbody> </tbody>
</table> </table>
</form>
</div> </div>
</form>
</div> </div>
</section> </section>
</div> </div>
</div> </div>
</section> </section>
<?php include("foot.inc"); ?> <?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