summaryrefslogtreecommitdiffstats
path: root/usr/local/www/status_lb_pool.php
diff options
context:
space:
mode:
Diffstat (limited to 'usr/local/www/status_lb_pool.php')
-rwxr-xr-xusr/local/www/status_lb_pool.php63
1 files changed, 53 insertions, 10 deletions
diff --git a/usr/local/www/status_lb_pool.php b/usr/local/www/status_lb_pool.php
index a6a446b..c135ef0 100755
--- a/usr/local/www/status_lb_pool.php
+++ b/usr/local/www/status_lb_pool.php
@@ -39,7 +39,10 @@
##|*MATCH=status_lb_pool.php*
##|-PRIV
-require("guiconfig.inc");
+require_once("guiconfig.inc");
+require_once("functions.inc");
+require_once("filter.inc");
+require_once("shaper.inc");
if (!is_array($config['load_balancer']['lbpool'])) {
$config['load_balancer']['lbpool'] = array();
@@ -73,11 +76,54 @@ foreach( (array) $relayctl as $line) {
}
}
+if ($_POST) {
+ if ($_POST['apply']) {
+ $retval = 0;
+ $retval |= filter_configure();
+ $retval |= relayd_configure();
+ $savemsg = get_std_save_message($retval);
+ clear_subsystem_dirty('loadbalancer');
+ } 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;
+ }
+ }
+ 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 (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.");
+ }
+}
+
?>
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
<script src="/javascript/sorttable.js"></script>
<?php include("fbegin.inc"); ?>
<form action="status_lb_pool.php" method="POST">
+<?php if (is_subsystem_dirty('loadbalancer')): ?><p>
+<?php print_info_box_np(sprintf(gettext("The load balancer configuration has been changed%sYou must apply the changes in order for them to take effect."), "<br>"));?><br>
+<?php endif; ?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td class="tabnavtbl">
<?php
@@ -99,7 +145,7 @@ foreach( (array) $relayctl as $line) {
<td width="10%" class="listhdrr"><?=gettext("Monitor");?></td>
<td width="30%" class="listhdr"><?=gettext("Description");?></td>
</tr>
- <?php $i = 0; foreach ($a_pool as $pool): ?>
+ <?php foreach ($a_pool as & $pool): ?>
<tr>
<td class="listlr">
<?=$pool['name'];?>
@@ -135,11 +181,11 @@ foreach( (array) $relayctl as $line) {
switch ($pool['mode']) {
case 'loadbalance':
if($svr[0]!="")
- echo "<td><input type='checkbox' name='{$pool['name']}_{$svr[0]}' checked></td>";
+ echo "<td><input type='checkbox' name='{$pool['name']}|".str_replace('.', '_', $svr[0])."' checked></td>\n";
break;
case 'failover':
if($svr[0]!="")
- echo "<td><input type='radio' name='{$pool['name']}' checked></td>";
+ echo "<td><input type='radio' name='{$pool['name']}' value='{$svr[0]}' checked></td>\n";
break;
}
echo "<td bgcolor={$bgcolor}> {$svr[0]}:{$pool['port']} </td></tr>";
@@ -151,11 +197,11 @@ foreach( (array) $relayctl as $line) {
switch ($pool['mode']) {
case 'loadbalance':
if($svr[0]!="")
- echo "<td><input type='checkbox' name='{$pool['name']}_{$svr[0]}'></td>";
+ echo "<td><input type='checkbox' name='{$pool['name']}|".str_replace('.', '_', $svr[0])."'></td>\n";
break;
case 'failover':
if($svr[0]!="")
- echo "<td><input type='radio' name='{$pool['name']}'></td>";
+ echo "<td><input type='radio' name='{$pool['name']}' value='{$svr[0]}'></td>\n";
break;
}
echo "<td> {$svr[0]}:{$pool['port']} </td></tr>";
@@ -170,10 +216,7 @@ foreach( (array) $relayctl as $line) {
<?=$pool['desc'];?>
</td>
</tr>
- <?php
- $i++;
- endforeach;
- ?>
+ <?php endforeach; ?>
<tr>
<td colspan="5">
<input name="Submit" type="submit" class="formbtn" value="<?= gettext("Save"); ?>">
OpenPOWER on IntegriCloud