diff options
author | Bill Marquette <billm@pfsense.org> | 2008-08-05 05:03:55 +0000 |
---|---|---|
committer | Bill Marquette <billm@pfsense.org> | 2008-08-05 05:03:55 +0000 |
commit | 50d86c13771164ab18c0de426f434f55c9b0cdce (patch) | |
tree | bd8ffe5404e37c26f4406c073cbec321700b5aaf /usr/local/www/load_balancer_pool_edit.php | |
parent | fbf672cbe9c241459579a83be00df9f20dd47dc0 (diff) | |
download | pfsense-50d86c13771164ab18c0de426f434f55c9b0cdce.zip pfsense-50d86c13771164ab18c0de426f434f55c9b0cdce.tar.gz |
Bring in new server load balancing code, this introduces:
* The ability to create your own monitors (tcp, http, https, send/expect)
* A new way of displaying 'standard tables' - MainTable class
* monitor_type array type
Diffstat (limited to 'usr/local/www/load_balancer_pool_edit.php')
-rwxr-xr-x | usr/local/www/load_balancer_pool_edit.php | 63 |
1 files changed, 18 insertions, 45 deletions
diff --git a/usr/local/www/load_balancer_pool_edit.php b/usr/local/www/load_balancer_pool_edit.php index a6f5a82..a527265 100755 --- a/usr/local/www/load_balancer_pool_edit.php +++ b/usr/local/www/load_balancer_pool_edit.php @@ -4,7 +4,7 @@ load_balancer_pool_edit.php part of pfSense (http://www.pfsense.com/) - Copyright (C) 2005 Bill Marquette <bill.marquette@gmail.com>. + Copyright (C) 2005-2008 Bill Marquette <bill.marquette@gmail.com>. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -49,8 +49,6 @@ else $id = $_GET['id']; if (isset($id) && $a_pool[$id]) { - $pconfig['monitorip'] = $a_pool[$id]['monitorip']; - $pconfig['behaviour'] = $a_pool[$id]['behaviour']; $pconfig['name'] = $a_pool[$id]['name']; $pconfig['desc'] = $a_pool[$id]['desc']; $pconfig['port'] = $a_pool[$id]['port']; @@ -79,8 +77,7 @@ if ($_POST) { if (($_POST['name'] == $config['load_balancer']['lbpool'][$i]['name']) && ($i != $id)) $input_errors[] = "This pool name has already been used. Pool names must be unique."; if (!is_port($_POST['port'])) - if($_POST['type'] == "server") - $input_errors[] = "The port must be an integer between 1 and 65535."; + $input_errors[] = "The port must be an integer between 1 and 65535."; if (is_array($_POST['servers'])) { foreach($pconfig['servers'] as $svrent) { if (!is_ipaddr($svrent)) { @@ -95,14 +92,13 @@ if ($_POST) { } } } + $m = array(); + for ($i=0; isset($config['load_balancer']['monitor_type'][$i]); $i++) + $m[$config['load_balancer']['monitor_type'][$i]['name']] = $config['load_balancer']['monitor_type'][$i]; - if ($_POST['monitor'] != "TCP" && $_POST['monitor'] != "HTTP" && $_POST['monitor'] != "ICMP") + if (!isset($m[$_POST['monitor']])) $input_errors[] = "Invalid monitor chosen."; - if(!isset($_POST['behaviour'])) { - $input_errors[] = "No pool behaviour chosen."; - } - if (!$input_errors) { $poolent = array(); if(isset($id) && $a_pool[$id]) @@ -110,12 +106,6 @@ if ($_POST) { if($poolent['name'] != "") $changedesc .= " modified '{$poolent['name']}' pool:"; - /* kill off old static route */ - if(is_ipaddr($poolent['monitorip'])) - mwexec("route delete {$poolent['monitorip']}"); - - update_if_changed("behaviour", $poolent['behaviour'], $_POST['behaviour']); - update_if_changed("monitorip", $poolent['monitorip'], $_POST['monitorip']); update_if_changed("name", $poolent['name'], $_POST['name']); update_if_changed("description", $poolent['desc'], $_POST['desc']); update_if_changed("port", $poolent['port'], $_POST['port']); @@ -181,17 +171,6 @@ function clearcombo(){ </tr> <tr align="left"> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Behavior");?></td> - <td width="78%" class="vtable" colspan="2"> - <input type="radio" name="behaviour" id="behaviour" value="balance"<?php if($pconfig['behaviour'] == -"balance") echo " CHECKED"; ?>><?=gettext("Load Balancing");?><br> - <input type="radio" name="behaviour" id="behaviour" value="failover"<?php if($pconfig['behaviour'] == -"failover") echo " CHECKED"; ?>><?=gettext("Failover");?><br> - Load Balancing: both active. Failover order: top -> down. - </td> - </tr> - - <tr align="left"> <td width="22%" valign="top" id="monitorport_text" class="vncellreq">Port</td> <td width="78%" class="vtable" colspan="2"> <input name="port" type="text" <?if(isset($pconfig['port'])) echo "value=\"{$pconfig['port']}\"";?> size="16" maxlength="16"><br> @@ -202,26 +181,24 @@ function clearcombo(){ <td width="22%" valign="top" class="vncellreq">Monitor</td> <td width="78%" class="vtable" colspan="2"> <select id="monitor" name="monitor"> - <option value="TCP"<?php if($pconfig['monitor'] == "TCP") echo " SELECTED"; ?>>TCP</option> - <option value="ICMP"<?php if($pconfig['monitor'] == "ICMP") echo " SELECTED"; ?>>ICMP</option> - <!-- billm - XXX: add HTTP/HTTPS here --> + <? + foreach ($config['load_balancer']['monitor_type'] as $monitor) { + if ($monitor['name'] == $pconfig['monitor']) { + $selected=" selected"; + } else { + $selected = ""; + } + echo "<option value=\"{$monitor['name']}\"{$selected}>{$monitor['name']}</option>"; + } + ?> </select> </td> </tr> <tr align="left"> - <td width="22%" valign="top" id="monitorip_text" class="vncell">Monitor IP</td> - <td width="78%" class="vtable" colspan="2"> - <div style="float: none;"> - <input size="16" id="monitorip" name="monitorip" value="<?php echo $pconfig['monitorip']; ?>" style="float: left;"> - </div> - </td> - </tr> - <tr align="left"> - <td width="22%" valign="top" class="vncellreq"><div id="interfacename_text"></div></td> + <td width="22%" valign="top" class="vncellreq"></td> <td width="78%" class="vtable" colspan="2"> <input name="ipaddr" type="text" size="16" style="float: left;"> <input class="formbtn" type="button" name="button1" value="Add to pool" onclick="AddServerToPool(document.iform);"><br> - <div id="interfacename_desc"></div> </td> </tr> <tr> @@ -266,10 +243,6 @@ echo "</select>"; <br/> <input class="formbtn" type="button" name="removeEnabled" value="Remove" onclick="RemoveServerFromPool(document.iform, 'servers[]');" /> </td> - <td valign="top"> - <input class="formbtn" type="button" name="moveUp" value="Move up" onclick="up(document.iform.serversSelect);" /><br/> - <input class="formbtn" type="button" name="moveDown" value="Move down" onclick="down(document.iform.serversSelect);" /> - </td> </tr> </tbody> </table> @@ -278,7 +251,7 @@ echo "</select>"; <tr align="left"> <td width="22%" valign="top"> </td> <td width="78%"> - <input name="Submit" type="submit" class="formbtn" value="Save" onClick="AllServers('serversSelect', true); AllServers('serversDisabledSelect', true);"> + <input name="Submit" type="submit" class="formbtn" value="Save" onClick="AllServers('serversSelect', true); AllServers('serversDisabledSelect', true);"><input type="button" class="formbtn" value="Cancel" onclick="history.back()"> <?php if (isset($id) && $a_pool[$id]): ?> <input name="id" type="hidden" value="<?=$id;?>"> <?php endif; ?> |