source: squid-ssl/trunk/fuentes/debian/squid-ssl.rc @ 5693

Last change on this file since 5693 was 5693, checked in by Juanma, 4 years ago

load iptables rules on startup

File size: 4.2 KB
Line 
1#! /bin/sh
2#
3# squid-ssl             Startup script for the SQUID-ssl HTTP proxy-cache.
4#
5# Version:      @(#)squid-ssl.rc  1.0  07-Jul-2006  luigi@debian.org
6#
7### BEGIN INIT INFO
8# Provides:          squid-ssl
9# Required-Start:    $network $remote_fs $syslog
10# Required-Stop:     $network $remote_fs $syslog
11# Should-Start:      $named
12# Should-Stop:       $named
13# Default-Start:     2 3 4 5
14# Default-Stop:      0 1 6
15# Short-Description: Squid-ssl HTTP Proxy version 3.x
16### END INIT INFO
17
18NAME=squid-ssl
19DESC="Squid-ssl HTTP Proxy"
20DAEMON=/usr/sbin/squid-ssl
21PIDFILE=/var/run/$NAME.pid
22CONFIG=/etc/squid-ssl/squid.conf
23SQUID_ARGS="-YC -f $CONFIG"
24
25[ ! -f /etc/default/squid-ssl ] || . /etc/default/squid-ssl
26
27. /lib/lsb/init-functions
28
29PATH=/bin:/usr/bin:/sbin:/usr/sbin
30
31[ -x $DAEMON ] || exit 0
32
33ulimit -n 65535
34
35find_cache_dir () {
36        w="     " # space tab
37        res=`$DAEMON -k parse -f $CONFIG 2>&1 |
38                grep "Processing:" |
39                sed s/.*Processing:\ // |
40                sed -ne '
41                        s/^['"$w"']*'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
42                        t end;
43                        d;
44                        :end q'`
45        [ -n "$res" ] || res=$2
46        echo "$res"
47}
48
49grepconf () {
50        w="     " # space tab
51        res=`$DAEMON -k parse -f $CONFIG 2>&1 |
52                grep "Processing:" |
53                sed s/.*Processing:\ // |
54                sed -ne '
55                        s/^['"$w"']*'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
56                        t end;
57                        d;
58                        :end q'`
59        [ -n "$res" ] || res=$2
60        echo "$res"
61}
62
63create_run_dir () {
64        run_dir=/var/run/squid-ssl
65        usr=`grepconf cache_effective_user proxy`
66        grp=`grepconf cache_effective_group proxy`
67
68        if [ "$(dpkg-statoverride --list $run_dir)" = "" ] &&
69           [ ! -e $run_dir ] ; then
70                mkdir -p $run_dir
71                chown $usr:$grp $run_dir
72                [ -x /sbin/restorecon ] && restorecon $run_dir
73        fi
74}
75
76start () {
77        cache_dir=`find_cache_dir cache_dir`
78        cache_type=`grepconf cache_dir`
79        run_dir=/var/run/squid-ssl
80
81    #Load iptables rules
82        [ -e  /usr/share/iptables/rules/transparent.rules ] && iptables-restore < /usr/share/iptables/rules/transparent.rules || return 1
83        #
84        # Create run dir (needed for several workers on SMP)
85        #
86        create_run_dir
87
88        #
89        # Create spool dirs if they don't exist.
90        #
91        if test -d "$cache_dir" -a ! -d "$cache_dir/00"
92        then
93                log_warning_msg "Creating $DESC cache structure"
94                $DAEMON -z -f $CONFIG
95                [ -x /sbin/restorecon ] && restorecon -R $cache_dir
96        fi
97
98        umask 027
99        ulimit -n 65535
100        cd $run_dir
101        start-stop-daemon --quiet --start \
102                --pidfile $PIDFILE \
103                --exec $DAEMON -- $SQUID_ARGS < /dev/null
104        return $?
105}
106
107stop () {
108        PID=`cat $PIDFILE 2>/dev/null`
109        start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
110        #
111        #       Now we have to wait until squid has _really_ stopped.
112        #
113        sleep 2
114        if test -n "$PID" && kill -0 $PID 2>/dev/null
115        then
116                log_action_begin_msg " Waiting"
117                cnt=0
118                while kill -0 $PID 2>/dev/null
119                do
120                        cnt=`expr $cnt + 1`
121                        if [ $cnt -gt 24 ]
122                        then
123                                log_action_end_msg 1
124                                return 1
125                        fi
126                        sleep 5
127                        log_action_cont_msg ""
128                done
129                log_action_end_msg 0
130                return 0
131        else
132                return 0
133        fi
134}
135
136cfg_pidfile=`grepconf pid_filename`
137if test "${cfg_pidfile:-none}" != "none" -a "$cfg_pidfile" != "$PIDFILE"
138then
139        log_warning_msg "squid.conf pid_filename overrides init script"
140        PIDFILE="$cfg_pidfile"
141fi
142
143case "$1" in
144    start)
145        res=`$DAEMON -k parse -f $CONFIG 2>&1 | grep -o "FATAL .*"`
146        if test -n "$res";
147        then
148                log_failure_msg "$res"
149                exit 3
150        else
151                log_daemon_msg "Starting $DESC" "$NAME"
152                if start ; then
153                        log_end_msg $?
154                else
155                        log_end_msg $?
156                fi
157        fi
158        ;;
159    stop)
160        log_daemon_msg "Stopping $DESC" "$NAME"
161        if stop ; then
162                log_end_msg $?
163        else
164                log_end_msg $?
165        fi
166        ;;
167    reload|force-reload)
168        res=`$DAEMON -k parse -f $CONFIG 2>&1 | grep -o "FATAL .*"`
169        if test -n "$res";
170        then
171                log_failure_msg "$res"
172                exit 3
173        else
174                log_action_msg "Reloading $DESC configuration files"
175                start-stop-daemon --stop --signal 1 \
176                        --pidfile $PIDFILE --quiet --exec $DAEMON
177                log_action_end_msg 0
178        fi
179        ;;
180    restart)
181        res=`$DAEMON -k parse -f $CONFIG 2>&1 | grep -o "FATAL .*"`
182        if test -n "$res";
183        then
184                log_failure_msg "$res"
185                exit 3
186        else
187                log_daemon_msg "Restarting $DESC" "$NAME"
188                stop
189                if start ; then
190                        log_end_msg $?
191                else
192                        log_end_msg $?
193                fi
194        fi
195        ;;
196    status)
197        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit 3
198        ;;
199    *)
200        echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}"
201        exit 3
202        ;;
203esac
204
205exit 0
Note: See TracBrowser for help on using the repository browser.