X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plc.d%2Fdns;h=377a26966459dc9035dfb7ff4d7f9443269ee04f;hb=1c790b3cd611acd2dffaa765433b0619309a1b81;hp=ac639e40c28675ae33819dd3ced17cc881bd0375;hpb=da08eb5915135af95298b8fde31d49f57c70eaf7;p=myplc.git diff --git a/plc.d/dns b/plc.d/dns index ac639e4..377a269 100755 --- a/plc.d/dns +++ b/plc.d/dns @@ -1,6 +1,8 @@ #!/bin/bash +# $Id$ +# $URL$ # -# priority: 850 +# priority: 950 # # Start local DNS server to provide minimal DNS forward resolution for # ourselves and our nodes. @@ -8,39 +10,91 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: dns,v 1.1 2006/05/23 18:10:08 mlhuang Exp $ -# # Source function library and configuration . /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 + ourfile=$(grep "$SIGNATURE" /etc/resolv.conf| wc -l) + if [ $ourfile -eq 0 ] ; then + cp /etc/resolv.conf /etc/plc_resolv.conf + fi + else + cp /etc/resolv.conf /etc/resolv_plc.backup + 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" - dialog "$MESSAGE" + if [ $PLC_DNS_ENABLED -eq 1 ] ; then + MESSAGE=$"Reverting /etc/resolv.conf" + dialog "$MESSAGE" + if [ -f "/etc/plc_resolv.conf" ] ; then + ourfile=$(grep "$SIGNATURE" /etc/plc_resolv.conf| wc -l) + if [ $ourfile -ne 0 ] ; then + dialog "WARNING: original /etc/resolv.conf was generated by etc/plc.d/dns" + fi + mv -f /etc/plc_resolv.conf /etc/resolv.conf + fi + check + result "" + MESSAGE=$"Removing /etc/plc_hosts" + dialog "$MESSAGE" + [ -f "/etc/plc_hosts" ] && rm -f /etc/plc_hosts + result "" + fi + if [ $PLC_DNS_ENABLED -eq 0 -a -f "/etc/resolv_plc.backup" ] ; then + MESSAGE="Restoring /etc/resolv.conf" + dialog "$MESSAGE" + mv -f /etc/resolv_plc.backup /etc/resolv.conf + result "" + fi - killproc plc_dnsmasq - check + if [ $PLC_DNS_ENABLED -eq 1 ] ; then + MESSAGE="Stopping DNS server" + dialog "$MESSAGE" + killproc plc_dnsmasq + check + result "" + fi - result "$MESSAGE" ;; esac