cvsdist 8d13385
#!/bin/bash
cvsdist 8d13385
# chkconfig: - 90 25
41ce9b7
# pidfile: /var/run/squid.pid
41ce9b7
# config: /etc/squid/squid.conf
b99b92d
#
b99b92d
### BEGIN INIT INFO
b99b92d
# Provides: squid
41ce9b7
# Short-Description: starting and stopping Squid Internet Object Cache
41ce9b7
# Description: Squid - Internet Object Cache. Internet object caching is \
43fe473
#       a way to store requested Internet objects (i.e., data available \
43fe473
#       via the HTTP, FTP, and gopher protocols) on a system closer to the \
43fe473
#       requesting site than to the source. Web browsers can then use the \
43fe473
#       local Squid cache as a proxy HTTP server, reducing access time as \
43fe473
#       well as bandwidth consumption.
41ce9b7
### END INIT INFO
41ce9b7
cvsdist 8d13385
cvsdist 8d13385
PATH=/usr/bin:/sbin:/bin:/usr/sbin
cvsdist 8d13385
export PATH
cvsdist 8d13385
cvsdist 8d13385
# Source function library.
cvsdist 8d13385
. /etc/rc.d/init.d/functions
cvsdist 8d13385
cvsdist 8d13385
# Source networking configuration.
cvsdist 8d13385
. /etc/sysconfig/network
cvsdist 8d13385
cvsdist d0eb593
if [ -f /etc/sysconfig/squid ]; then
43fe473
	. /etc/sysconfig/squid
cvsdist d0eb593
fi
cvsdist d0eb593
43fe473
# don't raise an error if the config file is incomplete
cvsdist 875a2b3
# set defaults instead:
394cab1
SQUID_OPTS=${SQUID_OPTS:-""}
cvsdist 875a2b3
SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20}
cvsdist 875a2b3
SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}
6f485e0
SQUID_CONF=${SQUID_CONF:-"/etc/squid/squid.conf"}
cvsdist 875a2b3
cvsdist 8d13385
# determine the name of the squid binary
cvsdist 8d13385
[ -f /usr/sbin/squid ] && SQUID=squid
41ce9b7
cvsdist d0eb593
prog="$SQUID"
cvsdist d0eb593
cvsdist 8d13385
# determine which one is the cache_swap directory
6f485e0
CACHE_SWAP=`sed -e 's/#.*//g' $SQUID_CONF | \
43fe473
	grep cache_dir | awk '{ print $3 }'`
cvsdist 8d13385
cvsdist 8d13385
RETVAL=0
cvsdist 8d13385
80fa430
probe() {
80fa430
	# Check that networking is up.
80fa430
	[ ${NETWORKING} = "no" ] && exit 1
80fa430
40f77b3
	[ `id -u` -ne 0 ] && exit 4
6f485e0
80fa430
	# check if the squid conf file is present
6f485e0
	[ -f $SQUID_CONF ] || exit 6
43fe473
}
80fa430
cvsdist 8d13385
start() {
80fa430
	probe
80fa430
6f485e0
	parse=`$SQUID -k parse -f $SQUID_CONF 2>&1`
43fe473
	RETVAL=$?
43fe473
	if [ $RETVAL -ne 0 ]; then
43fe473
		echo -n $"Starting $prog: "
43fe473
		echo_failure
43fe473
		echo
6f485e0
		echo "$parse"
43fe473
		return 1
43fe473
	fi
43fe473
	for adir in $CACHE_SWAP; do
43fe473
		if [ ! -d $adir/00 ]; then
43fe473
			echo -n "init_cache_dir $adir... "
58ed1c0
			$SQUID -z -F -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1
80fa430
		fi
43fe473
	done
43fe473
	echo -n $"Starting $prog: "
6f485e0
	$SQUID $SQUID_OPTS -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1
43fe473
	RETVAL=$?
43fe473
	if [ $RETVAL -eq 0 ]; then
43fe473
		timeout=0;
43fe473
		while : ; do
43fe473
			[ ! -f /var/run/squid.pid ] || break
43fe473
			if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then
43fe473
				RETVAL=1
43fe473
				break
43fe473
			fi
43fe473
			sleep 1 && echo -n "."
43fe473
			timeout=$((timeout+1))
43fe473
		done
43fe473
	fi
43fe473
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID
43fe473
	[ $RETVAL -eq 0 ] && echo_success
43fe473
	[ $RETVAL -ne 0 ] && echo_failure
43fe473
	echo
43fe473
	return $RETVAL
cvsdist 8d13385
}
cvsdist 8d13385
cvsdist 8d13385
stop() {
43fe473
	echo -n $"Stopping $prog: "
6f485e0
	$SQUID -k check -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1
43fe473
	RETVAL=$?
43fe473
	if [ $RETVAL -eq 0 ] ; then
6f485e0
		$SQUID -k shutdown -f $SQUID_CONF &
43fe473
		rm -f /var/lock/subsys/$SQUID
43fe473
		timeout=0
43fe473
		while : ; do
43fe473
			[ -f /var/run/squid.pid ] || break
43fe473
			if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then
43fe473
				echo
43fe473
				return 1
43fe473
			fi
43fe473
			sleep 2 && echo -n "."
43fe473
			timeout=$((timeout+2))
43fe473
		done
43fe473
		echo_success
43fe473
		echo
43fe473
	else
43fe473
		echo_failure
b8b092c
		if [ ! -e /var/lock/subsys/$SQUID ]; then
b8b092c
			RETVAL=0
b8b092c
		fi
43fe473
		echo
43fe473
	fi
43fe473
	return $RETVAL
43fe473
}
cvsdist 8d13385
cvsdist 8d13385
reload() {
6f485e0
	$SQUID $SQUID_OPTS -k reconfigure -f $SQUID_CONF
cvsdist 8d13385
}
cvsdist 8d13385
cvsdist 8d13385
restart() {
43fe473
	stop
43fe473
	start
43fe473
}
cvsdist 8d13385
cvsdist 8d13385
condrestart() {
43fe473
	[ -e /var/lock/subsys/squid ] && restart || :
cvsdist 8d13385
}
cvsdist 8d13385
43fe473
rhstatus() {
6f485e0
	status $SQUID && $SQUID -k check -f $SQUID_CONF
cvsdist 8d13385
}
cvsdist 8d13385
cvsdist 8d13385
cvsdist 8d13385
case "$1" in
cvsdist 8d13385
start)
43fe473
	start
43fe473
	;;
cvsdist 8d13385
cvsdist 8d13385
stop)
43fe473
	stop
43fe473
	;;
cvsdist 8d13385
b8b092c
reload|force-reload)
43fe473
	reload
43fe473
	;;
cvsdist 8d13385
cvsdist 8d13385
restart)
43fe473
	restart
43fe473
	;;
cvsdist 8d13385
b8b092c
condrestart|try-restart)
43fe473
	condrestart
43fe473
	;;
cvsdist 8d13385
cvsdist 8d13385
status)
43fe473
	rhstatus
43fe473
	;;
cvsdist 8d13385
cvsdist 8d13385
probe)
43fe473
	probe
43fe473
	;;
cvsdist 8d13385
cvsdist 8d13385
*)
b8b092c
	echo $"Usage: $0 {start|stop|status|reload|force-reload|restart|try-restart|probe}"
43fe473
	exit 2
cvsdist 8d13385
esac
cvsdist 8d13385
cvsdist 8d13385
exit $?