#!/bin/bash #NEED:bind_tools #NEED:patch ##NEED:mpc ##DEP:linux_headers CWD=`pwd` VERSION=1.05 ROOT=`pwd` PKGROOT=$ROOT/pkgtmp; PGM=`ls |grep djbdns|cut -f1,2 -d "."` PKGSOURCE=`ls djbdns*|grep -v DatuX` EXT=`ls |grep djbdns|grep tar.gz` if [ -z $EXT ] ; then EXT=tar.bz2 TARCMD="tar -xjf" PGM=`ls djbdns-*.$EXT | sed s/.tar.bz2//` else EXT=tar.gz TARCMD="tar -xzf" PGM=`ls djbdns-*.$EXT | sed s/.tar.gz//` fi VER=`ls|grep DatuX|cut -f3,4 -d -|sed s/i386-//|sed s/DatuX.tgz//|tail -n1` (( VER++ )) SLEXT=i386-"$VER"DatuX.tgz export MAKEFLAGS="-j1" if [ -d $ROOT/pkgtmp ] ; then rm -rf "$ROOT/pkgtmp" fi #mkdir $ROOT/pkgtmp #mkdir -p $PKGROOT/pkgtmp/usr/bin cd $ROOT if [ -d $PGM ] ; then rm -rf $PGM fi $TARCMD $PGM.$EXT ||exit 1 if [ $? == 1 ] ; then echo "#" echo "######################### Untarring file failed #################################" echo "#" exit 1 fi mkdir -p $PKGROOT/usr/bin $PKGROOT/etc/postinst.d $PKGROOT/service $PKGROOT/home/system/{tinydns,dnscache} || exit 1 cd $ROOT/$PGM #patches must be applied in some order. cat ../ignoreip-1.05.patch | patch -p1 || exit 1 cat ../headtail.patch | patch -p2 || exit 1 cat ../dnsroots.patch | patch -p1 || exit 1 cat ../dnstracesort.patch | patch -p1 dnstracesort.sh || exit 1 cat ../CVE2009-0858_0001-check-response-domain-name-length.patch | patch -p1 || exit 1 cat ../CVE2008-4392_0001-dnscache-merge-similar-outgoing-queries.patch | patch -p1 || exit 1 cat ../CVE2008-4392_0002-dnscache-cache-soa-records.patch | patch -p1 || exit 1 cat ../err.patch | patch -p1 || exit 1 cat ../tinydns-conf.patch | patch -p1 || exit 1 cat conf-home |sed s/"\/local"// >conf-home.new mv conf-home.new conf-home #large file support sed 's/write-strings/write-strings -D_FILE_OFFSET_BITS=64 /' conf-cc -i || exit 1 make || exit 1 find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : |while read elf;do cp $elf $PKGROOT/usr/bin/ ;done rm $PKGROOT/usr/bin/install cp $ROOT/$PGM/dnsroots.global $PKGROOT/etc cp $CWD/post.djbdns $PKGROOT/etc/postinst.d/post.djbdns chmod +x $PKGROOT/etc/postinst.d/post.djbdns cp $ROOT/djb_update.pl $PKGROOT/usr/bin mkdir -p $PKGROOT/service/djb_update cat >$PKGROOT/service/djb_update/run </dev/null php ./djbdns.php update &>/dev/null cd /home/system/tinydns/root exec /usr/bin/djb_update.pl EOF chmod +x $PKGROOT/service/djb_update/run #maak alle configfiles eindigend op .new find $PKGROOT/home/system -follow -type f -exec mv "{}" "{}.new" \; || exit 1 #startstop checking scripts mkdir -p $PKGROOT/var/dnscache cp $CWD/start.djbdns $PKGROOT/var/dnscache/start cp $CWD/stop.djbdns $PKGROOT/var/dnscache/stop chmod +x $PKGROOT/var/dnscache/{start,stop} || exit 1 #create fresh root ns file ./dnsip `./dnsqr ns . | awk '/answer:/ { print $5; }' |sort` > $PKGROOT/etc/dnsroots.global || exit 1 if [ `cat $PKGROOT/etc/dnsroots.global | wc -l` -lt 8 ]; then echo "Error while downloading dns root servers?" exit 1 fi cd $PKGROOT NAME=`echo $0|cut -f2 -d'.'` makepkg -l y -c n $CWD/$NAME.pkg > /dev/null && echo $VERSION > $CWD/$NAME.version && arch > $CWD/$NAME.arch #mv *.tgz .. #cd $ROOT #rm -r $PGM $PKGROOT