aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/squid/squid/squid.init
blob: 21ccf224e78fdbd40ea7e2c94a4b878d06eae1a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh
DAEMON=/usr/sbin/squid
NAME=squid
DESC="Squid HTTP proxy"
PIDFILE=/var/run/squid.pid

# -D option is obsolete in squid version 3, so avoid warning
if $DAEMON -v | grep -q Version\ 3; then
	SQUID_ARGS="-sY"
else
	SQUID_ARGS="-D -sY"
fi

test -f $DAEMON || exit 0

grepconf() {
    w="     " # space tab
    sq=/etc/$NAME/$NAME.conf
    # sed is cool.
    res=`sed -ne '
            s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
            t end;
            d;
            :end q' < $sq`
    [ -n "$res" ] || res=$2
    echo "$res"
}

start() {
    owner=nobody

    cdr=`grepconf cache_dir /var/spool/$NAME`
    if [ ! -d "$cdr/00" ]; then
        mkdir -p $cdr
        chown $owner $cdr
        $DAEMON -z
    fi
    
    ldr="/var/log/$NAME"
    if [ ! -d "$ldr" ]; then
        mkdir -p $ldr
        chown $owner $ldr
    fi

    start-stop-daemon -S -p $PIDFILE -x $DAEMON -- $SQUID_ARGS
}

stop() {
	EX=0
	CNT=1
	while [ $EX -eq 0 -a $CNT -lt 15 ]; do
		echo -n .
		sleep 1
		start-stop-daemon -K -p $PIDFILE 1>/dev/null 2>&1
		EX=$?
		CNT=`expr $CNT + 1`
	done
	if [ $CNT -eq 15 ]; then
		echo "failed."
	else
		echo "done."
		rm -f $PIDFILE
	fi
}

case "$1" in
    start)
        echo -n "Starting $DESC: $NAME... "
        start
        echo "done."
       ;;
    stop)
        echo -n "Stopping $DESC: $NAME"
        stop
        ;;
    restart)
        echo "Restarting $DESC: $NAME... "
        stop
        sleep 1
        start
        echo "done."
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit 0