summaryrefslogtreecommitdiff
blob: 01f4b06c96772f8d4cdf4c29ea76ee665398d4f1 (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
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-proxy/squid/files/squid.initd,v 1.3 2006/01/09 11:51:47 mrness Exp $

opts="${opts} reload rotate"

depend() {
        need net
}

# Try to increase the # of filedescriptors we can open.
maxfds() {
        [ -n "$SQUID_MAXFD" ] || return
        [ -f /proc/sys/fs/file-max ] || return 0
        [ $SQUID_MAXFD -le 8192 ] || SQUID_MAXFD=8192
        global_file_max=`cat /proc/sys/fs/file-max`
        minimal_file_max=$(($SQUID_MAXFD + 4096))
        if [ "$global_file_max" -lt $minimal_file_max ]
        then
                echo $minimal_file_max > /proc/sys/fs/file-max
        fi
        ulimit -n $SQUID_MAXFD
}

checkconfig() {
        maxfds
        CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \
                grep cache_dir | awk '{ print $3 }'`
        [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/cache/squid
        umask 027
        for x in $CACHE_SWAP ; do
                if [ ! -d $x/00 ] ; then
                        einfo "Initializing cache directory: $x"
                        cd $x
                        /usr/sbin/squid -z -F 2>/dev/null
                        if [ $? -ne 0 ] ; then
                                eerror "Error initializing: $x"
                                return 1
                        fi
                fi
        done
}

start() {
        checkconfig || return 1
        ebegin "Starting squid"
        /usr/sbin/squid  ${SQUID_OPTS}
        eend $? && sleep 1
}

stop() {
        ebegin "Stopping squid"
        /usr/sbin/squid -k shutdown
        # Now we have to wait until squid has _really_ stopped.
        sleep 1
        if [ -f /var/run/squid.pid ] ; then
                einfon "Waiting ."
                cnt=0
                while [ -f /var/run/squid.pid ] ; do
                        cnt=`expr $cnt + 1`
                        if [ $cnt -gt 60 ] ; then
                                # Waited 120 seconds now. Fail.
                                eend 1 "Failed."
                                break
                        fi
                        sleep 2
                        echo -n "."
                done
                echo -n "done."
                eend 0
        else
                eend 0
        fi
}

reload() {
        checkconfig || return 1
        ebegin "Reloading squid"
        /usr/sbin/squid -k reconfigure
        eend $?
}

rotate() {
        service_started squid || return 1
        ebegin "Rotating logs"
        /usr/sbin/squid -k rotate
        eend $?
}