diff options
Diffstat (limited to 'testing/varnish/rc.varnish')
-rw-r--r-- | testing/varnish/rc.varnish | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/testing/varnish/rc.varnish b/testing/varnish/rc.varnish new file mode 100644 index 000000000..2841665e5 --- /dev/null +++ b/testing/varnish/rc.varnish @@ -0,0 +1,71 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/varnish + +reload_vcl() { + local activecfg newcfg + + if [[ -z $VARNISH_CFG ]]; then + printf '==> ERROR: VARNISH_CFG is undefined in /etc/conf.d/varnish!\n' + return 1 + fi + + activecfg=$(varnishadm 'vcl.list' | awk '/active/ { print $3 }') + if [[ -z $activecfg ]]; then + printf '==> ERROR: No active VCL found!\n' + return 1 + fi + + printf -v newcfg 'vcl-%(%s)T' -1 + + varnishadm "vcl.load $newcfg $VARNISH_CFG" && + varnishadm "vcl.use $newcfg" && + varnishadm "vcl.discard $activecfg" || return 1 +} + +pidfile=/run/varnish.pid +if [[ -r $pidfile ]]; then + read -r PID < "$pidfile" + if [[ ! -d /proc/$PID ]]; then + # stale pidfile + unset PID + rm -f "$pidfile" + fi +fi + +case $1 in + start) + stat_busy "Starting Varnish Reverse Proxy" + if /usr/sbin/varnishd $VARNISHD_OPTS -P "$pidfile"; then + add_daemon varnish + stat_done + else + stat_fail + exit 1 + fi + ;; + stop) + stat_busy "Stopping Varnish Reverse Proxy" + if [[ $PID ]] && kill $PID &>/dev/null; then + rm_daemon varnish + stat_done + else + stat_fail + exit 1 + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + reload) + stat_busy "Recompiling and Reloading VCL" + reload_vcl && stat_done || stat_fail + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac |