home *** CD-ROM | disk | FTP | other *** search
/ Chip: 2005 Utilities / CHIP Utilities 2005.7z / CHIP Utilities 2005.iso / images / freesco.igz / freesco.img / router / rc / rc_dns < prev    next >
Encoding:
Text File  |  2003-05-20  |  1.8 KB  |  76 lines

  1. #!/bin/sh
  2. #
  3. # Generate config, start/stop caching DNS service
  4.  
  5. . /etc/system.cfg
  6. . /etc/chat.pwd
  7. . /etc/live.cfg
  8.  
  9. HST=/etc/hosts
  10. RSLV=/etc/resolv.conf
  11.  
  12. fn2()    { ps | sed -n '/    dnsmasq/P'; }
  13. stp()    {
  14.     [ "`fn2`" ] || return
  15.     echo -n "Stopping DNS...                "
  16.     killall dnsmasq -15 
  17.     =
  18. }
  19.  
  20. str()    {
  21.     [ "`fn2`" ] && exit
  22.     echo "domain $DOMAIN" >/$RSLV
  23.     echo "255.255.255.255    broadcast    all-in-one" >$HST
  24.     if [ "$ENADNS" != n ]; then
  25.         echo "127.0.0.1    localhost" >$HST
  26.         echo "nameserver 127.0.0.1" >>/$RSLV
  27.         for i in 0 1 2 3 4 5 6 7 8 9; do
  28.             eval a=\$IPADDR$i
  29.             if [ "$a" ]; then
  30.                 echo "$a    $HOSTNAME.$DOMAIN    $HOSTNAME" >>$HST
  31.             fi
  32.         done
  33.         cat /boot/etc/dns.cfg | sed '/^$/d;/^\#/d' >>$HST 2>/dev/null
  34.         if [ "$ENADHCP" != n ]; then 
  35.             IP=`cat /boot/etc/dhcp.cfg | sed '/^\#/d;s/host\ //;s/{/,/;s/fixed\-address\ //;/hardware\ ethernet\ /d;/}/d;s/\ /    /g;s/$//g'`
  36.             STATICIP=`echo $IP | sed 's/\ //g;s/\;/\ /g'` 
  37.             if [ "$STATICIP" ]; then
  38.                 for i in $STATICIP; do
  39.                 set -- `echo $i | sed 's/,/\ /g'`
  40.                 echo "$2    $1.$DOMAIN    $1" >>$HST    
  41.                 done
  42.             fi
  43.             c="-l /etc/dhcpd.leases"
  44.         fi    
  45.         echo -n "Starting DNS...                "    
  46.         if [ "$DNSADDR" ]; then
  47.             b="-S $DNSADDR"
  48.             DNSCACHE=${DNSCACHE:-500}
  49.             CACHE="-c $DNSCACHE"
  50.             [ "$DNSADDR1" ] && b="$b -S $DNSADDR1"
  51.             if [ "$LOGDNS" = y -o "$BOOTMOD" = debug ]
  52.                 then dnsmasq -Rnbqf $b $c -s $DOMAIN $CACHE
  53.                 else dnsmasq -Rnbf $b $c -s $DOMAIN $CACHE
  54.             fi
  55.             = $?
  56.         else
  57.             = 1 "$CR No server set$CW"
  58.         fi        
  59.     else
  60.         echo "nameserver $DNSADDR" >>/$RSLV
  61.         [ "$DNSADDR1" ] && echo "nameserver $DNSADDR1" >>/$RSLV
  62.     fi
  63. }
  64.  
  65. case "$1" in
  66.     start)    str;;
  67.     stop)    stp; [ "`fn2`" ] && stp;;
  68.     restart|newip)  stp; str;;
  69.     status)    if [ "`fn2`" ]
  70.             then echo "Running dnsmasq:"; fn2
  71.             PID=`cat /var/dnsmasq.pid`
  72.             kill -10 $PID
  73.             else echo No running dnsmasq
  74.         fi;;
  75. esac
  76.