aboutsummaryrefslogtreecommitdiffstats
path: root/config/haproxy-devel
diff options
context:
space:
mode:
authorPiBa-NL <pba_2k3@yahoo.com>2015-11-01 02:30:39 +0100
committerPiBa-NL <pba_2k3@yahoo.com>2015-11-01 02:30:39 +0100
commitc79cec7933f3a3906ef8903ca5ddcf28be30d1f2 (patch)
tree768b5e277bbfa88bb546399d94238fc2a6489c90 /config/haproxy-devel
parente1fa969219ad8e25940fb020e32fbb5c4143a2e0 (diff)
downloadpfsense-packages-c79cec7933f3a3906ef8903ca5ddcf28be30d1f2.tar.gz
pfsense-packages-c79cec7933f3a3906ef8903ca5ddcf28be30d1f2.tar.bz2
pfsense-packages-c79cec7933f3a3906ef8903ca5ddcf28be30d1f2.zip
haproxy-devel, user gui permissions, show backend usage, use-server action
Diffstat (limited to 'config/haproxy-devel')
-rw-r--r--config/haproxy-devel/haproxy.priv.inc50
-rw-r--r--config/haproxy-devel/haproxy.xml4
-rw-r--r--config/haproxy-devel/pkg/haproxy.inc8
-rw-r--r--config/haproxy-devel/pkg/haproxy_htmllist.inc16
-rw-r--r--config/haproxy-devel/www/haproxy_listeners.php60
-rw-r--r--config/haproxy-devel/www/haproxy_listeners_edit.php4
6 files changed, 98 insertions, 44 deletions
diff --git a/config/haproxy-devel/haproxy.priv.inc b/config/haproxy-devel/haproxy.priv.inc
new file mode 100644
index 00000000..e4914db8
--- /dev/null
+++ b/config/haproxy-devel/haproxy.priv.inc
@@ -0,0 +1,50 @@
+<?php
+/*
+ haproxy.priv.inc
+ part of pfSense (http://www.pfSense.org/)
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+global $priv_list;
+
+$priv_list['page-service-haproxy'] = array();
+$priv_list['page-service-haproxy']['name'] = "WebCfg - Services: HAProxy package";
+$priv_list['page-service-haproxy']['descr'] = "Allow access to HAProxy package GUI";
+$priv_list['page-service-haproxy']['match'] = array();
+
+$priv_list['page-service-haproxy']['match'][] = "haproxy_files.php*";
+$priv_list['page-service-haproxy']['match'][] = "haproxy_global.php*";
+$priv_list['page-service-haproxy']['match'][] = "haproxy_listeners.php*";
+$priv_list['page-service-haproxy']['match'][] = "haproxy_listeners_edit.php*";
+$priv_list['page-service-haproxy']['match'][] = "haproxy_pool_edit.php*";
+$priv_list['page-service-haproxy']['match'][] = "haproxy_pools.php*";
+$priv_list['page-service-haproxy']['match'][] = "haproxy_templates.php*";
+
+$priv_list['page-service-haproxy-stats'] = array();
+$priv_list['page-service-haproxy-stats']['name'] = "WebCfg - Services: HAProxy package stats";
+$priv_list['page-service-haproxy-stats']['descr'] = "Allow access to HAProxy package GUI stats";
+$priv_list['page-service-haproxy-stats']['match'] = array();
+$priv_list['page-service-haproxy-stats']['match'][] = "haproxy_stats.php*";
+
+?> \ No newline at end of file
diff --git a/config/haproxy-devel/haproxy.xml b/config/haproxy-devel/haproxy.xml
index ddafe45d..784e0034 100644
--- a/config/haproxy-devel/haproxy.xml
+++ b/config/haproxy-devel/haproxy.xml
@@ -146,6 +146,10 @@
<prefix>/usr/local/www/javascript/</prefix>
<item>https://packages.pfsense.org/packages/config/haproxy-devel/www/javascript/haproxy_geturl.js</item>
</additional_files_needed>
+ <additional_files_needed>
+ <prefix>/etc/inc/priv/</prefix>
+ <item>https://packages.pfsense.org/packages/config/haproxy-devel/haproxy.priv.inc</item>
+ </additional_files_needed>
<custom_php_install_command>
haproxy_custom_php_install_command();
</custom_php_install_command>
diff --git a/config/haproxy-devel/pkg/haproxy.inc b/config/haproxy-devel/pkg/haproxy.inc
index ba36c089..d9f8242e 100644
--- a/config/haproxy-devel/pkg/haproxy.inc
+++ b/config/haproxy-devel/pkg/haproxy.inc
@@ -241,10 +241,14 @@ $a_filestype['writetodisk'] = array('name' => "Write to disk");
global $a_action;
$a_action = array();
//
-$a_action["use_backend"] = array('name' => "Use Backend", 'mode' => '', 'syntax' => 'use_backend {backend}',
+$a_action["use_backend"] = array('name' => "Use Backend", 'mode' => '', 'syntax' => 'use_backend {backend}', 'usage' => 'frontend',
'fields' => array(
'backend' => array('name'=>"backend",'columnheader'=>"Backend",'type'=>"select",'size'=>"50",'mask'=>'backend')
));
+$a_action["use_server"] = array('name' => "Use Server", 'mode' => '', 'syntax' => 'use-server {server}', 'usage' => 'backend',
+ 'fields' => array(
+ 'server' => array('name'=>"server",'columnheader'=>"Server",'type'=>"select",'size'=>"50",'mask'=>'server')
+ ));
//
$a_action["custom"] = array('name' => "Custom", 'mode' => '',
'fields' => array(
@@ -356,7 +360,7 @@ $a_action["tcp-response_content_accept"] = array('name' => "tcp-response content
$a_action["tcp-response_content_close"] = array('name' => "tcp-response content close", 'mode'=> '', 'syntax' => 'tcp-response content close');
$a_action["tcp-response_content_reject"] = array('name' => "tcp-response content reject", 'mode'=> '', 'syntax' => 'tcp-response content reject');
if (haproxy_version() >= '1.6') {
- $a_action["tcp-response_content_lua"] = array('name' => "tcp-response content lua script", 'mode'=> '', 'syntax' => 'tcp-response content lua.{lua-function}',
+ $a_action["tcp-response_content_lua"] = array('name' => "tcp-response content lua script", 'mode'=> '', 'syntax' => 'tcp-response content lua.{lua-function}', 'usage' => 'backend',
'fields' => array(
'lua-function' => array('name'=>"lua-function",'columnheader'=>"lua function",'type'=>"textbox",'size'=>"50",'mask'=>'lua-function')
));
diff --git a/config/haproxy-devel/pkg/haproxy_htmllist.inc b/config/haproxy-devel/pkg/haproxy_htmllist.inc
index 4abfedd8..4e8ce428 100644
--- a/config/haproxy-devel/pkg/haproxy_htmllist.inc
+++ b/config/haproxy-devel/pkg/haproxy_htmllist.inc
@@ -88,20 +88,21 @@ class HaproxyHtmlList
}
if ($add_item) {
if ($this->keyfield != "") {
- if (isset($_POST[$this->tablename."_key".$x]))
+ if (isset($_POST[$this->tablename."_key".$x])) {
$key = $_POST[$this->tablename."_key".$x];
- else {
+ } else {
$key = $_POST[$this->tablename.$this->keyfield.$x];
- }
+ }
} else {
$key = "";
}
$index = $_POST[$this->tablename."_rowindex".$x];
$value['_index'] = $index;
- if (isset($values[$key]))
+ if (isset($values[$key])) {
$values[] = $value;
- else
+ } else {
$values[$key] = $value;
+ }
}
}
usort($values, 'sort_index');
@@ -195,13 +196,12 @@ class HaproxyHtmlList
<img src='/themes/{$g['theme']}/images/icons/icon_e.gif' title='edit entry' width='17' height='17' border='0' onclick='editRow({$counter}); return false;' />
</td>
<td valign='middle'>
- <input name='{$tablename}_rowindex{$counter}' id='{$tablename}_rowindex{$counter}' type='hidden' value='{$counter}' />
<img src='/themes/{$g['theme']}/images/icons/icon_x.gif' title='delete entry' width='17' height='17' border='0' onclick='deleteRow({$counter}, \"{$tablename}\"); return false;' />
</td>
<td valign='middle'>
<img src='/themes/{$g['theme']}/images/icons/icon_plus.gif' title='duplicate entry' width='17' height='17' border='0' onclick='dupRow({$counter}, \"{$tablename}\"); return false;' />
</td>";
- if (empty($this->keyfield)) {
+ if (empty($this->noindex)) {
echo "<td valign='middle'>
<img src='/themes/{$g['theme']}/images/icons/icon_up.gif' title='move row up' width='17' height='17' border='0' onclick='moveRowUp({$counter}, \"{$tablename}\"); return false;' />
</td>
@@ -237,7 +237,7 @@ class HaproxyHtmlList
<td valign='middle'>
<img src='/themes/{$g['theme']}/images/icons/icon_plus.gif' title='duplicate entry' width='17' height='17' border='0' onclick='dupRow({$counter}, \"{$tablename}\"); return false;' />
</td>";
- if (empty($this->keyfield)) {
+ if (empty($this->noindex)) {
echo "<td valign='middle'>
<img src='/themes/{$g['theme']}/images/icons/icon_up.gif' title='move row up' width='17' height='17' border='0' onclick='moveRowUp({$counter}, \"{$tablename}\"); return false;' />
</td>
diff --git a/config/haproxy-devel/www/haproxy_listeners.php b/config/haproxy-devel/www/haproxy_listeners.php
index 5aef0a82..c7288e7d 100644
--- a/config/haproxy-devel/www/haproxy_listeners.php
+++ b/config/haproxy-devel/www/haproxy_listeners.php
@@ -93,6 +93,28 @@ if ($_GET['act'] == "del") {
}
}
+function haproxy_userlist_backend_servers($backendname) {
+ //used for hint title text when hovering mouse over a backend name
+ global $a_servermodes;
+ $backend_servers = "";
+ $backend = get_backend($backendname);
+ if ($backend && is_array($backend['ha_servers']) && is_array($backend['ha_servers']['item'])){
+ $servers = $backend['ha_servers']['item'];
+ $backend_servers = sprintf(gettext("Servers in \"%s\" pool:"), $backendname);
+ if (is_array($servers)){
+ foreach($servers as $server){
+ $srvstatus = $server['status'];
+ $status = $a_servermodes[$srvstatus]['sign'];
+ if (isset($server['forwardto']) && $server['forwardto'] != "")
+ $backend_servers .= "\n{$status}[{$server['forwardto']}]";
+ else
+ $backend_servers .= "\n{$status}{$server['address']}:{$server['port']}";
+ }
+ }
+ }
+ return $backend_servers;
+}
+
$pgtitle = "Services: HAProxy: Frontends";
include("head.inc");
haproxy_css();
@@ -238,24 +260,6 @@ function js_callback(req) {
if ($frontend['advanced']) $isadvset .= "Advanced pass thru setting used\r\n";
if ($isadvset)
echo "<img src=\"$img_adv\" title=\"" . gettext("Advanced settings set") . ": {$isadvset}\" border=\"0\" />";
-
- $backend_serverpool_hint = "";
- $backend_serverpool = $frontend['backend_serverpool'];
- $backend = get_backend($backend_serverpool);
- if ($backend && is_array($backend['ha_servers']) && is_array($backend['ha_servers']['item'])){
- $servers = $backend['ha_servers']['item'];
- $backend_serverpool_hint = gettext("Servers in pool:");
- if (is_array($servers)){
- foreach($servers as $server){
- $srvstatus = $server['status'];
- $status = $a_servermodes[$srvstatus]['sign'];
- if (isset($server['forwardto']) && $server['forwardto'] != "")
- $backend_serverpool_hint .= "\n{$status}[{$server['forwardto']}]";
- else
- $backend_serverpool_hint .= "\n{$status}{$server['address']}:{$server['port']}";
- }
- }
- }
?>
</td>
<td class="listr" ondblclick="document.location='haproxy_listeners_edit.php?id=<?=$frontendname;?>';">
@@ -296,37 +300,29 @@ function js_callback(req) {
?>
</td>
<td class="listr" ondblclick="document.location='haproxy_listeners_edit.php?id=<?=$frontendname;?>';">
- <div title='<?=$backend_serverpool_hint;?>'>
<?
- $first = true;
if (is_array($frontend['a_actionitems']['item'])) {
foreach ($frontend['a_actionitems']['item'] as $actionitem) {
if ($actionitem['action'] == "use_backend") {
- if ($first) {
- $first = false;
- } else {
- echo "<br/>";
- }
$backend = $actionitem['use_backendbackend'];
+ $hint = haproxy_userlist_backend_servers($backend);
+ echo "<div title='{$hint}'>";
echo "<a href='haproxy_pool_edit.php?id={$backend}'>{$backend}</a>";
-
if (!empty($actionitem['acl'])) {
echo "&nbsp;if({$actionitem['acl']})";
}
+ echo "<br/></div>";
}
}
}
+ $hint = haproxy_userlist_backend_servers($frontend['backend_serverpool']);
$backend = $frontend['backend_serverpool'];
if (!empty($backend)) {
- if ($first) {
- $first = false;
- } else {
- echo "<br/>";
- }
+ echo "<div title='{$hint}'>";
echo "<a href='haproxy_pool_edit.php?id={$backend}'>{$backend}</a> (default)";
+ echo "<br/></div>";
}
?>
- </div>
</td>
<td class="list" nowrap>
<table border="0" cellspacing="0" cellpadding="1">
diff --git a/config/haproxy-devel/www/haproxy_listeners_edit.php b/config/haproxy-devel/www/haproxy_listeners_edit.php
index 799cb3cd..9d2b0b05 100644
--- a/config/haproxy-devel/www/haproxy_listeners_edit.php
+++ b/config/haproxy-devel/www/haproxy_listeners_edit.php
@@ -253,11 +253,11 @@ $htmllist_extaddr->editmode = true;
$htmllist_acls = new HaproxyHtmlList("table_acls", $fields_aclSelectionList);
$htmllist_acls->fields_details = $fields_acl_details;
-$htmllist_acls->editmode = true;
+//$htmllist_acls->editmode = true;
$htmllist_actions = new HaproxyHtmlList("table_actions", $fields_actions);
$htmllist_actions->fields_details = $fields_actions_details;
-$htmllist_actions->keyfield = "name";
+//$htmllist_actions->keyfield = "name";
//$htmllist_actions->editmode = true;
$htmllist_sslCertificates = new HaproxyHtmlList("tbl_sslCerts", $fields_sslCertificates);