9536c3e290070f1b5ab94b4fdc4cda7d21a06ef6
[myplc.git] / plc.d / dns
1 #!/bin/bash
2 #
3 # priority: 850
4 #
5 # Start local DNS server to provide minimal DNS forward resolution for
6 # ourselves and our nodes.
7 #
8 # Mark Huang <mlhuang@cs.princeton.edu>
9 # Copyright (C) 2006 The Trustees of Princeton University
10 #
11 # $Id$
12 #
13
14 # Source function library and configuration
15 . /etc/plc.d/functions
16 . /etc/planetlab/plc_config
17
18 SIGNATURE="; generated by /etc/plc.d/dns --- DO NOT REMOVE THIS TEXT!"
19
20 # Be verbose
21 set -x
22
23 case "$1" in
24     start)
25         if [ $PLC_DNS_ENABLED -eq 1 ] ; then
26             MESSAGE="Starting DNS server"
27             dialog "$MESSAGE"
28
29             dns-config
30             check
31         fi
32
33         # Set up nameservers
34         if [ -n "$PLC_NET_DNS1" -o -n "$PLC_NET_DNS2" ] ; then
35             MESSAGE="Configuring resolv.conf"
36             dialog "$MESSAGE"
37
38             rfile=$(mktemp)
39             (
40                 echo $SIGNATURE
41                 [ -n "$PLC_NET_DNS1" ] && echo "nameserver $PLC_NET_DNS1"
42                 [ -n "$PLC_NET_DNS2" -a "$PLC_NET_DNS1" != "$PLC_NET_DNS2" ] && echo "nameserver $PLC_NET_DNS2"
43             ) > $rfile
44             
45             if [ $PLC_DNS_ENABLED -eq 1 ] ; then
46                 cp $rfile /etc/plc_resolv.conf
47                 chmod 444 /etc/plc_resolv.conf
48                 ourfile=$(grep "$SIGNATURE" /etc/resolv.conf| wc -l)
49                 if [ $ourfile -eq 0 ] ; then
50                     cp /etc/resolv.conf /etc/resolv.bak
51                     echo $SIGNATURE > /etc/resolv.conf
52                     echo nameserver 127.0.0.1 >> /etc/resolv.conf
53                     chmod 444 /etc/resolv.conf
54                 fi
55             else
56                 cp /etc/resolv.conf /etc/resolv.bak
57                 mv -f $rfile /etc/resolv.conf
58                 chmod 444 /etc/resolv.conf
59             fi
60         fi
61
62         if [ $PLC_DNS_ENABLED -eq 1 ] ; then
63             plc_daemon dnsmasq
64             check
65         fi
66
67         result "$MESSAGE"
68         ;;
69
70     stop)
71         MESSAGE=$"Reverting /etc/resolv.conf"
72         dialog "$MESSAGE"
73         if [ -f "/etc/resolv.bak" ] ; then
74             ourfile=$(grep "$SIGNATURE" /etc/resolv.bak | wc -l)
75             if [ $ourfile -ne 0 ] ; then 
76                 dialog "WARNING: original /etc/resolv.conf was generated by etc/plc.d/dns"              
77             fi
78             mv -f /etc/resolv.bak /etc/resolv.conf
79         fi
80         check
81         result ""
82         if [ $PLC_DNS_ENABLED -eq 1 ] ; then
83             MESSAGE=$"Removing /etc/plc_hosts"
84             dialog "$MESSAGE"
85             [ -f "/etc/plc_hosts" ] && rm -f /etc/plc_hosts
86             result ""
87         fi
88
89         if [ $PLC_DNS_ENABLED -eq 1 ] ; then
90             MESSAGE="Stopping DNS server"
91             dialog "$MESSAGE"
92             killproc plc_dnsmasq
93             check
94             result ""
95         fi
96
97         ;;
98 esac
99
100 exit $ERRORS