diff --git a/net/haproxy/src/etc/rc.syshook.d/50-haproxy.stop b/net/haproxy/src/etc/rc.syshook.d/50-haproxy.stop new file mode 100755 index 000000000..e05a629cd --- /dev/null +++ b/net/haproxy/src/etc/rc.syshook.d/50-haproxy.stop @@ -0,0 +1,3 @@ +#!/bin/sh + +/usr/local/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh stop diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/main.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/main.xml index 33aa176c7..66a0b4b57 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/main.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/main.xml @@ -11,6 +11,12 @@ checkbox Enable or disable the HAProxy service. + + haproxy.general.gracefulStop + + checkbox + + 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 aed80b1e6..e33063dea 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 @@ -1,5 +1,6 @@ //OPNsense/HAProxy + 1.0.0 the HAProxy load balancer @@ -9,6 +10,10 @@ 0 Y + + 0 + Y + 0 diff --git a/net/haproxy/src/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh b/net/haproxy/src/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh new file mode 100755 index 000000000..163448ab3 --- /dev/null +++ b/net/haproxy/src/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +if [ -f /etc/rc.conf.d/haproxy ]; then +. /etc/rc.conf.d/haproxy +fi + +case "$1" in +stop|restart) + if [ "${haproxy_hardstop}" == "YES" ]; then + rcprefix="hard" + fi + ;; +esac + +/usr/local/etc/rc.d/haproxy ${rcprefix}${1} diff --git a/net/haproxy/src/opnsense/service/conf/actions.d/actions_haproxy.conf b/net/haproxy/src/opnsense/service/conf/actions.d/actions_haproxy.conf index a40d035d7..1ee61b638 100644 --- a/net/haproxy/src/opnsense/service/conf/actions.d/actions_haproxy.conf +++ b/net/haproxy/src/opnsense/service/conf/actions.d/actions_haproxy.conf @@ -5,25 +5,25 @@ type:script_output message:setup haproxy service requirements [start] -command:/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh; /usr/local/etc/rc.d/haproxy start +command:/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh; /usr/local/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh start parameters: type:script message:starting haproxy [stop] -command:/usr/local/etc/rc.d/haproxy stop; /usr/bin/killall haproxy; exit 0 +command:/usr/local/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh stop; /usr/bin/killall haproxy; exit 0 parameters: type:script message:stopping haproxy [restart] -command:/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh; /usr/local/etc/rc.d/haproxy restart +command:/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh; /usr/local/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh restart parameters: type:script message:restarting haproxy [reconfigure] -command:/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh; /usr/local/etc/rc.d/haproxy reload +command:/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh; /usr/local/opnsense/scripts/OPNsense/HAProxy/rc-wrapper.sh reload parameters: type:script message:reconfiguring haproxy diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/rc.conf.d b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/rc.conf.d index 0d4f4b2f1..44eb42162 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/rc.conf.d +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/rc.conf.d @@ -3,7 +3,11 @@ haproxy_enable=YES haproxy_opnsense_bootup_run="/usr/local/opnsense/scripts/OPNsense/HAProxy/setup.sh" haproxy_pidfile="/var/run/haproxy.pid" haproxy_config="/usr/local/etc/haproxy.conf" -# haproxy_flags="" +{% if helpers.exists('OPNsense.HAProxy.general.gracefulStop') and OPNsense.HAProxy.general.gracefulStop|default("0") == "1" %} +haproxy_hardstop=NO +{% else %} +haproxy_hardstop=YES +{% endif %} {% else %} haproxy_enable=NO {% endif %}