summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-dns/djbdns/files/djbdns-setup')
-rw-r--r--net-dns/djbdns/files/djbdns-setup387
1 files changed, 195 insertions, 192 deletions
diff --git a/net-dns/djbdns/files/djbdns-setup b/net-dns/djbdns/files/djbdns-setup
index 3f128b271020..ce821975029d 100644
--- a/net-dns/djbdns/files/djbdns-setup
+++ b/net-dns/djbdns/files/djbdns-setup
@@ -2,7 +2,9 @@
#
# djbdns-setup
#
-# Copyright (C) 2004 Kalin Kozhuharov <kalin@ThinRope.net>
+# Copyright (C) 2004-2006 Kalin KOZHUHAROV <kalin@thinrope.net>
+# The latest version of this script can be accessed at:
+# rsync://rsync.tar.bz/gentoo-portage-pkalin/net-dns/djbdns/files/djbdns-setup
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -16,21 +18,16 @@
# http://www.gnu.org/copyleft/gpl.html
#
-. /sbin/functions.sh
-# void ewarn(char* message)
-#
-# show a warning message and do NOT log it
+# {{{ Rip off the ewarn code from /sbin/functions.sh
+WARN=$'\e[33;01m'
+NORMAL=$'\e[0m'
ewarn() {
- if [ "${RC_QUIET_STDOUT}" = "yes" ]
- then
- echo " ${*}"
- else
- echo -e " ${WARN}*${NORMAL} ${*}"
- fi
-
+ echo -e " ${WARN}*${NORMAL} $*"
return 0
}
+# }}}
+# {{{ global vars
S_SEPARATOR="--------------------------------------------------------------------------------"
D_SEPARATOR="================================================================================"
@@ -44,43 +41,46 @@ dnscache=0
tinydns=1
axfrdns=2
+# global vars }}}
+
+# {{{ functions
check_group_users()
{
- echo ": Checking for required group (${REQ_GROUP}) :"
- grep ${REQ_GROUP} /etc/group &> /dev/null
- if [ $? -ne 0 ]
- then
+ echo ": Checking for required group (${REQ_GROUP}) :"
+ grep ${REQ_GROUP} /etc/group &> /dev/null
+ if [ $? -ne 0 ]
+ then
ebegin "Adding group ${REQ_GROUP}"
/usr/sbin/groupadd ${REQ_GROUP} &>/dev/null && eend 0 || eend 1
- fi
+ fi
- echo ": Checking for required users (${REQ_USERS}) :"
- for user in ${REQ_USERS};
- do
+ echo ": Checking for required users (${REQ_USERS}) :"
+ for user in ${REQ_USERS};
+ do
grep ${user} /etc/passwd &> /dev/null
if [ $? -ne 0 ]
then
- ebegin "Adding user ${user}"
- /usr/sbin/useradd -d /dev/null -s /bin/false -g ${REQ_GROUP} ${user} &>/dev/null && eend 0 || eend 1
+ ebegin "Adding user ${user}"
+ /usr/sbin/useradd -d /dev/null -s /bin/false -g ${REQ_GROUP} ${user} &>/dev/null && eend 0 || eend 1
fi
- done
- return 0
+ done
+ return 0
}
start_services()
{
- local services="$1"
-
- echo "${SEPARATOR}"
- echo ": Start services :"
- echo
- echo " Your services (${services// /, }) are ready for startup!"
- echo
- ewarn " The following requires daemontools to be running!"
- local answer=""
- read -p " Would you like ${services// /, } to be started and supervised by daemontools now? [Y|n]> " answer
- if [ "${answer}" == "Y" ] || [ "${answer}" == "" ]
- then
+ local services="$1"
+
+ echo "${SEPARATOR}"
+ echo ": Start services :"
+ echo
+ echo " Your services (${services// /, }) are ready for startup!"
+ echo
+ ewarn " The following requires daemontools to be running!"
+ local answer=""
+ read -p " Would you like ${services// /, } to be started and supervised by daemontools now? [Y|n]> " answer
+ if [ "${answer}" == "Y" ] || [ "${answer}" == "" ]
+ then
ebegin "Checking if daemontools are running"
ps -A |grep svscanboot &>/dev/null && eend 0 || eend 1
@@ -91,10 +91,10 @@ start_services()
local fixedroot_path=`echo ${mypath} | sed -e 's#^/#../#'`
for service in ${services};
do
- for ip in ${IPs[${service}]};
- do
+ for ip in ${IPs[${service}]};
+ do
ln -sf ${fixedroot_path}/${service}/${ip} /service/${service}_${ip}
- done
+ done
done
eend 0
@@ -110,18 +110,18 @@ start_services()
echo
for service in ${services};
do
- for ip in ${IPs[${service}]};
- do
+ for ip in ${IPs[${service}]};
+ do
svstat /service/${service}_${ip} /service/${service}_${ip}/log
- done
+ done
done
- fi
- return 0
+ fi
+ return 0
}
tinydns_setup()
{
- return 0
+ return 0
}
axfrdns_setup()
@@ -131,7 +131,7 @@ axfrdns_setup()
echo
TCPRULES_DIR="${mypath}/axfrdns/${myip}/control"
echo " axfrdns is accessed by your secondary servers and when response cannot fit UDP packet"
- echo " You have to specify their which IP addresses are allowed to access it"
+ echo " You have to specify which IP addresses are allowed to access it"
echo " in ${TCPRULES_DIR}/tcp.axfrdns"
echo
echo " Example:"
@@ -145,24 +145,24 @@ axfrdns_setup()
sed -i -e "s#-x tcp.cdb#-x control/tcp.axfrdns.cdb#g" ${mypath}/axfrdns/${myip}/run
if [ -e ${TCPRULES_DIR}/tcp.axfrdns ]
then
- ewarn "${TCPRULES_DIR}/tcp.axfrdns exists."
- read -p " Do you want it cleared? [Y|n]: " answer
- if [ "${answer}" == "Y" ] || [ "${answer}" == "" ]
- then
+ ewarn "${TCPRULES_DIR}/tcp.axfrdns exists."
+ read -p " Do you want it cleared? [y|N]: " answer
+ if [ "${answer}" == "y" ]
+ then
echo '# sample line: 1.2.3.4:allow,AXFR="heaven.af.mil/3.2.1.in-addr.arpa"' > ${TCPRULES_DIR}/tcp.axfrdns
- fi
+ fi
fi
read -p " IP to allow (press Enter to end)> " ipallow
while [ "$ipallow" != "" ]
do
- echo "${ipallow}:allow" >> ${TCPRULES_DIR}/tcp.axfrdns
- read -p " IP to allow (press Enter to end)> " ipallow
+ echo "${ipallow}:allow" >> ${TCPRULES_DIR}/tcp.axfrdns
+ read -p " IP to allow (press Enter to end)> " ipallow
done
echo ":deny" >> ${TCPRULES_DIR}/tcp.axfrdns
- echo " Here is the tcprules file created so far:"
+ echo " Here are the tcprules created so far:"
echo
cat ${TCPRULES_DIR}/tcp.axfrdns
echo
@@ -170,8 +170,8 @@ axfrdns_setup()
read -p " Would you like ${TCPRULES_DIR}/tcp.axfrdns.cdb updated? [Y|n]: " answer
if [ "${answer}" == "Y" ] || [ "${answer}" == "" ]
then
- ebegin "Updating ${TCPRULES_DIR}/tcp.axfrdns.cdb"
- bash -c "cd ${TCPRULES_DIR} && make" && eend 0 || eend 1
+ ebegin "Updating ${TCPRULES_DIR}/tcp.axfrdns.cdb"
+ bash -c "cd ${TCPRULES_DIR} && make" && eend 0 || eend 1
fi
return 0
}
@@ -180,10 +180,11 @@ dnscache_setup()
{
echo ": Configure forwarding :"
echo
- echo " dnscache can be configured to forward queries to another DNS cache"
- echo " (such as the one your ISP provides) rather than perform the lookups itself."
+ echo " dnscache can be configured to forward queries to another"
+ echo " DNS cache (such as the one your ISP provides) rather than"
+ echo " performing the lookups itself."
echo
- echo " To enable this forwarding-only mode (a good idea most of the time),"
+ echo " To enable this forwarding-only mode (usually a good idea),"
echo " provide the IPs of the caches to forward to."
echo " To have dnscache perform the lookups itself, just press Enter."
echo
@@ -191,42 +192,43 @@ dnscache_setup()
echo
if [ "$myforward" != "" ]
then
- echo $myforward > ${mypath}/dnscache/${myip}/root/servers/\@
- echo -n "1" > ${mypath}/dnscache/${myip}/env/FORWARDONLY
+ echo $myforward > ${mypath}/dnscache/${myip}/root/servers/\@
+ echo -n "1" > ${mypath}/dnscache/${myip}/env/FORWARDONLY
- read -p " forward-to IP (press Enter to end)> " myforward
- while [ "$myforward" != "" ]
- do
+ read -p " forward-to IP (press Enter to end)> " myforward
+ while [ "$myforward" != "" ]
+ do
echo $myforward >> ${mypath}/dnscache/${myip}/root/servers/\@
read -p " forward-to IP (press Enter to end)> " myforward
- done
+ done
- echo
- echo " Currently all queries will be forwarded to:"
- echo
- cat ${mypath}/dnscache/${myip}/root/servers/\@
- echo
+ echo
+ echo " Currently all queries will be forwarded to:"
+ echo
+ cat ${mypath}/dnscache/${myip}/root/servers/\@
+ echo
fi
echo "${SEPARATOR}"
echo ": Configuring clients :"
echo
- echo " By default dnscache allows only localhost (127.0.0.1) to access it."
- echo " You have to specify the IP addresses of the clients that shall be allowed to use it."
+ echo " By default dnscache allows only localhost (127.0.0.1) to"
+ echo " access it. You have to specify the IP addresses of the"
+ echo " clients that shall be allowed to use it."
echo
echo " Example:"
- echo " 1.2.3.4 would allow only the host 1.2.3.4"
- echo " 1.2.3 would allow all hosts 1.2.3.x (like 1.2.3.4, 1.2.3.100, etc.)"
+ echo " 1.2.3.4 would allow only one host: 1.2.3.4"
+ echo " 1.2.3 would allow all hosts 1.2.3.0/24 (e.g. 1.2.3.4, 1.2.3.100, etc.)"
echo
- echo " Press Enter if you do not want to allow external clients!"
+ echo " Press Enter if you do NOT want to allow external clients!"
echo
read -p " Allowed IP> " myclientip
while [ "$myclientip" != "" ]
do
- touch ${mypath}/dnscache/${myip}/root/ip/${myclientip}
- read -p " Allowed IP (press Enter to end)> " myclientip
+ touch ${mypath}/dnscache/${myip}/root/ip/${myclientip}
+ read -p " Allowed IP (press Enter to end)> " myclientip
done
echo
@@ -245,174 +247,175 @@ dnscache_setup()
common_setup()
{
- local service_human="$1"
- local service_machine="$2"
- local services="$3"
+ local service_human="$1"
+ local service_machine="$2"
+ local services="$3"
- echo ": ${service_human} setup :"
- echo
+ echo ": ${service_human} setup :"
+ echo
- for service in ${services};
- do
+ for service in ${services};
+ do
if [ ! -e ${mypath}/${service} ]
then
- ebegin "Creating ${mypath}/${service}"
- mkdir -p $mypath/${service} && eend 0 || eend 1
+ ebegin "Creating ${mypath}/${service}"
+ mkdir -p $mypath/${service} && eend 0 || eend 1
fi
- done
-
- echo "${SEPARATOR}"
- echo ": IP address to bind to :"
- echo
- echo " Specify an address to which the ${service_human} should bind."
- echo " Currently accessible IPs:"
- local addrs=`ifconfig -a | grep "inet addr" | cut -f2 -d":" | cut -f1 -d" "`
- echo " "$addrs
- echo
-
- while [ "${myip}" == "" ]
- do
+ done
+
+ echo "${SEPARATOR}"
+ echo ": IP address to bind to :"
+ echo
+ echo " Specify an address to which the ${service_human} should bind."
+ echo " Currently accessible IPs:"
+ local addrs=`ifconfig -a | grep "inet addr" | cut -f2 -d":" | cut -f1 -d" "`
+ echo " "$addrs
+ echo
+
+ while [ "${myip}" == "" ]
+ do
read -p " IP to bind to> " myip
- done
- echo
+ done
+ echo
- for service in ${services};
- do
+ for service in ${services};
+ do
IPs[${service}]="${IPs[${service}]} ${myip}"
- done
+ done
- local dnscache_INSTALL="/usr/bin/dnscache-conf dnscache dnslog ${mypath}/dnscache/${myip} $myip"
- local tinydns_INSTALL="/usr/bin/tinydns-conf tinydns dnslog ${mypath}/tinydns/${myip} $myip"
- local axfrdns_INSTALL="\
+ local dnscache_INSTALL="/usr/bin/dnscache-conf dnscache dnslog ${mypath}/dnscache/${myip} $myip"
+ local tinydns_INSTALL="/usr/bin/tinydns-conf tinydns dnslog ${mypath}/tinydns/${myip} $myip"
+ local axfrdns_INSTALL="\
/usr/bin/axfrdns-conf tinydns dnslog ${mypath}/axfrdns/${myip} ${mypath}/tinydns/${myip} $myip &&\
mkdir -p ${mypath}/axfrdns/${myip}/control &&\
echo -e \"tcp.axfrdns.cdb:\ttcp.axfrdns\n\ttcprules tcp.axfrdns.cdb .tcp.axfrdns.cdb.tmp < tcp.axfrdns\" > ${mypath}/axfrdns/${myip}/control/Makefile &&\
rm -f ${mypath}/axfrdns/${myip}/tcp ${mypath}/axfrdns/${myip}/Makefile"
- for service in ${services};
- do
+ for service in ${services};
+ do
if [ ! -e ${mypath}/${service}/${myip} ]
then
- ebegin "Setting up ${service} in ${mypath}/${service}/${myip}"
- eval command=\$${service}_INSTALL
- /bin/bash -c "${command}" && eend 0 || eend 1
+ ebegin "Setting up ${service} in ${mypath}/${service}/${myip}"
+ eval command=\$${service}_INSTALL
+ /bin/bash -c "${command}" && eend 0 || eend 1
else
- ewarn "${service} directory ${mypath}/${service}/${myip} exists, nothing done."
+ ewarn "${service} directory ${mypath}/${service}/${myip} exists, nothing done."
fi
- done
+ done
}
+# functions }}}
-
-
-
+# {{{ main script
if [ `id -u` -ne 0 ]
then
- eerror "${0}: You must be root."
+ ewarn "You must be root to run this script, sorry."
exit 1
else
- echo "${D_SEPARATOR}"
- echo ": DJB DNS setup :"
- echo
- echo " This script will help you setup the following:"
- echo
- echo " DNS server(s): to publish addresses of Internet hosts"
- echo
- echo " DNS cache(s) : to find addresses of Internet hosts"
- echo
- echo " For further information see:"
- echo " http://cr.yp.to/djbdns/blurb/overview.html"
- echo
- ewarn "If you have already setup your services,"
- ewarn "either exit now, or setup in different directories."
- echo
-
- answer=""
- read -p " Would you like to continue with setup? [Y|n]> " answer
- if [ "${answer}" == "n" ] || [ "${answer}" == "N" ]
- then
+ echo "${D_SEPARATOR}"
+ echo ": DJB DNS setup :"
+ echo
+ echo " This script will help you setup the following:"
+ echo
+ echo " DNS server(s): to publish addresses of Internet hosts"
+ echo
+ echo " DNS cache(s) : to find addresses of Internet hosts"
+ echo
+ echo " For further information see:"
+ echo " http://cr.yp.to/djbdns/blurb/overview.html"
+ echo
+ ewarn "If you have already setup your services,"
+ ewarn "either exit now, or setup in different directories."
+ echo
+
+ answer=""
+ read -p " Would you like to continue with setup? [Y|n]> " answer
+ if [ "${answer}" == "n" ] || [ "${answer}" == "N" ]
+ then
ewarn "Aborting setup"
exit 1
- fi
-
- echo "${D_SEPARATOR}"
- echo ": Choose install location :"
- echo
- default_path="/var"
- echo " The default (${default_path}) will install them"
- echo " in ${default_path}/\${service}/\${IP_ADDRESS}"
- echo
- echo " For example:"
- echo " /var/tinydns /1.2.3.4"
- echo " /192.168.33.1"
- echo " /axfrdns /1.2.3.4"
- echo " /192.168.33.1"
- echo " /dnscache/127.0.0.1"
- echo
- ewarn "Do NOT enter trailing slash"
- echo " Where do you want services installed?"
- read -p "[${default_path}] > " mypath
- echo
-
- if [ "${mypath}" == "" ]
- then
+ fi
+
+ echo "${D_SEPARATOR}"
+ echo ": Choose install location :"
+ echo
+ default_path="/var"
+ echo " The default (${default_path}) will install them"
+ echo " in ${default_path}/\${service}/\${IP_ADDRESS}"
+ echo
+ echo " For example:"
+ echo " /var/tinydns /1.2.3.4"
+ echo " /192.168.33.1"
+ echo " /axfrdns /1.2.3.4"
+ echo " /192.168.33.1"
+ echo " /dnscache/127.0.0.1"
+ echo
+ ewarn "Do NOT enter trailing slash"
+ echo " Where do you want services installed?"
+ read -p "[${default_path}] > " mypath
+ echo
+
+ if [ "${mypath}" == "" ]
+ then
mypath=${default_path}
- fi
+ fi
- echo "${D_SEPARATOR}"
- check_group_users
+ echo "${D_SEPARATOR}"
+ check_group_users
- answer=""
- another=""
- until [ "$answer" == "n" ]
- do
+ answer=""
+ another=""
+ until [ "$answer" == "n" ]
+ do
echo "${D_SEPARATOR}"
answer=""
read -p " Would you like to setup ${another}dnscache? [Y|n]> " answer
if [ "${answer}" == "Y" ] || [ "${answer}" == "" ]
then
- myip=""
- echo "${S_SEPARATOR}"
- common_setup "DNS cache" "dnscache" "dnscache"
- if [ $? == 0 ]
- then
+ myip=""
+ echo "${S_SEPARATOR}"
+ common_setup "DNS cache" "dnscache" "dnscache"
+ if [ $? == 0 ]
+ then
dnscache_setup
- else
+ else
ewarn "Skipping dnscache specific setup."
- fi
+ fi
fi
another="another "
- done
+ done
- answer=""
- another=""
- until [ "$answer" == "n" ]
- do
+ answer=""
+ another=""
+ until [ "$answer" == "n" ]
+ do
echo "${D_SEPARATOR}"
answer=""
read -p " Would you like to setup ${another}DNS server? [Y|n]> " answer
if [ "${answer}" == "Y" ] || [ "${answer}" == "" ]
then
- myip=""
- echo "${S_SEPARATOR}"
- common_setup "DNS server" "{tinydns,afxrdns}" "tinydns axfrdns"
- if [ $? == 0 ]
- then
+ myip=""
+ echo "${S_SEPARATOR}"
+ common_setup "DNS server" "{tinydns,afxrdns}" "tinydns axfrdns"
+ if [ $? == 0 ]
+ then
tinydns_setup
axfrdns_setup
- else
+ else
ewarn "Skipping tinydns and axfrdns specific setup."
- fi
+ fi
fi
another="another "
- done
+ done
- echo "${D_SEPARATOR}"
+ echo "${D_SEPARATOR}"
- start_services "tinydns axfrdns dnscache"
-
- echo "${D_SEPARATOR}"
+ start_services "tinydns axfrdns dnscache"
+
+ echo "${D_SEPARATOR}"
fi
+# main script }}}
+# vim: set ts=4 fenc=utf-8 foldmethod=marker: