cups: configure: disable acl
[packages.git] / net / djbdns / files / dnscache.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2007-2012 OpenWrt.org
3
4 # Preferably start dnscache after udhcpd/dnsmasq, to be sure /etc/resolv.conf is set correctly. dnsmasq is at S60, so dnscache is put at S65 as seen below. If /etc/resolv.conf is not used, then dnscache may be started at S47, just after the firewall has been set up.
5 START=65
6 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
7 DAEMON=/usr/bin/dnscache
8 NAME=dnscache
9 DESC="Caching name server"
10
11 ROOT="/tmp/dnscache"
12 resolvfile="/etc/resolv.conf"
13
14 start() {
15     echo "Starting $DESC: $NAME"
16     config_load djbdns
17     config_foreach get_userids global
18     mkdir -p $ROOT
19     cp -fa /etc/dnscache/* $ROOT
20     rm -f $ROOT/resolvers
21     rm -f $ROOT/ignoreip
22     chown -R $UID:$GID $ROOT
23     config_foreach start_dnscache dnscache
24 }
25
26 get_userids() {
27     local cfg="$1"
28     config_get UID "$cfg" runasuser
29     config_get GID "$cfg" runasgroup
30     UID=`id -u $UID`
31     GID=`id -g $GID`
32 }
33
34 append_server() {
35     echo $1 >> $ROOT/resolvers
36 }
37
38 append_ignore() {
39     echo $1 >> $ROOT/ignoreip
40 }
41
42 start_dnscache() {
43     local cfg="$1"
44     config_get logging        "$cfg" logging
45     config_get useresolvconf  "$cfg" useresolvconf
46     config_get iface          "$cfg" interface
47     config_get ifacesend      "$cfg" interfacesend
48     config_get defaultallowif "$cfg" defaultallowif
49     config_get CACHESIZE      "$cfg" cachesize
50     config_get FORWARDONLY    "$cfg" forwardonly
51     config_get HIDETTL        "$cfg" hidettl
52     config_list_foreach       "$cfg" "resolver" append_server
53     config_get useignore      "$cfg" useignore
54     if [ "$useignore" == "1" ] ; then
55         config_list_foreach   "$cfg" "ignoreip" append_ignore
56     fi
57 # Add some interface network addresses to list of allowed IP addresses (assumes /24 networks)
58     . /lib/functions/network.sh
59     if [ -n "$defaultallowif" ] ; then
60         for myinterface in `echo $defaultallowif`; do
61             network_get_ipaddr addr $myinterface || continue
62             # the next line strips the last octet from the ip address
63             addr=`echo $addr|sed 's/.[0-9]\+$//'`
64             touch $ROOT/ip/$addr
65             echo Adding $ROOT/ip/$addr
66         done
67     fi
68 # Translate listen interface names to IP addresses
69     network_get_ipaddr IP "$iface"
70 # Translate send interface name to an IP address
71     network_get_ipaddr IPSEND "$ifacesend"
72 # Unset HIDETTL if equal to 0
73     if [ "$HIDETTL" == "0" ] ; then
74         export -n HIDETTL
75     fi
76 # If forwardingonly set then activate list of resolvers
77     if [ "$FORWARDONLY" == "0" ] ; then
78         # Unset FORWARDONLY if equal to '0'
79         export -n FORWARDONLY
80     else
81 # Use either fixed list of dnsservers or resolv.conf data
82         if [ "$useresolvconf" == "1" ] ; then
83             if [ -s "$resolvfile" ] ; then
84                cat $resolvfile|grep nameserver|sed 's/nameserver //g' > $ROOT/resolvers
85             else
86                echo Error: $resolvfile does not exist.
87                exit 1
88             fi
89         fi
90         if [ ! "`cat $ROOT/resolvers|wc -L`" == "0" ] ; then
91             cp -f $ROOT/resolvers $ROOT/servers/@ > /dev/null 2>&1
92         else
93             echo Error: No resolvers are defined.
94             exit 1
95         fi
96      fi
97     export IP 
98     export ROOT
99 # dnscache likes to receive a 128 byte random seed
100     dd if=/dev/urandom of=$ROOT/randomseed bs=128 count=1  > /dev/null 2>&1
101     if [ "$DEBUG" == 1 ] ; then
102         $DAEMON < /$ROOT/randomseed
103     elif [ "$logging" == '1' ] ; then
104         $DAEMON 2>&1 < /$ROOT/randomseed | logger -p local1.info -t $NAME &
105     else
106         $DAEMON > /dev/null 2>&1 < /$ROOT/randomseed &
107     fi
108 }
109
110 stop() {
111     echo -n "Stopping $DESC: $NAME"
112     kill `pidof $NAME|sed "s/$$//g"` > /dev/null 2>&1
113     echo " ."
114 }
115
116 restart() {
117     echo "Restarting $DESC: $NAME... "
118     stop
119     sleep 2
120     start
121 }
122