151 lines
3.1 KiB
Bash
151 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
#
|
|
# source functions.sh for einfo, eerror and ewarn
|
|
. /etc/init.d/functions.sh
|
|
|
|
setup() {
|
|
echo
|
|
echo
|
|
einfo "tinydns Setup"
|
|
echo
|
|
echo ">>> More information on this package can be found at"
|
|
echo ">>> http://cr.yp.to/djbdns/tinydns.html"
|
|
echo
|
|
echo "If you have previously setup tinydns, those directories will"
|
|
echo "not be overwritten. To redo setup, delete your"
|
|
echo "tinydns dir tree first."
|
|
echo
|
|
echo '(press enter to begin setup, or press control-C to abort)'
|
|
echo
|
|
read
|
|
|
|
echo
|
|
einfo "Install location"
|
|
echo
|
|
echo "Where do you want tinydns installed?"
|
|
echo "Ex. /var would install dnscache in /var/tinydns."
|
|
echo "!!No trailing slash!!"
|
|
echo
|
|
read -p "[/var]> " mypath
|
|
echo
|
|
|
|
if [ "$mypath" == "" ]
|
|
then
|
|
mypath="/var"
|
|
fi
|
|
|
|
if [ ! -e ${mypath} ]
|
|
then
|
|
echo ">>> Creating ${mypath}..."
|
|
mkdir $mypath
|
|
fi
|
|
|
|
# check for existance of users tinydns and dnslog:
|
|
echo
|
|
echo
|
|
einfo "Checking for tinydns and dnslog user accts ..."
|
|
echo
|
|
/usr/bin/grep nofiles /etc/group &> /dev/null
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo ">>> Adding group nofiles ..."
|
|
/usr/sbin/groupadd nofiles &> /dev/null
|
|
fi
|
|
|
|
/usr/bin/grep tinydns /etc/passwd &> /dev/null
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo ">>> Adding user tinydns ..."
|
|
/usr/sbin/useradd -d /dev/null -s /bin/false -g nofiles \
|
|
tinydns &> /dev/null
|
|
fi
|
|
|
|
/usr/bin/grep dnslog /etc/passwd &> /dev/null
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo ">>> Adding user dnslog ..."
|
|
/usr/sbin/useradd -d /dev/null -s /bin/false -g nofiles \
|
|
dnslog &> /dev/null
|
|
fi
|
|
|
|
|
|
# grab interfaces
|
|
addrs=`ifconfig -a | grep "inet addr" | cut -f2 -d":" | cut -f1 -d" "`
|
|
|
|
echo "Specify an address to which tinydns should bind."
|
|
echo "NOTICE: tinydns must be able to bind to port 53 on "
|
|
echo "choosen ip address! udp by tinydns - tcp by axfrdns"
|
|
echo "Usually this is NOT 127.0.0.1"
|
|
echo "Currently running IP addresses:"
|
|
echo
|
|
echo $addrs
|
|
echo
|
|
|
|
while [ "$myip" = "" ]
|
|
do
|
|
read -p "IP to bind nameserver to>" myip
|
|
done
|
|
echo
|
|
|
|
if [ ! -e ${mypath}/tinydns ]
|
|
then
|
|
einfo "Setting up tinydns..."
|
|
/usr/bin/tinydns-conf tinydns dnslog \
|
|
${mypath}/tinydns $myip
|
|
else
|
|
ewarn "*** tinydns directory currently exists, nothing done."
|
|
fi
|
|
|
|
#add afxrdns
|
|
if [ ! -e ${mypath}/axfrdns ]
|
|
then
|
|
einfo "Setting up axfrdns..."
|
|
/usr/bin/axfrdns-conf tinydns dnslog \
|
|
${mypath}/axfrdns ${mypath}/tinydns $myip
|
|
else
|
|
ewarn "*** axfrdns directory currently exists, nothing done."
|
|
fi
|
|
|
|
#grant access to axfrdns
|
|
|
|
echo
|
|
echo
|
|
einfo "Start service"
|
|
echo
|
|
echo "tinydns is ready for startup."
|
|
echo "Do you want dnscache to be started and"
|
|
echo "supervised by daemontools now?"
|
|
|
|
echo
|
|
echo "This requires daemontools to supervise"
|
|
echo "/service !!"
|
|
echo
|
|
echo '(press control-C to abort)'
|
|
read
|
|
|
|
# Don't make symbolic links to / !
|
|
# use ../ instead as it gives trouble in chrooted environments
|
|
# By Kalin KOZHUHAROV <kalin@ThinRope.net>
|
|
local fixedroot_path=`echo ${mypath} | sed -e 's#^/#../#'`
|
|
cd /service
|
|
ln -sf ${fixedroot_path}/tinydns .
|
|
ln -sf ${fixedroot_path}/axfrdns .
|
|
|
|
echo
|
|
echo
|
|
einfo "Installation successfull"
|
|
echo
|
|
|
|
}
|
|
|
|
# check for root user!
|
|
if [ `id -u` -ne 0 ]
|
|
then
|
|
eerror "${0}: must be root."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# run setup
|
|
setup
|