#!/bin/sh
# url: http://pank.org/scripts/
# description: auto generate resolv.conf
# comment: csh bash
# platform: all

DNS=168.95.192.1
RESOLV=/tmp/resolv.conf
TEMP=/tmp/autoresolv.tmp
TESTDN=tw.yahoo.com
N=0

wanip() {
    lynx -dump http://77bbs.com/ip/ip.php
}

if host `wanip` $DNS | grep -q pointer ; then
    echo -n " 0 " > $TEMP
    host `wanip` $DNS | awk '/pointer/ {print $NF}' >> $TEMP
    traceroute $DNS >> $TEMP 2> /dev/null &
else
    traceroute $DNS > $TEMP 2> /dev/null &
fi
sleep 1
killall traceroute > /dev/null 2>&1
rm -f $RESOLV
for i in `awk '{print $2}' $TEMP`
do
    if echo $i | grep -q "[A-Za-z]$" ; then
        for j in 2 3 4
        do
            DN=`echo $i | cut -d. -f$j-`
            if echo $DN | grep -q '\.' ; then # at least one .
                host -t ns $DN $DNS 2> /dev/null | grep "name server" > /tmp/ns.tmp
                if [ -s /tmp/ns.tmp ] ; then # have name server
                    for k in `awk '{print $NF}' /tmp/ns.tmp`
                    do
                        IP=`host $k $DNS | awk '/address/ {print $NF}' | head -1`
                        if host $TESTDN $IP | grep -q address ; then # can resolv
                            N=$(($N+1))
                            echo nameserver $IP
                            if [ $N -eq 2 ] ; then
                                exit 0
                            fi
                        fi
                    done
                fi
            fi
        done
    fi
done
# fail
exit 1