%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /data/old/usr/sbin/
Upload File :
Create Path :
Current File : //data/old/usr/sbin/varnish_reload_vcl

#!/bin/bash
#
# reload vcl revisited
# A script that loads new vcl based on data from /etc/varnish/varnish.params
# Ingvar Hagelund <ingvar@redpill-linpro.com>
#
# This is free software, distributed under the standard 2 clause BSD license,
# see the LICENSE file in the Varnish documentation directory
#
# The following environment variables have to be set:
# RELOAD_VCL, VARNISH_VCL_CONF, VARNISH_ADMIN_LISTEN_PORT
# The following are optional:
# VARNISH_SECRET_FILE, VARNISH_ADMIN_LISTEN_ADDRESS
#
# Requires GNU bash and GNU date
#

debug=false

missing() {
	echo "Missing configuration variable: $1"
	exit 2
}

print_debug() {
	echo "
Parsed configuration:
RELOAD_VCL=\"$RELOAD_VCL\"
VARNISH_VCL_CONF=\"$VARNISH_VCL_CONF\"
VARNISH_ADMIN_LISTEN_ADDRESS=\"$VARNISH_ADMIN_LISTEN_ADDRESS\"
VARNISH_ADMIN_LISTEN_PORT=\"$VARNISH_ADMIN_LISTEN_PORT\"
VARNISH_SECRET_FILE=\"$VARNISH_SECRET_FILE\"
"
}

# Fallback to the default configuration
if [ -z "$VARNISH_VCL_CONF" ]; then
	. /etc/varnish/varnish.params
fi

$debug && print_debug

# Check configuration
if [ ! "$RELOAD_VCL" = "1" ]; then
	echo "Error: RELOAD_VCL is not set to 1"
	exit 2

elif [ -z "$VARNISH_VCL_CONF" ]; then
	echo "Error: VARNISH_VCL_CONF is not set"
	exit 2

elif [ ! -s "$VARNISH_VCL_CONF" ]; then
	echo "Eror: VCL config $VARNISH_VCL_CONF is unreadable or empty"
	exit 2

elif [ -z "$VARNISH_ADMIN_LISTEN_ADDRESS" ]; then
	echo "Warning: VARNISH_ADMIN_LISTEN_ADDRESS is not set, using 127.0.0.1"
	VARNISH_ADMIN_LISTEN_ADDRESS="127.0.0.1"

elif [ -z "$VARNISH_ADMIN_LISTEN_PORT" ]; then
	echo "Error: VARNISH_ADMIN_LISTEN_PORT is not set"
	exit 2

elif [ -z "$VARNISH_SECRET_FILE" ]; then
	echo "Warning: VARNISH_SECRET_FILE is not set"
	secret=""

elif [ ! -s "$VARNISH_SECRET_FILE" ]; then
	echo "Error: varnish secret file $VARNISH_SECRET_FILE is unreadable or empty"
	exit 2
else
	secret="-S $VARNISH_SECRET_FILE"
fi

# Done parsing, set up command
VARNISHADM="varnishadm $secret -T $VARNISH_ADMIN_LISTEN_ADDRESS:$VARNISH_ADMIN_LISTEN_PORT"

# Now do the real work
new_config="reload_$(date +%FT%H:%M:%S)"

# Check if we are able to connect at all
if $VARNISHADM vcl.list > /dev/null; then
	$debug && echo vcl.list succeeded
else
	echo "Unable to run $VARNISHADM vcl.list"
	exit 1
fi

if $VARNISHADM vcl.list | awk ' { print $3 } ' | grep -q $new_config; then
	echo Trying to use new config $new_config, but that is already in use
	exit 2
fi

current_config=$( $VARNISHADM vcl.list | awk ' /^active/ { print $3 } ' )

echo "Loading vcl from $VARNISH_VCL_CONF"
echo "Current running config name is $current_config"
echo "Using new config name $new_config"

if $VARNISHADM vcl.load $new_config $VARNISH_VCL_CONF; then
	$debug && echo "$VARNISHADM vcl.load succeded"
else
	echo "$VARNISHADM vcl.load failed"
	exit 1
fi

if $VARNISHADM vcl.use $new_config; then
	$debug && echo "$VARNISHADM vcl.use succeded"
else
	echo "$VARNISHADM vcl.use failed"
	exit 1
fi
$VARNISHADM vcl.list
echo Done
/usr/sbin/varnish_pre
exit 0


Zerion Mini Shell 1.0