From 542958352ba0aafade6dfa2a6f0d71ec5a7f3e1f Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sun, 23 Oct 2022 01:36:36 +0200 Subject: [PATCH] net/haproxy: add support for FastCGI applications, closes #2769 --- net/haproxy/pkg-descr | 2 + .../HAProxy/Api/SettingsController.php | 27 ++++- .../OPNsense/HAProxy/IndexController.php | 3 +- .../OPNsense/HAProxy/forms/dialogAction.xml | 22 ++++ .../OPNsense/HAProxy/forms/dialogBackend.xml | 6 + .../OPNsense/HAProxy/forms/dialogFcgi.xml | 77 +++++++++++++ .../OPNsense/HAProxy/forms/dialogServer.xml | 7 ++ .../app/models/OPNsense/HAProxy/HAProxy.xml | 108 ++++++++++++++++++ .../app/models/OPNsense/HAProxy/Menu/Menu.xml | 1 + .../mvc/app/views/OPNsense/HAProxy/index.volt | 40 +++++++ .../templates/OPNsense/HAProxy/haproxy.conf | 80 ++++++++++++- 11 files changed, 369 insertions(+), 4 deletions(-) create mode 100644 net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFcgi.xml diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr index 2bb68861a..d675ec264 100644 --- a/net/haproxy/pkg-descr +++ b/net/haproxy/pkg-descr @@ -11,6 +11,8 @@ Plugin Changelog Added: * add support for req.ssl_hello_type (#2311) * add support for Prometheus exporter (#2764) +* add support for FastCGI applications (#2769) +* add server option to override the multiplexer protocol Fixed: * fix unix sockets in chrooted environment (#3093) 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 44ccd006c..4e0006f39 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 @@ -1,7 +1,7 @@ searchBase('luas.lua', array('enabled', 'name', 'description'), 'name'); } + public function getFcgiAction($uuid = null) + { + return $this->getBase('fcgi', 'fcgis.fcgi', $uuid); + } + + public function setFcgiAction($uuid) + { + return $this->setBase('fcgi', 'fcgis.fcgi', $uuid); + } + + public function addFcgiAction() + { + return $this->addBase('fcgi', 'fcgis.fcgi'); + } + + public function delFcgiAction($uuid) + { + return $this->delBase('fcgis.fcgi', $uuid); + } + + public function searchFcgisAction() + { + return $this->searchBase('fcgis.fcgi', array('name', 'description'), 'name'); + } + public function getErrorfileAction($uuid = null) { return $this->getBase('errorfile', 'errorfiles.errorfile', $uuid); 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 8e2b52f65..791f6bfe6 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 @@ -1,7 +1,7 @@ view->formDialogBackend = $this->getForm("dialogBackend"); $this->view->formDialogCpu = $this->getForm("dialogCpu"); $this->view->formDialogErrorfile = $this->getForm("dialogErrorfile"); + $this->view->formDialogFcgi = $this->getForm("dialogFcgi"); $this->view->formDialogFrontend = $this->getForm("dialogFrontend"); $this->view->formDialogGroup = $this->getForm("dialogGroup"); $this->view->formDialogHealthcheck = $this->getForm("dialogHealthcheck"); 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 f0a663f16..7a499dab8 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 @@ -448,4 +448,26 @@ dropdown + + + header + + + + action.fcgi_pass_header + + text + + + + + header + + + + action.fcgi_set_param + + text + Custom Log format rules. With this directive, it is possible to overwrite the value of default FastCGI parameters.]]> + diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml index cd1aec54e..7615ceb09 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml @@ -54,6 +54,12 @@ Type server name or choose from list. + + backend.linkedFcgi + + dropdown + + backend.linkedResolver diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFcgi.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFcgi.xml new file mode 100644 index 000000000..ffaec1d91 --- /dev/null +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFcgi.xml @@ -0,0 +1,77 @@ +
+ + fcgi.enabled + + checkbox + Enable this FastCGI application. + + + fcgi.name + + text + Name to identify this FastCGI application. + + + fcgi.description + + text + Description for this FastCGI application. + + + fcgi.docroot + + text + + + + fcgi.index + + text + + + + fcgi.path_info + + text + HAProxy's documentation for further details and examples.]]> + + + fcgi.log_stderr + + checkbox + + + + fcgi.keep_conn + + checkbox + + + + fcgi.get_values + + checkbox + + + + fcgi.mpxs_conns + + checkbox + + + + fcgi.max_reqs + + text + + + + fcgi.linkedActions + + select_multiple + + true + + Choose rules. + +
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml index 53190b12c..99db8ffab 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml @@ -95,6 +95,13 @@ dropdown
+ + server.multiplexer_protocol + + dropdown + + true + server.resolvePrefer diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml index 8a81ffce3..8289391d5 100644 --- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml +++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml @@ -911,6 +911,18 @@ Y N + + + + + Related fcgi item not found + N + N +