mirror of
https://github.com/opnsense/plugins.git
synced 2026-06-09 00:42:34 -04:00
net/haproxy: support unix sockets as server addresses, refs #2040
This commit is contained in:
parent
1aac7bde4b
commit
4d94864c93
3 changed files with 46 additions and 2 deletions
|
|
@ -67,9 +67,21 @@
|
|||
<help><![CDATA[Add resolver options. Use TAB key to complete typing.]]></help>
|
||||
<hint>Type option name or choose from list.</hint>
|
||||
</field>
|
||||
<field>
|
||||
<label>UNIX Socket</label>
|
||||
<type>header</type>
|
||||
<style>table_server_type table_server_type_unix</style>
|
||||
</field>
|
||||
<field>
|
||||
<id>server.unix_socket</id>
|
||||
<label>Frontend (Socket Origin)</label>
|
||||
<type>dropdown</type>
|
||||
<help>Select the frontend that provides the UNIX socket. This UNIX socket will be used as the server's address, making it possible to send connections to this frontend. Only frontends that provide the unix@ pattern as listen address can be selected.</help>
|
||||
</field>
|
||||
<field>
|
||||
<label>Common Options</label>
|
||||
<type>header</type>
|
||||
<style>table_server_type table_server_type_static table_server_type_template</style>
|
||||
</field>
|
||||
<field>
|
||||
<id>server.port</id>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<model>
|
||||
<mount>//OPNsense/HAProxy</mount>
|
||||
<version>3.3.0</version>
|
||||
<version>3.4.0</version>
|
||||
<description>the HAProxy load balancer</description>
|
||||
<items>
|
||||
<general>
|
||||
|
|
@ -1251,6 +1251,7 @@
|
|||
<OptionValues>
|
||||
<static>static</static>
|
||||
<template>template</template>
|
||||
<unix>unix socket</unix>
|
||||
</OptionValues>
|
||||
</type>
|
||||
<serviceName type="TextField">
|
||||
|
|
@ -1342,6 +1343,21 @@
|
|||
<advanced type="TextField">
|
||||
<Required>N</Required>
|
||||
</advanced>
|
||||
<unix_socket type="ModelRelationField">
|
||||
<Model>
|
||||
<template>
|
||||
<source>OPNsense.HAProxy.HAProxy</source>
|
||||
<items>frontends.frontend</items>
|
||||
<display>name</display>
|
||||
<filters>
|
||||
<bind>/unix@/</bind>
|
||||
</filters>
|
||||
</template>
|
||||
</Model>
|
||||
<ValidationMessage>Related frontend item not found</ValidationMessage>
|
||||
<Required>N</Required>
|
||||
<Multiple>N</Multiple>
|
||||
</unix_socket>
|
||||
</server>
|
||||
</servers>
|
||||
<healthchecks>
|
||||
|
|
|
|||
|
|
@ -1657,13 +1657,29 @@ backend {{backend.name}}
|
|||
# ERROR: server data not found ({{server}})
|
||||
{% else %}
|
||||
{# # check if all required server parameters are set #}
|
||||
{% if (server_data.type|default("") == 'static' and server_data.address|default("") == '') or (server_data.type|default("") == 'template' and (server_data.serviceName|default("") == '' or server_data.number|default("") == '')) %}
|
||||
{% if (server_data.type|default("") == 'static' and server_data.address|default("") == '') or (server_data.type|default("") == 'template' and (server_data.serviceName|default("") == '' or server_data.number|default("") == '')) or (server_data.type|default("") == 'unix' and server_data.unix_socket|default("") == '') %}
|
||||
# ERROR: server is invalid, required parameters not set ({{server_data.name}})
|
||||
{% else %}
|
||||
{# # server type #}
|
||||
{% set server_basics = [] %}
|
||||
{% if server_data.type|default("") == 'template' %}
|
||||
{% do server_basics.append('server-template ' ~ server_data.name ~ ' ' ~ server_data.number ~ ' ' ~ server_data.serviceName) %}
|
||||
{% elif server_data.type|default("") == 'unix' %}
|
||||
{# # extract unix socket information from frontend #}
|
||||
{% set frontend_data = helpers.getUUID(server_data.unix_socket) %}
|
||||
{% set socket_path = "" %}
|
||||
{% for bind in frontend_data.bind.split(",") %}
|
||||
{# # check if this is a unix socket #}
|
||||
{% set unix_bind = bind | regex_replace ("^unix@.*","TRUE") %}
|
||||
{% if unix_bind == "TRUE" %}
|
||||
{# # extract socket name and add full path #}
|
||||
{% set socket_name = bind | regex_replace ("^unix@","") %}
|
||||
{% set socket_path = "unix@/tmp/haproxy/sockets/" ~ socket_name %}
|
||||
{% do server_basics.append('server ' ~ server_data.name ~ ' ' ~ socket_path) %}
|
||||
{# # only the first unix socket is considered #}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% do server_basics.append('server ' ~ server_data.name ~ ' ' ~ server_data.address) %}
|
||||
{% endif %}
|
||||
|
|
|
|||
Loading…
Reference in a new issue