#!/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