aboutsummaryrefslogtreecommitdiffstats
path: root/config/haproxy-devel/pkg/haproxy_upgrade_config.inc
diff options
context:
space:
mode:
authorPiBa-NL <pba_2k3@yahoo.com>2015-10-24 17:12:29 +0200
committerPiBa-NL <pba_2k3@yahoo.com>2015-10-24 17:20:51 +0200
commite1dda0cf2125650b29f07d6931f133cfc58fce57 (patch)
tree6d0434ebe4100e3f8f566579a4bc6ea962db533e /config/haproxy-devel/pkg/haproxy_upgrade_config.inc
parent914bc8d64109a36d7f1182cb048d39cb409c8433 (diff)
downloadpfsense-packages-e1dda0cf2125650b29f07d6931f133cfc58fce57.tar.gz
pfsense-packages-e1dda0cf2125650b29f07d6931f133cfc58fce57.tar.bz2
pfsense-packages-e1dda0cf2125650b29f07d6931f133cfc58fce57.zip
haproxy-devel, pkg v0.32 allow usage of mailers/dns/'actions', rework of acl system.
Diffstat (limited to 'config/haproxy-devel/pkg/haproxy_upgrade_config.inc')
-rw-r--r--config/haproxy-devel/pkg/haproxy_upgrade_config.inc73
1 files changed, 72 insertions, 1 deletions
diff --git a/config/haproxy-devel/pkg/haproxy_upgrade_config.inc b/config/haproxy-devel/pkg/haproxy_upgrade_config.inc
index c1c951df..58e66852 100644
--- a/config/haproxy-devel/pkg/haproxy_upgrade_config.inc
+++ b/config/haproxy-devel/pkg/haproxy_upgrade_config.inc
@@ -1,6 +1,6 @@
<?php
/*
- haproxy.inc
+ haproxy_upgrade_config.inc
Copyright (C) 2015 PiBa-NL
All rights reserved.
@@ -26,7 +26,9 @@
POSSIBILITY OF SUCH DAMAGE.
*/
+require_once("haproxy_utils.inc");
require_once("pkg-utils.inc");
+require_once("haproxy.inc");
function haproxy_upgrade_config() {
global $config, $static_output;
@@ -193,6 +195,75 @@ function haproxy_upgrade_config() {
}
$configversion = "00.19";
}
+ if ($configversion < "00.32") {
+ $frontends = array();
+ foreach ($config['installedpackages']['haproxy']['ha_backends']['item'] as &$frontend) {
+ $primaryfrontend = get_primaryfrontend($frontend);
+ $fe_name = $primaryfrontend['name'];
+ $frontends[$fe_name][] = &$frontend;
+ }
+
+ foreach ($frontends as $primary) {
+ $acl_count = array();
+ foreach ($primary as &$frontend){
+ $acl_use = array();
+ $a_actions = &$frontend['a_actionitems']['item'];
+ if (!is_array($a_actions)) {
+ $a_actions = array();
+ }
+
+ $primaryfrontend = get_primaryfrontend($frontend);
+ $frontendtype = $primaryfrontend['type'];
+ $is_default = true;
+ if (is_array($frontend['ha_acls']['item'])) {
+ $a_acl = &$frontend['ha_acls']['item'];
+
+ foreach ($a_acl as &$aclitem) {
+ $aclname = $aclitem['name'];
+ $acltype = haproxy_find_acl($aclitem['expression']);
+ if ($aclitem['expression'] == "backendservercount") {
+ $aclitem['backendservercountbackend'] = $frontend['backend_serverpool'];
+ }
+ if (!isset($acl_count[$aclname])) {
+ $acl_count[$aclname] = 1;
+ } else {
+ $acl_count[$aclname] += 1;
+ $aclitem['name'] .= "_{$acl_count[$aclname]}";
+ }
+ if (!isset($acltype))
+ continue;
+ if ($acltype['mode'] != '' && $acltype['mode'] != strtolower($frontendtype)) {
+ continue;
+ }
+ $acl_use[$aclname][] = $aclitem['name'];
+ }
+ foreach ($acl_use as $key => $acl_x) {
+ $aclx = $acl_count[$key];
+ $aclnames = "";
+ foreach($acl_x as $aclname) {
+ $aclnames .= " $aclname";
+ }
+ $aclnames = trim($aclnames);
+ $action['action'] = 'use_backend';
+ $action['use_backendbackend'] = $frontend['backend_serverpool'];
+ $action['acl'] = $aclnames;
+ $a_actions[] = $action;
+ $is_default = false;
+ }
+ }
+ if (!$is_default) {
+ /*
+ // default backends still exist ;) no need to convert them to 'actions'.
+ $action['action'] = 'use_backend';
+ $action['use_backendbackend'] = $frontend['backend_serverpool'];
+ $action['acl'] = ""; // default backend has no acl
+ $a_actions[] = $action;*/
+ $frontend['backend_serverpool'] = "";
+ }
+ }
+ }
+ $configversion = "00.32";
+ }
$writeconfigupdate = $config['installedpackages']['haproxy']['configversion'] <> $configversion;
if ($writeconfigupdate) {