Ended core 5 and started core 6
[people/pmueller/ipfire-2.x.git] / src / initscripts / init.d / squid
1 #!/bin/sh
2 # Begin $rc_base/init.d/squid
3
4 . /etc/sysconfig/rc
5 . $rc_functions
6
7 chown -R squid:squid /var/log/squid
8 chown -R squid:squid /var/log/squidGuard
9
10 transparent() {
11                 DEVICE=$1
12                 
13                 eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
14                 eval $(/usr/local/bin/readhash /var/ipfire/proxy/settings)
15                 
16                 # If the proxy port is not set we set the default to 800.
17                 if [ -z $PROXY_PORT ]; then
18                         PROXY_PORT=800
19                 fi
20
21                 LOCALIP=`cat /var/ipfire/red/local-ipaddress | tr -d \n`
22                 if [ -z $LOCALIP ]; then
23                         boot_mesg "Couldn't read local-ipaddress" ${FAILURE}
24                         exit 1
25                 fi
26
27                 COUNT=1
28                 FILE=/var/ipfire/vpn/config
29
30                 while read LINE; do
31                         let COUNT=$COUNT+1
32                         CONN_TYPE=`echo "$LINE" | awk -F, '{ print $5 }'`
33                         if [ "$CONN_TYPE" != "net" ]; then
34                                 continue
35                         fi  
36                 iptables -t nat -A SQUID -i $1 -p tcp -d `echo "$LINE" | awk -F, '{ print $13 }'` --dport 80 -j RETURN
37                 done < $FILE
38                 
39                 if [ "$RED_TYPE" == "STATIC" ]; then
40                         iptables -t nat -A SQUID -i $1 -p tcp -d $RED_NETADDRESS/$RED_NETMASK --dport 80 -j RETURN
41                 fi
42                 
43                 iptables -t nat -A SQUID -i $1 -p tcp -d $LOCALIP --dport 80 -j RETURN
44                 
45                 iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
46 }
47
48 case "$1" in
49         start)
50                 if [ -e /var/ipfire/proxy/enable -o -e /var/ipfire/proxy/enable_blue ]; then
51                         boot_mesg "Starting Squid Proxy Server..."
52                         loadproc /usr/sbin/squid -D -z >/dev/null 2>&1
53                         loadproc /usr/sbin/squid -D
54                 fi
55
56                 eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
57
58                 if [ -e /var/ipfire/proxy/transparent ]; then
59                         transparent $GREEN_DEV
60                 fi
61                 if [ -e /var/ipfire/proxy/transparent_blue ]; then
62                         transparent $BLUE_DEV
63                 fi
64                 ;;
65
66         stop)
67         
68                 if [ -e /var/run/squid.pid ]; then
69                         boot_mesg "Stopping Squid Proxy Server..."
70                         iptables -t nat -F SQUID
71                         squid -k shutdown >/dev/null 2>&1
72                         evaluate_retval
73                         killproc /usr/bin/squidGuard >/dev/null
74                         killproc /usr/sbin/updxlrator >/dev/null
75                         killproc /usr/sbin/squid >/dev/null
76                 fi
77                 ;;
78
79         restart)
80                 $0 stop
81                 sleep 5
82                 $0 start
83                 ;;
84
85         status)
86                 statusproc /usr/sbin/squid
87                 statusproc /usr/lib/squid/unlinkd
88                 ;;
89                 
90         flush)
91                 $0 stop
92                 echo > /var/log/cache/swap.state
93                 chown squid.squid /var/log/cache/swap.state
94                 sleep 1
95                 $0 start
96                 ;;
97
98         *)
99                 echo "Usage: $0 {start|stop|restart|status|flush}"
100                 exit 1
101                 ;;
102 esac
103
104 # End $rc_base/init.d/squid