diff --git a/net/haproxy/Makefile b/net/haproxy/Makefile
index e4f47a08c..a27f03962 100644
--- a/net/haproxy/Makefile
+++ b/net/haproxy/Makefile
@@ -1,5 +1,5 @@
PLUGIN_NAME= haproxy
-PLUGIN_VERSION= 2.23
+PLUGIN_VERSION= 2.24
PLUGIN_COMMENT= Reliable, high performance TCP/HTTP load balancer
PLUGIN_DEPENDS= haproxy20
PLUGIN_MAINTAINER= opnsense@moov.de
diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr
index 5a41f6ad0..be9ec9837 100644
--- a/net/haproxy/pkg-descr
+++ b/net/haproxy/pkg-descr
@@ -3,4 +3,244 @@ availability, load balancing, and proxying for TCP and HTTP-based
applications. It is particularly suited for web sites crawling under
very high loads while needing persistence or Layer7 processing.
-WWW: https://haproxy.org/
+Plugin Changelog
+================
+
+2.24
+
+Added:
+* add support for http-request set-var and http-response set-var (#1796)
+* add group as userlist to HAProxy config to make it usable in rules/conditions (#1796)
+* add support for resolvers to customize how HAProxy handles name resolution (#1787)
+* add support for init-addr to allow HAProxy to start when DNS does not resolve (#1787)
+
+Fixed:
+* honor sort order of all rules, remove special handling of "use_[backend|server]" options (#1925)
+
+Changed:
+* add "Save & Test syntax" button to all "Settings" pages
+* add "introduction" page for Settings tab
+* streamine "Settings" subtabs
+
+2.23
+
+Fixed:
+* add missing acl SNI regex text field (#1883)
+
+2.22
+
+Added:
+* enable SSL verification for a server when "Force SSL" is enabled in the associated health check (#1761)
+* use the systems local Root CA Certificates for SSL verification when no CA was selected (#1761)
+
+Fixed:
+* fix label of src_sess_cnt (#1780)
+* fix invalid use of option httplog (resolves a warning in config test)
+* fix invalid use of option forwardfor (resolves a warning in config test)
+
+2.21
+
+Fixed:
+* override "graceful" restart if required (#1745)
+
+2.20
+
+Changed:
+* update stats socket permission for easier (non-root) monitoring (#1232)
+
+2.19
+
+Added:
+* switch to HAProxy 2.0 release series (#1089)
+* add support for the "max-object-size" cache configuration option (#1458)
+* add end-to-end HTTP/2 support (details)
+* add support for the random balancing algorithm (details)
+
+Fixed:
+* fix IPv6 validation in frontends (#540)
+
+Changed:
+* add IPv6 example to listen address help text
+* update URLs to HAProxy 2.0 documentation
+* frontends: move HTTP/2 option to HTTP settings
+* change order of frontend options
+
+2.18
+
+Added:
+* add support for HAProxy cache (#1442)
+
+Changed:
+* change http-reuse default (align with HAProxy's default value, #1439)
+
+2.17
+
+Added:
+* allow backends without servers (#1304)
+* add support for deciphered SNI check in ACLs (#1365)
+* allow to force SSL for health checks (#1282)
+
+Changed:
+* improve wording for SNI conditions to differentiate between deciphered vs. not deciphered
+
+2.16
+
+Fixed:
+* allow hyphens in server, frontend and backend names (#1346)
+
+2.15
+
+Added:
+* rules can finally be sorted by using drag'n'drop (#582)
+* added "enabled" field to servers (#1208)
+* TCP inspection delays are supported in rules (#1188)
+
+Changed:
+* server option "mode" is always visible, no longer requires "advanced mode" (#1208)
+* most dropdown fields finally have alphanumeric sorting (#687, opnsense/core#3251)
+* rules: align indentation of comments in haproxy.conf
+
+2.14
+
+Fixed:
+* bulk deleting does not work (#1164)
+
+Changed:
+* migrate to mutable controller (required to fix #1164)
+
+2.13
+
+Added:
+* support multiple CAs for SSL verification for servers
+
+Fixed:
+* fix export of CAs (#1074)
+
+Changed:
+* export a frontend's default SSL certificate (#1088)
+* it is no longer required to add a default SSL certificate to a frontend's "certificates" list (#1088)
+* avoid duplicate entry in certlist file if a default SSL certificate is specified
+* always show "Default certificate" option in frontends, it's no longer an "advanced" option
+
+2.12
+
+Added:
+* add support for HTTP/2 (#1047)
+
+2.11
+
+Fixed:
+* fix warning: a 'http-request' rule placed after a 'use_backend' rule will still be processed before (#999)
+* fix wrong parameter name when using tcp-request content lua (#999)
+
+Changed:
+* internal: trim whitespace, remove empty lines in haproxy.conf (#999)
+
+2.10
+
+Added:
+* add support for multithreading (available as new option in Settings -> Global Parameters) (#1003)
+* add support for client certificate authentication (#426)
+* add support for HTTP Basic Auth to frontends/backends/ACLs (#300)
+* add basic user/group management functionality (supports Basic Auth as well as stats users)
+* add new CPU Affinity Rules feature (which is a combination of HAProxy's cpu-map, bind-process and process options) (see #1003 for a short explanation)
+
+Fixed:
+* function "http-request header-delete" generated a corrupted haproxy.conf (#882)
+
+Changed:
+* migrate all stats users from old (and cumbersome) username:password format to new user management feature
+* internal: use /tmp for autogenerated files (now they are automatically cleaned up on boot)
+* internal: change filename of cert lists from id.crtlist to id.certlist
+
+2.9
+
+Added:
+* add "http-reuse" option (#836)
+
+2.8
+
+Added:
+* support truly seamless reloads (#224)
+* add support for the "map" feature (#180)
+
+Fixed:
+* fix reload of service template in "reconfigure" action (#690; introduced in 7381101)
+* enabling "hard stop" mode resulted in an invalid "hardrestart" RC command
+
+Changed:
+* use "reload" instead of "restart" RC action
+* if "reload" fails, also issue a "restart" command (required when enabling seamless reloads)
+* start progress animation (spinner) earlier when applying settings
+
+2.7
+
+Added:
+* support rise/fall parameters in backends and health checks
+* support set-path in ACLs
+* support for cookie-based persistence (#680)
+
+Fixed:
+* fix X-Forwarded-For option disappeared (#647)
+* fix validation for source address fields (#695)
+
+2.6
+
+Added:
+* add support for http-response set-status in ACLs to manipulate HTTP status codes
+
+Fixed:
+* fix invalid backend name when using nbsrv in ACLs
+
+2.5
+
+Added:
+* add support for the PROXY protocol (i.e. in combination with postfix or dovecot)
+* switch to HAProxy 1.8.4
+
+2.4
+
+Added:
+* add support for "preload" and "includeSubDomains" HSTS options (#447)
+* support session sync / HAProxy peers (#165)
+* add new HTTP timeout options (to mitigate slowloris attacks) (#202)
+* allow tracking additional values in stick-tables (#202)
+* add stick-table config for frontends (optional, disabled by default) (#202)
+* add support for many new conditions (#202)
+* enable sticky counters for frontend stick-tables (required for new conditions) (#202)
+
+Changed:
+* relax validation masks for several "name" fields (to allow more "special" characters)
+* switch to new mutable service controller
+
+2.3
+
+Added:
+* new option to hide introduction pages (#340)
+
+Fixed:
+* fix wrong introduction for "Advanced" tab (regression introduced in 8cdcbda)
+
+2.2
+
+Fixed:
+* fix for rules parameters (values could not be saved, leading to invalid rules)
+
+2.1
+
+Fixed:
+* do not enable HSTS unconditionally (now works as described in #380)
+* enable HSTS only for HTTP frontends
+
+2.0
+
+Added:
+* new GUI to guide new users and improve general usability (#208)
+* make server port optional (#341)
+* new SSL settings for frontends (#380)
+* new global SSL default values (#380)
+* new option for HTTP Strict Transport Security (#380)
+
+Fixed:
+* rephrase text to make it clear that aliases cannot be used (#360)
+* rephrase text to make it clear that "use_server" will only work for backends (#361)
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php
index 7779d14d5..ef5f8f65d 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php
@@ -379,4 +379,34 @@ class SettingsController extends ApiMutableModelControllerBase
{
return $this->searchBase('users.user', array('enabled', 'name', 'description'), 'name');
}
+
+ public function getresolverAction($uuid = null)
+ {
+ return $this->getBase('resolver', 'resolvers.resolver', $uuid);
+ }
+
+ public function setresolverAction($uuid)
+ {
+ return $this->setBase('resolver', 'resolvers.resolver', $uuid);
+ }
+
+ public function addresolverAction()
+ {
+ return $this->addBase('resolver', 'resolvers.resolver');
+ }
+
+ public function delresolverAction($uuid)
+ {
+ return $this->delBase('resolvers.resolver', $uuid);
+ }
+
+ public function toggleresolverAction($uuid, $enabled = null)
+ {
+ return $this->toggleBase('resolvers.resolver', $uuid);
+ }
+
+ public function searchresolversAction()
+ {
+ return $this->searchBase('resolvers.resolver', array('enabled', 'name', 'nameservers'), 'name');
+ }
}
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/IndexController.php b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/IndexController.php
index 020301521..141fac3e5 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/IndexController.php
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/IndexController.php
@@ -44,19 +44,26 @@ class IndexController extends \OPNsense\Base\IndexController
public function indexAction()
{
// include form definitions
- $this->view->mainForm = $this->getForm("main");
- $this->view->formDialogFrontend = $this->getForm("dialogFrontend");
- $this->view->formDialogBackend = $this->getForm("dialogBackend");
- $this->view->formDialogServer = $this->getForm("dialogServer");
- $this->view->formDialogHealthcheck = $this->getForm("dialogHealthcheck");
- $this->view->formDialogAction = $this->getForm("dialogAction");
$this->view->formDialogAcl = $this->getForm("dialogAcl");
- $this->view->formDialogUser = $this->getForm("dialogUser");
- $this->view->formDialogGroup = $this->getForm("dialogGroup");
- $this->view->formDialogLua = $this->getForm("dialogLua");
- $this->view->formDialogErrorfile = $this->getForm("dialogErrorfile");
- $this->view->formDialogMapfile = $this->getForm("dialogMapfile");
+ $this->view->formDialogAction = $this->getForm("dialogAction");
+ $this->view->formDialogBackend = $this->getForm("dialogBackend");
$this->view->formDialogCpu = $this->getForm("dialogCpu");
+ $this->view->formDialogErrorfile = $this->getForm("dialogErrorfile");
+ $this->view->formDialogFrontend = $this->getForm("dialogFrontend");
+ $this->view->formDialogGroup = $this->getForm("dialogGroup");
+ $this->view->formDialogHealthcheck = $this->getForm("dialogHealthcheck");
+ $this->view->formDialogLua = $this->getForm("dialogLua");
+ $this->view->formDialogMapfile = $this->getForm("dialogMapfile");
+ $this->view->formDialogResolver = $this->getForm("dialogResolver");
+ $this->view->formDialogServer = $this->getForm("dialogServer");
+ $this->view->formDialogUser = $this->getForm("dialogUser");
+ $this->view->generalCacheForm = $this->getForm("generalCache");
+ $this->view->generalDefaultsForm = $this->getForm("generalDefaults");
+ $this->view->generalLoggingForm = $this->getForm("generalLogging");
+ $this->view->generalPeersForm = $this->getForm("generalPeers");
+ $this->view->generalSettingsForm = $this->getForm("generalSettings");
+ $this->view->generalStatsForm = $this->getForm("generalStats");
+ $this->view->generalTuningForm = $this->getForm("generalTuning");
// set additional view parameters
$mdlHAProxy = new \OPNsense\HAProxy\HAProxy();
$this->view->showIntro = (string)$mdlHAProxy->general->showIntro;
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml
index 5a7881def..c10565e9f 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml
@@ -203,6 +203,28 @@
{{ lang._('Please be aware that you need to %smanually%s add the required firewall rules for all configured services.') | format('', '') }}
{{ lang._('Further information is available in our %sHAProxy plugin documentation%s and of course in the %sofficial HAProxy documentation%s. Be sure to report bugs and request features on our %sGitHub issue page%s. Code contributions are also very welcome!') | format('', '', '', '', '', '') }}
@@ -617,6 +707,24 @@ POSSIBILITY OF SUCH DAMAGE. +{{ lang._("Manage HAProxy core configuration:") }}
+{{ lang._("For more details visit HAProxy's official documentation regarding the %sStatistics%s, %sCache%s and %sPeers%s features.") | format('', '', '', '', '', '') }}
+{{ lang._("For more details visit HAProxy's official documentation regarding the %sError Messages%s, %sLua Script%s and the %sMap Files%s features. More information on HAProxy's CPU Affinity is also available %shere%s, %shere%s and %shere%s.") | format('', '', '', '', '', '' ,'', '' ,'', '' ,'', '') }}
+{{ lang._("For more details visit HAProxy's official documentation regarding the %sError Messages%s, %sLua Script%s and the %sMap Files%s features. More information on HAProxy's CPU Affinity is also available %shere%s, %shere%s and %shere%s. A detailed explanation of the resolvers feature can be found %shere%s.") | format('', '', '', '', '', '' ,'', '' ,'', '' ,'', '','', '') }}
| {{ lang._('Resolver ID') }} | +{{ lang._('Enabled') }} | +{{ lang._('Name') }} | +{{ lang._('Nameservers') }} | +{{ lang._('Commands') }} | +{{ lang._('ID') }} | +
|---|---|---|---|---|---|
| + | + + + | +