aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiBa-NL <pba_2k3@yahoo.com>2013-04-07 00:54:56 +0200
committerPiBa-NL <pba_2k3@yahoo.com>2013-04-07 00:54:56 +0200
commit8cae7be74890bcc2d1e3d797ae7a8e8c20591d22 (patch)
tree95bab658632ad5419301b2415e10de69e2f39f5f
parent16e49a1c9ceddcb81dd5b8800c1627394bb3311e (diff)
downloadpfsense-packages-8cae7be74890bcc2d1e3d797ae7a8e8c20591d22.tar.gz
pfsense-packages-8cae7be74890bcc2d1e3d797ae7a8e8c20591d22.tar.bz2
pfsense-packages-8cae7be74890bcc2d1e3d797ae7a8e8c20591d22.zip
haproxy-devel, add options for checking server health
-fix adding a new server -show advanced options icon in serverpool overview
-rw-r--r--config/haproxy-devel/haproxy.inc102
-rw-r--r--config/haproxy-devel/haproxy_listeners_edit.php16
-rw-r--r--config/haproxy-devel/haproxy_pool_edit.php132
-rw-r--r--config/haproxy-devel/haproxy_pools.php149
4 files changed, 276 insertions, 123 deletions
diff --git a/config/haproxy-devel/haproxy.inc b/config/haproxy-devel/haproxy.inc
index f949bf98..9a291f7a 100644
--- a/config/haproxy-devel/haproxy.inc
+++ b/config/haproxy-devel/haproxy.inc
@@ -65,6 +65,39 @@ if ($haproxy_sni_ssloffloading) {
'mode' => 'https', 'syntax' => 'req_ssl_sni -i', 'advancedoptions' => "tcp-request inspect-delay 5s\n\ttcp-request content accept if { req_ssl_hello_type 1 }");
}
+$a_checktypes['none'] = array('name' => 'none', 'syntax' => '',
+ 'descr' => 'No health checks will be performed.');
+$a_checktypes['Basic'] = array('name' => 'Basic', 'syntax' => '',
+ 'descr' => 'Basic socket connection check');
+$a_checktypes['HTTP'] = array('name' => 'HTTP', 'syntax' => 'httpchk',
+ 'descr' => 'HTTP protocol to check on the servers health, can also be used for HTTPS servers(requirs checking the SSL box for the servers).', 'parameters' => "uri,method,version");
+/* seams this was added in HAProxy1.5dev18, haproxy-devel package is currently using 1.5dev17
+$a_checktypes['Agent'] = array('name' => 'Agent', 'syntax' => 'lb-agent-chk', 'usedifferenport' => 'yes',
+ 'descr' => 'Use a TCP connection to read an ASCII string of the form 100%,75%,drain,down (others in haproxy manual)');
+*/
+$a_checktypes['LDAP'] = array('name' => 'LDAP', 'syntax' => 'ldap-check',
+ 'descr' => 'Use LDAPv3 health checks for server testing');
+$a_checktypes['MySQL'] = array('name' => 'MySQL', 'syntax' => 'mysql-check',
+ 'descr' => 'Use MySQL health checks for server testing', 'parameters' => 'username');
+$a_checktypes['PostgreSQL'] = array('name' => 'PostgreSQL', 'syntax' => 'pgsql-check',
+ 'descr' => 'Use PostgreSQL health checks for server testing', 'parameters' => 'username');
+$a_checktypes['Redis'] = array('name' => 'Redis', 'syntax' => 'redis-check',
+ 'descr' => 'Test that the server correctly talks REDIS protocol.');
+$a_checktypes['SMTP'] = array('name' => 'SMTP', 'syntax' => 'smtpchk HELO',
+ 'descr' => 'Use SMTP HELO health checks for server testing', 'parameters' => 'domain');
+$a_checktypes['ESMTP'] = array('name' => 'ESMTP', 'syntax' => 'smtpchk EHLO',
+ 'descr' => 'Use ESMTP EHLO health checks for server testing', 'parameters' => 'domain');
+$a_checktypes['SSL'] = array('name' => 'SSL', 'syntax' => 'ssl-hello-chk',
+ 'descr' => 'Use SSLv3 client hello health checks for server testing.');
+
+$a_httpcheck_method['OPTIONS'] = array('name' => 'OPTIONS', 'syntax' => 'OPTIONS');
+$a_httpcheck_method['HEAD'] = array('name' => 'HEAD', 'syntax' => 'HEAD');
+$a_httpcheck_method['GET'] = array('name' => 'GET', 'syntax' => 'GET');
+$a_httpcheck_method['POST'] = array('name' => 'POST', 'syntax' => 'POST');
+$a_httpcheck_method['PUT'] = array('name' => 'PUT', 'syntax' => 'PUT');
+$a_httpcheck_method['DELETE'] = array('name' => 'DELETE', 'syntax' => 'DELETE');
+$a_httpcheck_method['TRACE'] = array('name' => 'TRACE', 'syntax' => 'TRACE');
+
function haproxy_custom_php_deinstall_command() {
exec("cd /var/db/pkg && pkg_delete `ls | grep haproxy`");
exec("rm /usr/local/pkg/haproxy.inc");
@@ -323,6 +356,7 @@ function haproxy_find_acl($name) {
function write_backend($fd, $name, $pool, $frontend) {
if(!is_array($pool['ha_servers']['item']) && !$pool['stats_enabled']=='yes')
return;
+ global $a_checktypes;
$a_servers = &$pool['ha_servers']['item'];
@@ -344,17 +378,31 @@ function write_backend($fd, $name, $pool, $frontend) {
// https is an alias for tcp for clarity purpouses
if(strtolower($frontend['type']) == "https") {
$backend_type = "tcp";
- $httpchk = "ssl-hello-chk";
} else {
$backend_type = $frontend['type'];
- if(strtolower($frontend['type']) == "http")
- $httpchk = "httpchk";
- else
- unset($httpchk);
}
fwrite ($fd, "\tmode\t\t\t" . $backend_type . "\n");
-
+
+ $check_type = $pool['check_type'];
+ if ($check_type != 'none')
+ {
+ $optioncheck = $a_checktypes[$check_type]['syntax'];
+ if ($check_type == "MySQL" || $check_type == "PostgreSQL")
+ $optioncheck .= " user " . $pool['monitor_username'];
+ if ($check_type == "SMTP" || $check_type == "ESMTP")
+ $optioncheck .= " " . $pool['monitor_domain'];
+ if ($check_type == "HTTP")
+ {
+ $uri = $pool['monitor_uri'];
+ if (!$uri)
+ $uri = "/";
+ $optioncheck .= " {$pool['httpcheck_method']} {$uri} {$pool['monitor_httpversion']}";
+ }
+ } else {
+ $optioncheck = "httpchk";
+ }
+
if($pool['balance'])
fwrite ($fd, "\tbalance\t\t\t" . $pool['balance'] . "\n");
@@ -397,8 +445,8 @@ function write_backend($fd, $name, $pool, $frontend) {
else
$uri = "/";
- if ($httpchk)
- fwrite ($fd, "\toption\t\t\t{$httpchk} HEAD " . $uri . " HTTP/1.0\n");
+ if ($optioncheck)
+ fwrite ($fd, "\toption\t\t\t{$optioncheck}\n");
if ($pool['advanced_backend']) {
$adv_be = explode("\n", base64_decode($pool['advanced_backend']));
@@ -410,7 +458,7 @@ function write_backend($fd, $name, $pool, $frontend) {
}
}
- if($pool['cookie'] && strtolower($frontend['type']) == "http")
+ if($pool['cookie'] && strtolower($frontend['type']) == "http")
$cookie = " cookie {$pool['cookie']} ";
else
$cookie = "";
@@ -420,12 +468,14 @@ function write_backend($fd, $name, $pool, $frontend) {
} else {
$advanced_txt = "";
}
- if($pool['checkinter'])
- $checkinter = "check inter {$pool['checkinter']}";
- else if (strtolower($frontend['type']) != "tcp")
- $checkinter = "check inter 1000";
- else
- $checkinter = "";
+
+ if ($check_type != 'none')
+ {
+ if($pool['checkinter'])
+ $checkinter = "check inter {$pool['checkinter']}";
+ else
+ $checkinter = "check inter 1000";
+ }
if (is_array($a_servers))
{
@@ -440,7 +490,11 @@ function write_backend($fd, $name, $pool, $frontend) {
} else {
$isbackup = "";
}
- $ssl = ($backend_type == "http" && $be['ssl'] == 'yes') ? ' ssl' : "";
+ $ssl = "";
+ if ($be['ssl'] == 'yes')
+ {
+ $ssl = $backend_type == "http" ? ' ssl' : ' check-ssl';
+ }
fwrite ($fd, "\tserver\t\t\t" . $be['name'] . " " . $be['address'].":" . $be['port'] . "$ssl $cookie $checkinter $isbackup weight " . $be['weight'] . "{$advanced_txt} {$be['advanced']}\n");
}
}
@@ -1047,4 +1101,20 @@ function haproxy_escapestring($configurationsting) {
return str_replace('#', '\\#', $result);
}
+function echo_html_select($name, $keyvaluelist, $selected, $listEmptyMessage="", $onchangeEvent="")
+{
+ if (count($keyvaluelist)>0){
+ if ($onchangeEvent != "")
+ $onchangeEvent .= " onchange=$onchangeEvent";
+ echo "<select name=\"$name\" id=\"$name\" class=\"formselect\"$onchangeEvent>";
+ foreach($keyvaluelist as $key => $desc){
+ $selectedhtml = $key == $selected ? "selected" : "";
+ echo "<option value=\"{$key}\" {$selectedhtml}>{$desc['name']}</option>";
+ }
+ echo "</select>";
+ } else {
+ echo $listEmptyMessage;
+ }
+}
+
?>
diff --git a/config/haproxy-devel/haproxy_listeners_edit.php b/config/haproxy-devel/haproxy_listeners_edit.php
index 2e943e96..b6d6b85d 100644
--- a/config/haproxy-devel/haproxy_listeners_edit.php
+++ b/config/haproxy-devel/haproxy_listeners_edit.php
@@ -106,22 +106,6 @@ function get_certificates_server($get_includeWebCert=false) {
return $certificates;
}
-function echo_html_select($name, $keyvaluelist, $selected, $listEmptyMessage="", $onchangeEvent="")
-{
- if (count($keyvaluelist)>0){
- if ($onchangeEvent != "")
- $onchangeEvent .= " onchange=$onchangeEvent";
- echo "<select name=\"$name\" id=\"$name\" class=\"formselect\"$onchangeEvent>";
- foreach($keyvaluelist as $key => $desc){
- $selectedhtml = $key == $selected ? "selected" : "";
- echo "<option value=\"{$key}\" {$selectedhtml}>{$desc['name']}</option>";
- }
- echo "</select>";
- } else {
- echo $listEmptyMessage;
- }
-}
-
function haproxy_acl_select($mode) {
global $a_acltypes;
diff --git a/config/haproxy-devel/haproxy_pool_edit.php b/config/haproxy-devel/haproxy_pool_edit.php
index 3ed0b799..c3707903 100644
--- a/config/haproxy-devel/haproxy_pool_edit.php
+++ b/config/haproxy-devel/haproxy_pool_edit.php
@@ -30,6 +30,7 @@
*/
require("guiconfig.inc");
+require_once("haproxy.inc");
$d_haproxyconfdirty_path = $g['varrun_path'] . "/haproxy.conf.dirty";
@@ -48,13 +49,13 @@ if (isset($_GET['dup']))
$id = $_GET['dup'];
global $simplefields;
-$simplefields = array("retries","balance","connection_timeout","server_timeout", "stats_enabled","stats_username","stats_password","stats_uri","stats_realm","stats_admin","stats_node_enabled","stats_node","stats_desc","stats_refresh");
+$simplefields = array(
+"name","cookie","balance",
+"check_type","checkinter","httpcheck_method","monitor_uri","monitor_httpversion","monitor_username","monitor_domain",
+"connection_timeout","server_timeout","retries",
+"stats_enabled","stats_username","stats_password","stats_uri","stats_realm","stats_admin","stats_node_enabled","stats_node","stats_desc","stats_refresh");
if (isset($id) && $a_pools[$id]) {
- $pconfig['name'] = $a_pools[$id]['name'];
- $pconfig['checkinter'] = $a_pools[$id]['checkinter'];
- $pconfig['monitor_uri'] = $a_pools[$id]['monitor_uri'];
- $pconfig['cookie'] = $a_pools[$id]['cookie'];
$pconfig['advanced'] = base64_decode($a_pools[$id]['advanced']);
$pconfig['advanced_backend'] = base64_decode($a_pools[$id]['advanced_backend']);
$pconfig['a_servers']=&$a_pools[$id]['ha_servers']['item'];
@@ -87,7 +88,10 @@ if ($_POST) {
if (preg_match("/[^a-zA-Z0-9\.\-_]/", $_POST['name']))
$input_errors[] = "The field 'Name' contains invalid characters.";
-
+
+ if ($_POST['checkinter'] !== "" && !is_numeric($_POST['checkinter']))
+ $input_errors[] = "The field 'Check frequency' value is not a number.";
+
if ($_POST['connection_timeout'] !== "" && !is_numeric($_POST['connection_timeout']))
$input_errors[] = "The field 'Connection timeout' value is not a number.";
@@ -216,13 +220,21 @@ include("head.inc");
row_helper();
+// 'processing' done, make all simple fields usable in html.
+foreach($simplefields as $field){
+ $pconfig[$field] = htmlspecialchars($pconfig[$field]);
+}
?>
<input type='hidden' name='address_type' value='textbox' />
-<body link="#0000CC" vlink="#0000CC" alink="#0000CC"">
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
<style type="text/css">
.haproxy_stats_visible{display:none;}
+ .haproxy_check_enabled{display:none;}
+ .haproxy_check_http{display:none;}
+ .haproxy_check_username{display:none;}
+ .haproxy_check_smtp{display:none;}
</style>
<script language="javascript">
function clearcombo(){
@@ -247,7 +259,20 @@ row_helper();
function updatevisibility()
{
+ d = document;
setCSSdisplay(".haproxy_stats_visible", stats_enabled.checked);
+
+ check_type = d.getElementById("check_type").value;
+ check_type_description = d.getElementById("check_type_description");
+ check_type_description.innerHTML=checktypes[check_type]["descr"];
+ setCSSdisplay(".haproxy_check_enabled", check_type != 'none');
+ setCSSdisplay(".haproxy_check_http", check_type == 'HTTP');
+ setCSSdisplay(".haproxy_check_username", check_type == 'MySQL' || check_type == 'PostgreSQL');
+ setCSSdisplay(".haproxy_check_smtp", check_type == 'SMTP' || check_type == 'ESMTP');
+
+ monitor_username = d.getElementById("monitor_username");
+ sqlcheckusername = d.getElementById("sqlcheckusername");
+ sqlcheckusername.innerHTML=monitor_username.value;
}
@@ -271,7 +296,7 @@ row_helper();
rowname[5] = "server_status";
rowtype[5] = "select";
rowsize[5] = "1";
- rowname[6] = "server_name";
+ rowname[6] = "server_advanced";
rowtype[6] = "textbox";
rowsize[6] = "20";
</script>
@@ -457,20 +482,6 @@ row_helper();
</td>
</tr>
<tr align="left">
- <td width="22%" valign="top" class="vncell">Check freq</td>
- <td width="78%" class="vtable" colspan="2">
- <input name="checkinter" type="text" <?if(isset($pconfig['checkinter'])) echo "value=\"{$pconfig['checkinter']}\"";?>size="20"> milliseconds
- <br/>For HTTP/HTTPS defaults to 1000 if left blank. For TCP no check will be performed if left empty.
- </td>
- </tr>
- <tr align="left">
- <td width="22%" valign="top" class="vncell">Health check URI</td>
- <td width="78%" class="vtable" colspan="2">
- <input name="monitor_uri" type="text" <?if(isset($pconfig['monitor_uri'])) echo "value=\"{$pconfig['monitor_uri']}\"";?>size="64">
- <br/>Defaults to / if left blank.
- </td>
- </tr>
- <tr align="left">
<td width="22%" valign="top" class="vncell">Per server pass thru</td>
<td width="78%" class="vtable" colspan="2">
<input type="text" name='advanced' id='advanced' value='<?php echo $pconfig['advanced']; ?>' size="64">
@@ -488,7 +499,74 @@ row_helper();
</td>
</tr>
-
+ </table>
+ <br/>
+ <table width="100%" border="0" cellpadding="6" cellspacing="0">
+ <tr>
+ <td colspan="2" valign="top" class="listtopic">Health checking</td>
+ </tr>
+ <tr align="left">
+ <td width="22%" valign="top" class="vncell">Health check method</td>
+ <td width="78%" class="vtable" colspan="2">
+ <?
+ echo_html_select("check_type",$a_checktypes,$pconfig['check_type']?$pconfig['check_type']:"HTML","","updatevisibility();");
+ ?><br/>
+ <textarea readonly="yes" cols="60" rows="2" id="check_type_description" name="check_type_description" style="padding:5px; border:1px dashed #990000; background-color: #ffffff; color: #000000; font-size: 8pt;"></textarea>
+ </td>
+ </tr>
+ <tr align="left" class="haproxy_check_enabled">
+ <td width="22%" valign="top" class="vncell">Check frequency</td>
+ <td width="78%" class="vtable" colspan="2">
+ <input name="checkinter" type="text" <?if(isset($pconfig['checkinter'])) echo "value=\"{$pconfig['checkinter']}\"";?>size="20"> milliseconds
+ <br/>For HTTP/HTTPS defaults to 1000 if left blank. For TCP no check will be performed if left empty.
+ </td>
+ </tr>
+ <tr align="left" class="haproxy_check_http">
+ <td width="22%" valign="top" class="vncell">Http check method</td>
+ <td width="78%" class="vtable" colspan="2">
+ <?
+ echo_html_select("httpcheck_method",$a_httpcheck_method,$pconfig['httpcheck_method']);
+ ?>
+ <br/>OPTIONS is the method usually best to perform server checks, HEAD and GET can also be used
+ </td>
+ </tr>
+ <tr align="left" class="haproxy_check_http">
+ <td width="22%" valign="top" class="vncell">Http check URI</td>
+ <td width="78%" class="vtable" colspan="2">
+ <input name="monitor_uri" type="text" <?if(isset($pconfig['monitor_uri'])) echo "value=\"{$pconfig['monitor_uri']}\"";?>size="64">
+ <br/>Defaults to / if left blank.
+ </td>
+ </tr>
+ <tr align="left" class="haproxy_check_http">
+ <td width="22%" valign="top" class="vncell">Http check version</td>
+ <td width="78%" class="vtable" colspan="2">
+ <input name="monitor_httpversion" type="text" <?if(isset($pconfig['monitor_httpversion'])) echo "value=\"{$pconfig['monitor_httpversion']}\"";?>size="64">
+ <br/>Defaults to "HTTP/1.0" if left blank.
+ Note that the Host field is mandatory in HTTP/1.1, and as a trick, it is possible to pass it
+ after "\r\n" following the version string like this:<br/>
+ &nbsp;&nbsp;&nbsp;&nbsp;"<i>HTTP/1.1\r\nHost:\ www</i>"<br/>
+ Also some hosts might require an accept parameter like this:<br/>
+ &nbsp;&nbsp;&nbsp;&nbsp;"<i>HTTP/1.0\r\nHost:\ webservername:8080\r\nAccept:\ */*</i>"
+ </td>
+ </tr>
+ <tr align="left" class="haproxy_check_username">
+ <td width="22%" valign="top" class="vncell">Check with Username</td>
+ <td width="78%" class="vtable" colspan="2">
+ <input name="monitor_username" id="monitor_username" type="text" <?if(isset($pconfig['monitor_username'])) echo "value=\"{$pconfig['monitor_username']}\"";?>size="64" onchange="updatevisibility();" onkeyup="updatevisibility();">
+ <br/>
+ This is the username which will be used when connecting to MySQL/PostgreSQL server.
+ <pre>
+USE mysql;
+CREATE USER '<span id="sqlcheckusername" name="sqlcheckusername"></span>'@'&lt;pfSenseIP&gt;';
+FLUSH PRIVILEGES;</pre>
+ </td>
+ </tr>
+ <tr align="left" class="haproxy_check_smtp">
+ <td width="22%" valign="top" class="vncell">Domain</td>
+ <td width="78%" class="vtable" colspan="2">
+ <input name="monitor_domain" type="text" <?if(isset($pconfig['monitor_domain'])) echo "value=\"{$pconfig['monitor_domain']}\"";?>size="64">
+ </td>
+ </tr>
</table>
<br/>
<table width="100%" border="0" cellpadding="6" cellspacing="0">
@@ -548,7 +626,7 @@ set by the 'retries' parameter.</div>
<tr class="haproxy_stats_visible" align="left" id='stats_username_row' name='stats_username_row'>
<td width="22%" valign="top" class="vncellreq">Stats Username</td>
<td width="78%" class="vtable" colspan="2">
- <input id="stats_username" name="stats_username" type="text" <?if(isset($pconfig['stats_username'])) echo "value=\"".htmlspecialchars($pconfig['stats_username'])."\"";?> size="64">
+ <input id="stats_username" name="stats_username" type="text" <?if(isset($pconfig['stats_username'])) echo "value=\"".$pconfig['stats_username']."\"";?> size="64">
</td>
</tr>
@@ -557,7 +635,7 @@ set by the 'retries' parameter.</div>
<td width="78%" class="vtable" colspan="2">
<input id="stats_password" name="stats_password" type="password" <?
if(isset($pconfig['stats_password']))
- echo "value=\"".htmlspecialchars($pconfig['stats_password'])."\"";
+ echo "value=\"".$pconfig['stats_password']."\"";
?> size="64">
<br/>
</td>
@@ -615,6 +693,10 @@ set by the 'retries' parameter.</div>
<br>
<?php include("fend.inc"); ?>
<script type="text/javascript">
+<?
+ phparray_to_javascriptarray($a_checktypes,"checktypes",Array('/*','/*/name','/*/descr'));
+?>
+
field_counter_js = 7;
rows = 1;
totalrows = <?php echo $counter; ?>;
diff --git a/config/haproxy-devel/haproxy_pools.php b/config/haproxy-devel/haproxy_pools.php
index 57b056b3..a0c6b176 100644
--- a/config/haproxy-devel/haproxy_pools.php
+++ b/config/haproxy-devel/haproxy_pools.php
@@ -92,10 +92,10 @@ include("head.inc");
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td class="tabnavtbl">
<?php
- /* active tabs */
- $tab_array = array();
+ /* active tabs */
+ $tab_array = array();
$tab_array[] = array("Settings", false, "haproxy_global.php");
- $tab_array[] = array("Listener", false, "haproxy_listeners.php");
+ $tab_array[] = array("Listener", false, "haproxy_listeners.php");
$tab_array[] = array("Server Pool", true, "haproxy_pools.php");
display_top_tabs($tab_array);
?>
@@ -103,72 +103,89 @@ include("head.inc");
<tr>
<td>
<div id="mainarea">
- <table class="tabcont sortable" width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td width="30%" class="listhdrr">Name</td>
- <td width="10%" class="listhdrr">Servers</td>
- <td width="40%" class="listhdrr">Listener</td>
- <td width="10%" class="list"></td>
- </tr>
+ <table class="tabcont sortable" width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="5%" class="listhdrr">Advanced</td>
+ <td width="25%" class="listhdrr">Name</td>
+ <td width="10%" class="listhdrr">Servers</td>
+ <td width="10%" class="listhdrr">Check</td>
+ <td width="30%" class="listhdrr">Listener</td>
+ <td width="10%" class="list"></td>
+ </tr>
<?php
- $i = 0;
- foreach ($a_pools as $pool):
-
- $fe_list = "";
- $sep = "";
- foreach ($a_backends as $backend) {
- if($backend['backend_serverpool'] == $pool['name']) {
- $fe_list .= $sep . $backend['name'];
- $sep = ", ";
- }
- }
- $textss = $textse = "";
- if ($fe_list == "") {
- $textss = "<span class=\"gray\">";
- $textse = "</span>";
- }
- if (is_array($pool['ha_servers']))
- $count = count($pool['ha_servers']['item']);
- else
- $count = 0;
+ $img_adv = "/themes/{$g['theme']}/images/icons/icon_advanced.gif";
+ $i = 0;
+ foreach ($a_pools as $pool){
+ $fe_list = "";
+ $sep = "";
+ foreach ($a_backends as $backend) {
+ if($backend['backend_serverpool'] == $pool['name']) {
+ $fe_list .= $sep . $backend['name'];
+ $sep = ", ";
+ }
+ }
+ $textgray = $fe_list == "" ? " gray" : "";
+
+ if (is_array($pool['ha_servers']))
+ $count = count($pool['ha_servers']['item']);
+ else
+ $count = 0;
+?>
+ <tr class="<?=$textgray?>">
+ <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
+ <?
+ if ($pool['stats_enabled']=='yes'){
+ echo "<img src=\"./themes/{$g['theme']}/images/icons/icon_log_s.gif\"" . ' title="stats enabled" width="11" height="15" border="0">';
+ }
+ $isadvset = "";
+ if ($pool['advanced']) $isadvset .= "Per server pass thru\r\n";
+ if ($pool['advanced_backend']) $isadvset .= "Backend pass thru\r\n";
+ if ($isadvset)
+ echo "<img src=\"$img_adv\" title=\"" . gettext("advanced settings set") . ": {$isadvset}\" border=\"0\">";
+ ?>
+ </td>
+ <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
+ <?=$pool['name'];?>
+ </td>
+ <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
+ <?=$count;?>
+ </td>
+ <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
+ <?=$a_checktypes[$pool['check_type']]['name'];?>
+ </td>
+ <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
+ <?=$fe_list;?>
+ </td>
+ <td class="list" nowrap>
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td valign="middle"><a href="haproxy_pool_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a></td>
+ <td valign="middle"><a href="haproxy_pools.php?act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this entry?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td>
+ <td valign="middle"><a href="haproxy_pool_edit.php?dup=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+<?php
+ $i++;
+ }
?>
- <tr>
- <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
- <?=$textss . $pool['name'] . $textse;?>
- </td>
- <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
- <?=$textss . $count . $textse;?>
- </td>
- <td class="listlr" ondblclick="document.location='haproxy_pool_edit.php?id=<?=$i;?>';">
- <?=$textss . $fe_list . $textse;?>
- </td>
- <td class="list" nowrap>
- <table border="0" cellspacing="0" cellpadding="1">
- <tr>
- <td valign="middle"><a href="haproxy_pool_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a></td>
- <td valign="middle"><a href="haproxy_pools.php?act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this entry?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td>
- <td valign="middle"><a href="haproxy_pool_edit.php?dup=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <?php $i++; endforeach; ?>
- <tfoot>
- <tr>
- <td class="list" colspan="3"></td>
- <td class="list">
- <table border="0" cellspacing="0" cellpadding="1">
- <tr>
- <td valign="middle"><a href="haproxy_pool_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
- </tr>
- </table>
- </td>
- </tr>
- </tfoot>
- </table>
- </div>
+ <tfoot>
+ <tr>
+ <td class="list" colspan="5"></td>
+ <td class="list">
+ <table border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td valign="middle"><a href="haproxy_pool_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+ </div>
</table>
- </form>
+ </form>
<?php include("fend.inc"); ?>
</body>
</html>
n1340' href='#n1340'>1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382