summaryrefslogtreecommitdiff
path: root/network/squid/rc.squid
diff options
context:
space:
mode:
Diffstat (limited to 'network/squid/rc.squid')
-rw-r--r--network/squid/rc.squid83
1 files changed, 83 insertions, 0 deletions
diff --git a/network/squid/rc.squid b/network/squid/rc.squid
new file mode 100644
index 0000000000..4810dae64f
--- /dev/null
+++ b/network/squid/rc.squid
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Start/stop/restart/reload the Squid Internet Object Cache (squid)
+# To make Squid start automatically at boot, make this
+# file executable: chmod 755 /etc/rc.d/rc.Squid
+#
+# Written for Slackware Linux by Erik Jan Tromp
+# Modified by David Somero <xgizzmo@slackbuilds.org>
+
+SQUIDCFG=/etc/squid/squid.conf
+SQUIDCMD=/usr/sbin/squid
+
+if [ ! -r $SQUIDCFG ]; then
+ echo "Please set the correct path to $SQUIDCFG"
+ exit 1
+fi
+
+if [ ! -x $SQUIDCMD ]; then
+ echo "$SQUIDCMD not found"
+ exit 1
+fi
+
+squid_start() {
+ # Create cache directory hierarchy if needed
+ ALL_DIRS=$(awk '/^cache_dir/ {print $3}' $SQUIDCFG)
+ [ -z "$ALL_DIRS" ] && ALL_DIRS=/var/cache/squid
+
+ for CACHE_DIR in $ALL_DIRS ; do
+ if [ ! -d $CACHE_DIR/00 ] ; then
+ echo "Creating swap directories: $SQUIDCMD -z"
+ $SQUIDCMD -z 2> /dev/null
+ break
+ fi
+ done
+
+ echo "Starting Squid: $SQUIDCMD -DF"
+ $SQUIDCMD -DF
+}
+
+squid_stop() {
+ COUNTDOWN=$(awk '/^shutdown_lifetime/ {print $2}' $SQUIDCFG)
+ [ -z "$COUNTDOWN" ] && COUNTDOWN=30
+
+ echo -n "Shutting down Squid in $COUNTDOWN seconds: "
+ $SQUIDCMD -k shutdown 2> /dev/null
+ while $SQUIDCMD -k check 2> /dev/null ; do
+ sleep 1
+ echo -n .
+ COUNTDOWN=$[ $COUNTDOWN - 1 ]
+ if [ $COUNTDOWN -le 0 ] ; then
+ $SQUIDCMD -k interrupt 2> /dev/null
+ sleep 1
+ break
+ fi
+ done
+ echo
+}
+
+squid_restart() {
+ squid_stop
+ sleep 1
+ squid_start
+}
+
+squid_reload() {
+ $SQUIDCMD -k reconfigure 2> /dev/null
+}
+
+case "$1" in
+'start')
+ squid_start
+ ;;
+'stop')
+ squid_stop
+ ;;
+'restart')
+ squid_restart
+ ;;
+'reload')
+ squid_reload
+ ;;
+*)
+ echo "usage: $0 start|stop|restart|reload"
+esac