Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 76604 Details for
Bug 118371
Improving net-dns/djbdns and updating djbdns-setup
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
files/djbdns-setup.patch
djbdns-setup.patch (text/plain), 16.15 KB, created by
Kalin KOZHUHAROV
on 2006-01-09 02:37:31 UTC
(
hide
)
Description:
files/djbdns-setup.patch
Filename:
MIME Type:
Creator:
Kalin KOZHUHAROV
Created:
2006-01-09 02:37:31 UTC
Size:
16.15 KB
patch
obsolete
>--- /usr/portage/net-dns/djbdns/files/djbdns-setup 2004-05-23 23:55:44.000000000 +0900 >+++ /usr/local/portage/pkalin/net-dns/djbdns/files/djbdns-setup 2006-01-09 18:51:02.000000000 +0900 >@@ -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 @@ > 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" >+ 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 >+ 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 @@ > 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 @@ > 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 @@ > 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 @@ > 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 @@ > 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 @@ > { > 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 @@ > 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 @@ > > 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 >+ 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 >+ 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 >+ 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 >+ 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 >+ 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 >+ 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:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 118371
: 76604 |
76605