#!/bin/sh

ME=`whoami`
if [ "$ME" != "root" ]
then
  echo "This test only works if run as root.  Skipping."
  exit 77
fi
if ! which sudo > /dev/null
then
  echo "This test requires sudo.  Skipping."
  exit 77
fi
if [ ! -x `which sudo` ]
then
  echo "This test requires sudo.  Skipping."
  exit 77
fi
if ! which nslookup > /dev/null
then
  echo "This test requires nslookup.  Skipping."
  exit 77
fi
if [ ! -x `which nslookup` ]
then
  echo "This test requires nslookup.  Skipping."
  exit 77
fi
if [ ! -x `which iptables` ]
then
    echo "This test requires iptables.  Skipping."
    exit 77
fi
if ! iptables -t mangle --list > /dev/null 2>&1
then
  echo "This test requires iptables with 'mangle' support. Skipping."
  exit 77
fi
if grep % /etc/resolv.conf > /dev/null 2>&1
then
  echo "This system seems to use a DNS server on an IPv6 link-local address, which is not supported. Skipping."
  exit 77
fi

if test ! `id nobody`;
then
    echo "This tests requires a user account 'nobody'. Skipping."
    exit 77
fi

export PATH=".:$PATH"
gnunet-service-dns -c dns.conf &
gnunet-dns-redirector -c dns.conf -4 127.0.0.1 &
sleep 1
# need to run 'nslookup' as 'nobody', as gnunet-service-dns runs as root
# and thus 'root' is excepted from DNS interception!
LO=`sudo -u nobody nslookup -type=A gnunet.org | grep Address | tail -n1`
if [ "$LO" != "Address: 127.0.0.1" ]
then
 echo "Fail: got address $LO, wanted 127.0.0.1"
 ret=1
else
 echo "Test run, with success."
 ret=0
fi
# TODO: jobs is a possible bashism. Fix.
kill `jobs -p`
exit $ret
