. /etc/plc.d/functions
. /etc/planetlab/plc_config
+SIGNATURE="; generated by /etc/plc.d/dns --- DO NOT REMOVE THIS TEXT!"
+
# Be verbose
set -x
case "$1" in
start)
- if [ "$PLC_DNS_ENABLED" != "1" ] ; then
- exit 0
+ if [ $PLC_DNS_ENABLED -eq 1 ] ; then
+ MESSAGE="Starting DNS server"
+ dialog "$MESSAGE"
+
+ dns-config
+ check
fi
- MESSAGE=$"Starting DNS server"
- dialog "$MESSAGE"
+ # Set up nameservers
+ if [ -n "$PLC_NET_DNS1" -o -n "$PLC_NET_DNS2" ] ; then
+ MESSAGE="Configuring resolv.conf"
+ dialog "$MESSAGE"
- dns-config
- check
+ rfile=$(mktemp)
+ (
+ echo $SIGNATURE
+ [ -n "$PLC_NET_DNS1" ] && echo "nameserver $PLC_NET_DNS1"
+ [ -n "$PLC_NET_DNS2" -a "$PLC_NET_DNS1" != "$PLC_NET_DNS2" ] && echo "nameserver $PLC_NET_DNS2"
+ ) > $rfile
+
+ if [ $PLC_DNS_ENABLED -eq 1 ] ; then
+ cp $rfile /etc/plc_resolv.conf
+ chmod 444 /etc/plc_resolv.conf
+ ourfile=$(grep "$SIGNATURE" /etc/resolv.conf| wc -l)
+ if [ $ourfile -eq 0 ] ; then
+ cp /etc/resolv.conf /etc/resolv.bak
+ echo $SIGNATURE > /etc/resolv.conf
+ echo nameserver 127.0.0.1 >> /etc/resolv.conf
+ chmod 444 /etc/resolv.conf
+ fi
+ else
+ cp /etc/resolv.conf /etc/resolv.bak
+ fi
+ mv -f $rfile /etc/resolv.conf
+ chmod 444 /etc/resolv.conf
+ fi
- plc_daemon dnsmasq
- check
+ if [ $PLC_DNS_ENABLED -eq 1 ] ; then
+ plc_daemon dnsmasq
+ check
+ fi
result "$MESSAGE"
;;
stop)
- MESSAGE=$"Stopping DNS server"
+ MESSAGE=$"Reverting /etc/resolv.conf"
dialog "$MESSAGE"
-
- killproc plc_dnsmasq
+ if [ -f "/etc/resolv.bak" ] ; then
+ ourfile=$(grep "$SIGNATURE" /etc/resolv.bak | wc -l)
+ if [ $ourfile -ne 0 ] ; then
+ dialog "WARNING: original /etc/resolv.conf was generated by etc/plc.d/dns"
+ fi
+ mv -f /etc/resolv.bak /etc/resolv.conf
+ fi
check
+ result ""
+ if [ $PLC_DNS_ENABLED -eq 1 ] ; then
+ MESSAGE=$"Removing /etc/plc_hosts"
+ dialog "$MESSAGE"
+ [ -f "/etc/plc_hosts" ] && rm -f /etc/plc_hosts
+ result ""
+ fi
+
+ if [ $PLC_DNS_ENABLED -eq 1 ] ; then
+ MESSAGE="Stopping DNS server"
+ dialog "$MESSAGE"
+ killproc plc_dnsmasq
+ check
+ result ""
+ fi
- result "$MESSAGE"
;;
esac