aboutsummaryrefslogtreecommitdiff
path: root/net/haproxy-devel
diff options
context:
space:
mode:
authorDmitry Sivachenko <demon@FreeBSD.org>2015-03-12 14:33:31 +0000
committerDmitry Sivachenko <demon@FreeBSD.org>2015-03-12 14:33:31 +0000
commit2d10cde1f631841166c11400889dd95e52cd186c (patch)
tree74465c5a00e9ea063458d987e2101649421174d9 /net/haproxy-devel
parent9943233c384ff08c32ec13ffbf110911916f2299 (diff)
downloadports-2d10cde1f631841166c11400889dd95e52cd186c.tar.gz
ports-2d10cde1f631841166c11400889dd95e52cd186c.zip
Notes
Diffstat (limited to 'net/haproxy-devel')
-rw-r--r--net/haproxy-devel/Makefile4
-rw-r--r--net/haproxy-devel/files/haproxy.in101
2 files changed, 69 insertions, 36 deletions
diff --git a/net/haproxy-devel/Makefile b/net/haproxy-devel/Makefile
index 14f09fc737ad..fcb72a6aa709 100644
--- a/net/haproxy-devel/Makefile
+++ b/net/haproxy-devel/Makefile
@@ -3,7 +3,7 @@
PORTNAME= haproxy
DISTVERSION= 1.5.0
-CATEGORIES= net
+CATEGORIES= net www
MASTER_SITES= http://haproxy.1wt.eu/download/1.5/src/
PKGNAMESUFFIX= -devel
@@ -20,7 +20,7 @@ CONFLICTS= haproxy-[1234567890]\*
USE_RC_SUBR= haproxy
SUB_FILES= pkg-message
-OPTIONS_DEFINE= OPENSSL
+OPTIONS_DEFINE= OPENSSL DOCS
OPTIONS_RADIO= PCRE
OPTIONS_RADIO_PCRE= DPCRE SPCRE
DPCRE_DESC= Link dynamically
diff --git a/net/haproxy-devel/files/haproxy.in b/net/haproxy-devel/files/haproxy.in
index 1f1c5dd3fa4e..751b3067d083 100644
--- a/net/haproxy-devel/files/haproxy.in
+++ b/net/haproxy-devel/files/haproxy.in
@@ -7,73 +7,93 @@
# REQUIRE: DAEMON LOGIN
# KEYWORD: shutdown
-#######
#
# Add the following lines to /etc/rc.conf to enable haproxy:
#
# haproxy_enable (bool): default: "NO"
# Set to "YES" to enable haproxy
-# haproxy_pidfile (str): default: /var/run/${name}.pid
+# haproxy_pidfile (str): default: /var/run/haproxy.pid
# Set to the full path of the pid file
-# haproxy_config (str): default: /usr/local/etc/${name}.conf
+# haproxy_config (str): default: %%PREFIX%%/etc/haproxy.conf
# Set to the full path of the config file
# haproxy_flags (str): default: Autogenerated using pidfile and config options
# Set to override with your own options
-#
-#######
-#
-# rc.d Script Runtime Options:
-#
-# start - starts application normally
-# stop - (softstop) stops all proxies and exits once all sessions are closed
-# forcestop - (immediate) stops all proxies and kills active sessions
-# reload - hot-reconfig using "-sf" option (active sessions kept)
-# forcereload - hot-reconfig using "-st" option (active sessions killed)
-# restart - equiv to "stop" then "start"
-# configtest - checks configuration file defined in haproxy_config
-#
-#######
+# haproxy_profiles (str): default: empty
+# Set to space-separated list of profiles: for each profile separate haproxy
+# process will be spawned, with haproxy-${profile}.conf config file.
+# You can override default pidfile and config file for each profile with
+# haproxy_${profile}_config and haproxy_${profile}_pidfile.
. /etc/rc.subr
name="haproxy"
rcvar=haproxy_enable
command="%%PREFIX%%/sbin/haproxy"
+extra_commands="reload configtest"
+reload_cmd="haproxy_reload"
+stop_cmd="haproxy_stop"
-# Load Configs/Set Defaults
-load_rc_config $name
: ${haproxy_enable:="NO"}
-pidfile=${haproxy_pidfile:-"/var/run/haproxy.pid"}
: ${haproxy_config:="%%PREFIX%%/etc/${name}.conf"}
-: ${haproxy_flags="-q -f ${haproxy_config} -p ${pidfile}"}
-procname=${command}
+pidfile=${haproxy_pidfile:-"/var/run/haproxy.pid"}
-# Update the globals
-required_files=$haproxy_config
+if [ -z "$rc_force" ]; then
+ sig_stop="USR1"
+fi
-# Commands: start, stop, restart, reload, configtest
-extra_commands="reload configtest"
+load_rc_config $name
+is_valid_profile() {
+ local profile
+ for profile in $haproxy_profiles; do
+ if [ "$profile" = "$1" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+if [ -n "$2" ]; then
+ profile=$2
+ if ! is_valid_profile $profile; then
+ echo "$0: no such profile ($profile) defined in ${name}_profiles."
+ exit 1
+ fi
+ eval haproxy_config="\${haproxy_${profile}_config:-%%PREFIX%%/etc/haproxy-${profile}.conf}"
+ eval pidfile="\${haproxy_${profile}_pidfile:-/var/run/haproxy-${profile}.pid}"
+else
+ if [ "x${haproxy_profiles}" != "x" -a "x$1" != "x" ]; then
+ for profile in ${haproxy_profiles}; do
+ echo "===> ${name} profile: ${profile}"
+ %%PREFIX%%/etc/rc.d/haproxy $1 ${profile}
+ retcode="$?"
+ if [ ${retcode} -ne 0 ]; then
+ failed="${profile} (${retcode}) ${failed:-}"
+ else
+ success="${profile} ${success:-}"
+ fi
+ done
+ exit 0
+ fi
+fi
+
+: ${haproxy_flags:="-q -f ${haproxy_config} -p ${pidfile}"}
configtest_cmd="$command -c -f $haproxy_config"
start_precmd="$command -q -c -f $haproxy_config"
-reload_cmd="haproxy_reload"
-
-# For stopping, SIGUSR1 = softstop, SIGTERM = faststop
-sig_stop=${rc_force:-USR1}
+required_files=$haproxy_config
haproxy_reload()
{
- # Check configuration file quietly first
${command} -q -c -f ${haproxy_config}
if [ $? -ne 0 ]; then
err 1 "Error found in ${haproxy_config} - not reloading current process!"
fi
rc_pid=$(check_pidfile ${pidfile} ${command})
if [ $rc_pid ]; then
- if [ $rc_force ]; then
- ${command} ${haproxy_flags} -st $(cat ${pidfile})
- else
+ if [ -z "$rc_force" ]; then
${command} ${haproxy_flags} -sf $(cat ${pidfile})
+ else
+ ${command} ${haproxy_flags} -st $(cat ${pidfile})
fi
else
_run_rc_notrunning
@@ -81,4 +101,17 @@ haproxy_reload()
fi
}
+haproxy_stop()
+{
+ rc_pid=$(check_pidfile ${pidfile} ${command})
+ if [ $rc_pid ]; then
+ rc_pid=$(cat ${pidfile})
+ kill -$sig_stop $rc_pid
+ wait_for_pids $rc_pid
+ else
+ _run_rc_notrunning
+ return 1
+ fi
+}
+
run_rc_command "$1"