From 0c450e7186b6436597f77615e3fe935ddfc0bf28 Mon Sep 17 00:00:00 2001 From: jim-p Date: Wed, 11 Aug 2010 14:46:51 -0400 Subject: Allow batch Server LB/Failover pool changes from the Pool status screen. For LB pools, you can pick via checkbox any number of active pool servers. For manual failover types, you can choose the active server. --- usr/local/www/status_lb_pool.php | 63 +++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 10 deletions(-) (limited to 'usr/local/www/status_lb_pool.php') 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."); + } +} + ?>
+

+"));?>
+ - + "; + echo "\n"; break; case 'failover': if($svr[0]!="") - echo ""; + echo "\n"; break; } echo ""; @@ -151,11 +197,11 @@ foreach( (array) $relayctl as $line) { switch ($pool['mode']) { case 'loadbalance': if($svr[0]!="") - echo ""; + echo "\n"; break; case 'failover': if($svr[0]!="") - echo ""; + echo "\n"; break; } echo ""; @@ -170,10 +216,7 @@ foreach( (array) $relayctl as $line) { - +
@@ -135,11 +181,11 @@ foreach( (array) $relayctl as $line) { switch ($pool['mode']) { case 'loadbalance': if($svr[0]!="") - echo " {$svr[0]}:{$pool['port']}
{$svr[0]}:{$pool['port']}
"> -- cgit v1.1