diff options
Diffstat (limited to 'extra/varnish/rc.varnish')
-rw-r--r-- | extra/varnish/rc.varnish | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/extra/varnish/rc.varnish b/extra/varnish/rc.varnish index 2ebd97e33..2841665e5 100644 --- a/extra/varnish/rc.varnish +++ b/extra/varnish/rc.varnish @@ -4,6 +4,27 @@ . /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" @@ -14,7 +35,7 @@ if [[ -r $pidfile ]]; then fi fi -case "$1" in +case $1 in start) stat_busy "Starting Varnish Reverse Proxy" if /usr/sbin/varnishd $VARNISHD_OPTS -P "$pidfile"; then @@ -40,6 +61,10 @@ case "$1" in sleep 1 $0 start ;; + reload) + stat_busy "Recompiling and Reloading VCL" + reload_vcl && stat_done || stat_fail + ;; *) echo "usage: $0 {start|stop|restart}" ;; |