X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=djbdns.spec;h=15347541d73026d385ba7cb9885ef57e6dd5f4cc;hb=013f3e48f1afab49d70331af14b36a4cdf13f434;hp=e7898b486b34dfd14d62576689ab82ea94b892eb;hpb=649d2612a6f3c270daa4a00f92a25d80325fd1d5;p=packages%2Fdjbdns.git diff --git a/djbdns.spec b/djbdns.spec index e7898b4..1534754 100644 --- a/djbdns.spec +++ b/djbdns.spec @@ -1,18 +1,52 @@ -Summary: DJB DNS -Summary(pl): DJB DNS +# TODO +# - warning: Installed (but unpackaged) file(s) found: +# /etc/rbldns/data +# /usr/bin/random-ip +Summary: DJB DNS +Summary(pl.UTF-8): DJB DNS Name: djbdns Version: 1.05 -Release: 5 -License: GPL +Release: 23.2 +# http://cr.yp.to/distributors.html +License: Public Domain Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery Source0: http://cr.yp.to/djbdns/%{name}-%{version}.tar.gz +# Source0-md5: 3147c5cd56832aa3b41955c7a51cbeb2 Source1: %{name}-doc.tar.gz +# Source1-md5: 1d6aed1a5d3d3eda3958fa3e7d808fc8 +Source2: ftp://ftp.innominate.org/gpa/djb/%{name}-%{version}-man.tar.gz +# Source2-md5: 2b4e71fa4592858e4508538f78d50f61 +Source3: http://www.sericyb.com.au/tinydns-notify +# NoSource3-md5: 2213bdc8c58c10cb8770b7e5b0d67aea +Source4: http://www.sericyb.com.au/tinydns-log +# NoSource4-md5: a9af7707a7cb7c41e855f441e242e422 Patch0: dnscache-1.05-multiple-ip.patch -Patch1: http://www.fefe.de/dns/djbdns-1.05-ipv6.diff +# adds IPv6 support +Patch1: http://www.fefe.de/dns/%{name}-1.05-test22.diff.bz2 +Patch3: http://iksz.hu/package/djbdns-conf/%{name}-1.05-multi_tinydns_data.patch +Patch4: %{name}-srv.patch +Patch5: %{name}-glibc.patch +# http://www.iecc.com/rbldns-patch.txt +Patch6: %{name}-rbldns_a.patch +# http://core.segfault.pl/~hobbit/tinydns-include.patch +Patch8: %{name}-tinydns-include.patch +Patch9: %{name}-tinydns-log-ipv6.patch +# http://romana.now.ie/software/djbdns-cachestats.patch +Patch10: %{name}-cachestats.patch +Patch11: %{name}-ipv6-incfix.patch URL: http://cr.yp.to/djbdns.html -Prereq: shadow +BuildRequires: rpm-perlprov +BuildRequires: rpmbuild(macros) >= 1.202 +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/bin/getgid +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Provides: group(djbdns) +Provides: nameserver +Provides: user(dnslog) +Obsoletes: caching-nameserver BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description @@ -23,239 +57,329 @@ This package contains some basic DNS debugging tools and some documentation. If you need a DNS server install one of the following packages: - - dnscache - a local DNS cache - - tinydns - a DNS server - - pickdns - a DNS load-balancing server - - walldns - a reverse DNS wall - - rbldns - an IP-address-listing DNS server - - axfrdns - a DNS zone transfer server + - djbdns-dnscache - a local DNS cache + - djbdns-dnscachex - a external DNS cache + - djbdns-tinydns - a DNS server + - djbdns-tinydns-notify - a tool to send NOTIFY requests + - djbdns-pickdns - a DNS load-balancing server + - djbdns-walldns - a reverse DNS wall + - djbdns-rbldns - an IP-address-listing DNS server + - djbdns-axfrdns - a DNS zone transfer server -%description -l de +%description -l de.UTF-8 Dies ist ein Satz von auf Sicherheit zielenden DNS-Servers. Man kriegt ein Preis, wenn man ein Sicherheitsloch findet. -Dieses Paket enthält ein paar DNS-Werkzeugen und etwas Dokumentation. +Dieses Paket enthält ein paar DNS-Werkzeugen und etwas Dokumentation. Wenn du einen DNS-Server braucht, installe ein von den folgenden Paketen: - - dnscache - ein lokaler DNS-Cache - - tinydns - ein DNS-Server - - pickdns - ein Belastung ausgleichender DNS-Server - - walldns - eine Wand Rückgekehrten DNSs - - rbldns - ein IP-Adressen-Listen-DNS-Server - - axfrdns - ein DNS-Zonen-Transfer-Server + - djbdns-dnscache - ein lokaler DNS-Cache + - djbdns-tinydns - ein DNS-Server + - djbdns-pickdns - ein Belastung ausgleichender DNS-Server + - djbdns-walldns - eine Wand Rückgekehrten DNSs + - djbdns-rbldns - ein IP-Adressen-Listen-DNS-Server + - djbdns-axfrdns - ein DNS-Zonen-Transfer-Server -%description -l pl -Jest to alternatywny zestaw serwerów DNS'u, którego g³ównym celem jest -bezpieczeñstwo. Za znalezienie dziury w tym systemie zosta³a +%description -l pl.UTF-8 +Jest to alternatywny zestaw serwerów DNS'u, którego głównym celem jest +bezpieczeństwo. Za znalezienie dziury w tym systemie została wyznaczona nawet nagroda. -Ten pakiet zawiera kilka podstawowych narzêdzi DNS oraz trochê -dokumentacji. Je¶li potrzebujesz serwera DNS zainstaluj jeden z -nastêpuj±cych pakietów: +Ten pakiet zawiera kilka podstawowych narzędzi DNS oraz trochę +dokumentacji. Jeśli potrzebujesz serwera DNS zainstaluj jeden z +następujących pakietów: - - dnscache - lokalny cache DNS - - tinydns - serwer DNS - - pickdns - serwer DNS do równowa¿enia obci±¿eñ - - walldns - ¶ciana dla odwrotnych zapytañ DNS - - rbldns - serwer DNS list adresów IP - - axfrdns - serwer transferów stref DNS + - djbdns-dnscache - lokalny cache DNS + - djbdns-tinydns - serwer DNS + - djbdns-tinydns-notify - narzędzie do wysyłania komunikatów NOTIFY + - djbdns-pickdns - serwer DNS do równoważenia obciążeń + - djbdns-walldns - ściana dla odwrotnych zapytań DNS + - djbdns-rbldns - serwer DNS list adresów IP + - djbdns-axfrdns - serwer transferów stref DNS -%package -n dnscache +%package dnscache Summary: DJB's local DNS cache -Summary(de): DJBs lokaler DNS-Cache -Summary(pl): Lokalny cache DNS od DJB +Summary(de.UTF-8): DJBs lokaler DNS-Cache +Summary(pl.UTF-8): Lokalny cache DNS od DJB Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery -Requires: %{name} = %{version} -Requires: daemontools -Prereq: fileutils -Prereq: shadow - -%description -n dnscache +Requires(post): diffutils +Requires(post): fileutils +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires(preun): daemontools +Requires: %{name} = %{version}-%{release} +Requires: daemontools >= 0.70-5 +Provides: user(dnscache) +Obsoletes: dnscache + +%description dnscache dnscache is a local DNS cache from the djbdns package. It accepts recursive DNS queries from local clients such as web browsers and mail transfer agents. It collects responses from remote DNS servers. It caches the responses to save time later. -%description -n dnscache -l de -dnscache ist ein lokaler DNS-Cache aus dem djbdns-Paket. Es empfängt +%description dnscache -l de.UTF-8 +dnscache ist ein lokaler DNS-Cache aus dem djbdns-Paket. Es empfängt rekursive DNS-Fragen von den lokalen Klienten, zum Beispiel Web-Browsers und Mail-Transfer-Agenten. Es sammelt die Antworten von -den Fern-DNS-Servers. Es merkt sich die Antworten, um die Zeit später +den Fern-DNS-Servers. Es merkt sich die Antworten, um die Zeit später zu sparen. -%description -n dnscache -l pl +%description dnscache -l pl.UTF-8 dnscache jest lokalnym cachem DNS z pakietu djbdns. Przyjmuje on -rekursywne zapytania DNS od lokalnych klientów takich, jak -przegl±darki WWW i agenci transferu poczty (MTA). Zbiera on odpowiedzi -od zdalnych serwerów DNS. Zapamiêtuje on odpowiedzi, ¿eby pó¼niej -oszczêdziæ czas. +rekursywne zapytania DNS od lokalnych klientów takich, jak +przeglądarki WWW i agenci transferu poczty (MTA). Zbiera on odpowiedzi +od zdalnych serwerów DNS. Zapamiętuje on odpowiedzi, żeby później +oszczędzić czas. -%package -n tinydns +%package dnscachex +Summary: DJB's external DNS cache +Group: Networking/Daemons +Requires(post): diffutils +Requires(post): fileutils +Requires(preun): daemontools +Requires: %{name}-dnscache = %{version}-%{release} + +%description dnscachex +dnscachex is a external DNS cache from the djbdns package. It accepts +recursive DNS queries from external clients such as web browsers and +mail transfer agents. It collects responses from remote DNS servers. +It caches the responses to save time later. + +%package tinydns Summary: DJB's DNS server -Summary(de): DJBs DNS-Server -Summary(pl): Serwer DNS od DJB +Summary(de.UTF-8): DJBs DNS-Server +Summary(pl.UTF-8): Serwer DNS od DJB Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery -Requires: %{name} = %{version} -Requires: daemontools +Requires(post): diffutils +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires(preun): daemontools +Requires: %{name} = %{version}-%{release} +Requires: daemontools >= 0.70-5 Requires: make -Prereq: shadow +Provides: user(tinydns) +Obsoletes: tinydns -%description -n tinydns +%description tinydns tinydns is a DNS server from the djbdns package. It accepts iterative DNS queries from hosts around the Internet and responds with locally-configured information. -%description -n tinydns -l de -tinydns ist ein DNS-Server aus dem djbdns-Paket. Es empfängt iterative +%description tinydns -l de.UTF-8 +tinydns ist ein DNS-Server aus dem djbdns-Paket. Es empfängt iterative DNS-Fragen von dem Hosts aus allem Internet und antwortet mit den lokal-konfigurierten Informationen. -%description -n tinydns -l pl +%description tinydns -l pl.UTF-8 tinydns jest serwerem DNS z pakietu djbdns. Przyjmuje on iteracyjne -zapytania DNS od komputerów z ca³ego Internetu i odpowiada przy u¿yciu +zapytania DNS od komputerów z całego Internetu i odpowiada przy użyciu lokalnie skonfigurowanych informacji. -%package -n pickdns +%package tinydns-notify +Summary: DNS NOTIFY sending tool +Summary(pl.UTF-8): Narzędzie do wysyłania komunikatów DNS NOTIFY +License: Free to use +Group: Networking/Daemons +URL: http://www.sericyb.com.au/tinydns-notify +Requires: %{name} = %{version}-%{release} +Requires: perl-Net-DNS +Requires: perl-modules +Obsoletes: tinydns-notify + +%description tinydns-notify +tinydns-notify is a tool written in Perl, which extracts zones and +their nameservers from tinydns-data files and sends DNS NOTIFY +requests to nameservers listed in notify-list file. + +%description tinydns-notify -l pl.UTF-8 +tinydns-notify jest napisanym w Perlu narzędziem, które czyta pliki +stref i odpowiadające im serwery nazw z plików tinydns-data, a +następnie wysyła żądania NOTIFY do serwerów wyspecyfikowanych w pliku +notify-list. + +%package pickdns Summary: DJB's load-balancing DNS server -Summary(de): DJBs Belastung ausgleichender DNS-Server -Summary(pl): Serwer DNS równowa¿±cy obci±¿enie od DJB +Summary(de.UTF-8): DJBs Belastung ausgleichender DNS-Server +Summary(pl.UTF-8): Serwer DNS równoważący obciążenie od DJB Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery -Requires: %{name} = %{version} -Requires: daemontools +Requires(post): diffutils +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires(preun): daemontools +Requires: %{name} = %{version}-%{release} +Requires: daemontools >= 0.70-5 Requires: make -Prereq: shadow +Provides: user(pickdns) +Obsoletes: pickdns -%description -n pickdns +%description pickdns pickdns is a DNS load-balancing server from the djbdns package. It accepts iterative DNS queries from hosts around the Internet and responds with a dynamic selection of locally configured IP addresses with 5-second TTLs. -%description -n pickdns -l de +%description pickdns -l de.UTF-8 pickdns ist ein Belastung ausgleichender DNS-Server aus dem -djbdns-Paket. Es empfängt iterative DNS-Fragen von den Hosts aus allem +djbdns-Paket. Es empfängt iterative DNS-Fragen von den Hosts aus allem Internet und antwortet mit eine dynamische Auswahl von den lokal-konfigurierten IP-Adressen mit 5-Sekunden-TTLs. -%description -n pickdns -l pl -pickdns jest równowa¿±cym obci±¿enie serwerem DNS z pakietu djbdns. -Odbiera on iteracyjne zapytania DNS od komputerów z ca³ego internetu i -odpowiada dynamicznym wyborem lokalnie skonfigurowanych adresów IP z +%description pickdns -l pl.UTF-8 +pickdns jest równoważącym obciążenie serwerem DNS z pakietu djbdns. +Odbiera on iteracyjne zapytania DNS od komputerów z całego internetu i +odpowiada dynamicznym wyborem lokalnie skonfigurowanych adresów IP z 5-sekundowymi TTLami. -%package -n walldns +%package walldns Summary: DJB's reverse DNS wall -Summary(de): DJBs Wand rückgekehrten DNSs -Summary(pl): ¦ciana dla odwrotnych zapytañ DNS od DJB +Summary(de.UTF-8): DJBs Wand rückgekehrten DNSs +Summary(pl.UTF-8): Ściana dla odwrotnych zapytań DNS od DJB Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery -Requires: %{name} = %{version} -Requires: daemontools -Prereq: shadow - -%description -n walldns +Requires(post): diffutils +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires(preun): daemontools +Requires: %{name} = %{version}-%{release} +Requires: daemontools >= 0.70-5 +Provides: user(walldns) +Obsoletes: walldns + +%description walldns walldns is a reverse DNS wall from the djbdns package. It accepts iterative DNS queries for in-addr.arpa domains from hosts around the Internet and supplies generic responses that avoid revealing local host information. -%description -n walldns -l de -walldns ist ein Wand rückgekehrten DNSs aus dem djbdns-Paket. Es -empfängt iterative DNS-Fragen für den in-addr.arpa-Domänen von den +%description walldns -l de.UTF-8 +walldns ist ein Wand rückgekehrten DNSs aus dem djbdns-Paket. Es +empfängt iterative DNS-Fragen für den in-addr.arpa-Domänen von den Hosts aus allem Internet und liefert Antworte, die vermeiden -Informationen über die lokalen Hosts zu aufzudecken. +Informationen über die lokalen Hosts zu aufzudecken. -%description -n walldns -l pl -walldns jest ¶cian± dla odwrotnych zapytañ DNS z pakietu djbdns. +%description walldns -l pl.UTF-8 +walldns jest ścianą dla odwrotnych zapytań DNS z pakietu djbdns. Przyjmuje ona iteracyjne zapytania DNS dla domen in-addr.arpa od -komputerów z ca³ego Internetu i dostarcza odpowiedzi, które unikaj± +komputerów z całego Internetu i dostarcza odpowiedzi, które unikają ujawniania informacji o lokalnych komputerach. -%package -n rbldns +%package rbldns Summary: DJB's IP-address-listing DNS server -Summary(de): DJBs IP-Adressen-Listen-DNS-Server -Summary(pl): Serwer DNS list adresów IP od DJB +Summary(de.UTF-8): DJBs IP-Adressen-Listen-DNS-Server +Summary(pl.UTF-8): Serwer DNS list adresów IP od DJB Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery -Requires: %{name} = %{version} -Requires: daemontools +Requires(post): diffutils +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires(preun): daemontools +Requires: %{name} = %{version}-%{release} +Requires: daemontools >= 0.70-5 Requires: make -Prereq: shadow +Provides: user(rbldns) +Obsoletes: rbldns +#Obsoletes: rbldnsd -%description -n rbldns +%description rbldns rbldns is an IP-address-listing DNS server from the djbdns package. It accepts iterative DNS queries from hosts around the Internet asking about various IP addresses. It provides responses showing whether the addresses are on a locally configured list, such as RBL or DUL. -%description -n rbldns -l de +%description rbldns -l de.UTF-8 rbldns ist ein IP-Adressen-Listen-DNS-Server aus dem djbdns-Paket. Es -empfängt iterative DNS-Fragen von den Hosts aus allem Internet +empfängt iterative DNS-Fragen von den Hosts aus allem Internet fragende nach verschiedene IP-Adresse. Es liefert Antworte, die zeugen ob die Adresse sich auf einer lokal-konfigurierten Liste befinden, zum Beispiel RBL oder DUL. -%description -n rbldns -l pl -rbldns jest serwerem DNS list adresów z pakietu djbdns. Przyjmuje on -iteracyjne zapytania DNS od komputerów z ca³ego Internetu pytaj±ce o -ró¿ne adresy IP. Dostarcza on odpowiedzi pokazuj±cych, czy adresy te -s± na lokalnie skonfigurowanej li¶cie takiej, jak RBL lub DUL. +%description rbldns -l pl.UTF-8 +rbldns jest serwerem DNS list adresów z pakietu djbdns. Przyjmuje on +iteracyjne zapytania DNS od komputerów z całego Internetu pytające o +różne adresy IP. Dostarcza on odpowiedzi pokazujących, czy adresy te +są na lokalnie skonfigurowanej liście takiej, jak RBL lub DUL. -%package -n axfrdns +%package axfrdns Summary: DJB's DNS zone-transfer server -Summary(de): DJBs DNS-Zonen-Transfer-Server -Summary(pl): Serwer transferów stref DNS od DJB +Summary(de.UTF-8): DJBs DNS-Zonen-Transfer-Server +Summary(pl.UTF-8): Serwer transferów stref DNS od DJB Group: Networking/Daemons -Group(de): Netzwerkwesen/Server -Group(pl): Sieciowe/Serwery -Requires: %{name} = %{version} -Requires: tinydns = %{version} -Requires: daemontools -Requires: ucspi-tcp +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd +Requires(preun): daemontools +Requires: %{name} = %{version}-%{release} +Requires: %{name}-tinydns = %{version}-%{release} +Requires: daemontools >= 0.70-5 Requires: make -Prereq: shadow +Requires: ucspi-tcp +Provides: user(axfrdns) +Obsoletes: axfrdns -%description -n axfrdns +%description axfrdns axfrdns is a DNS zone transfer server from the djbdns package. It reads a zone-transfer request in DNS-over-TCP format from its standard input and responds with locally configured information. -%description -n axfrdns -l de +%description axfrdns -l de.UTF-8 axfrdns ist ein DNS-Zonen-Transfer-Server aus dem djbdns-Paket. Es liest ein Zonen-Transfer-Ersuchen im DNS-over-TCP-Format von seinem standarden Eingabe und antwortet mit den lokal-konfigurierten Informationen. -%description -n axfrdns -l pl -axfrdns jest serwerem transferów stref DNS z pakietu djbdns. Wczytuje -on ze standardowego wej¶cia pro¶bê o transfer strefy w formacie -DNS-over-TCP i odpowiada przy u¿yciu lokalnie skonfigurowanych +%description axfrdns -l pl.UTF-8 +axfrdns jest serwerem transferów stref DNS z pakietu djbdns. Wczytuje +on ze standardowego wejścia prośbę o transfer strefy w formacie +DNS-over-TCP i odpowiada przy użyciu lokalnie skonfigurowanych informacji. %prep -%setup -q -a1 -%patch0 -p1 +%setup -q -a1 -a2 +install %{SOURCE3} . +install %{SOURCE4} . + %patch1 -p1 +%patch0 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 +%patch6 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 cd doc ln -s merge/djbdns/* . %build echo %{__cc} %{rpmcflags} >conf-cc echo %{_prefix} > conf-home -%{__make} +%{__make} %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_sysconfdir}} +install -d $RPM_BUILD_ROOT%{_mandir}/{man1,man5,man8} + +install tinydns-notify $RPM_BUILD_ROOT%{_bindir} +install tinydns-log $RPM_BUILD_ROOT%{_bindir} install dnsroots.global $RPM_BUILD_ROOT%{_sysconfdir} install axfr-get $RPM_BUILD_ROOT%{_bindir} @@ -280,7 +404,6 @@ install random-ip $RPM_BUILD_ROOT%{_bindir} install rbldns $RPM_BUILD_ROOT%{_bindir} install rbldns-conf $RPM_BUILD_ROOT%{_bindir} install rbldns-data $RPM_BUILD_ROOT%{_bindir} -install rts $RPM_BUILD_ROOT%{_bindir} install tinydns $RPM_BUILD_ROOT%{_bindir} install tinydns-conf $RPM_BUILD_ROOT%{_bindir} install tinydns-data $RPM_BUILD_ROOT%{_bindir} @@ -288,418 +411,744 @@ install tinydns-edit $RPM_BUILD_ROOT%{_bindir} install tinydns-get $RPM_BUILD_ROOT%{_bindir} install walldns $RPM_BUILD_ROOT%{_bindir} install walldns-conf $RPM_BUILD_ROOT%{_bindir} +install djbdns-man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1 +install djbdns-man/*.5 $RPM_BUILD_ROOT%{_mandir}/man5 +install djbdns-man/*.8 $RPM_BUILD_ROOT%{_mandir}/man8 -gzip -9nf CHANGES TODO MULTIPLEIP TINYDNS +make_supervise_service() { + %{?debug:set -x} + local service="$1" + local svcdir=$RPM_BUILD_ROOT%{_sysconfdir}/$service + local logdir=$RPM_BUILD_ROOT/var/log/djbdns/$service -##### DNSCACHE ##### + install -d $svcdir/supervise $svcdir/log/supervise $logdir + touch $logdir/{lock,state} -mkdir $RPM_BUILD_ROOT%{_sysconfdir}/dnscache -cd $RPM_BUILD_ROOT%{_sysconfdir}/dnscache -mkdir log -mkdir log/main -touch log/status -mkdir env -echo %{_sysconfdir}/dnscache/root>env/ROOT -echo 127.0.0.1 >env/IP -echo 0.0.0.0 >env/IPSEND -echo 1000000 >env/CACHESIZE -echo 3000000 >env/DATALIMIT -cat>run<<___ + touch $svcdir/log/supervise/{lock,status} + mkfifo $svcdir/log/supervise/{control,ok} + touch $svcdir/supervise/{lock,status} + mkfifo $svcdir/supervise/{control,ok} +} + +##### DNSCACHE ##### +make_supervise_service dnscache +s=$RPM_BUILD_ROOT%{_sysconfdir}/dnscache +mkdir $s/env +echo %{_sysconfdir}/dnscache/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +echo 0.0.0.0 > $s/env/IPSEND +echo 1000000 > $s/env/CACHESIZE +echo 3000000 > $s/env/DATALIMIT +touch $s/env/IGNOREIP +cat>$s/run<<'EOF' #!/bin/sh exec 2>&1 exec log/run<<___ +EOF +cat>$s/log/run<<'EOF' #!/bin/sh -exec setuidgid dnslog multilog t ./main -___ -mkdir root -mkdir root/ip -touch root/ip/127.0.0.1 -mkdir root/servers -ln $RPM_BUILD_ROOT%{_sysconfdir}/dnsroots.global root/servers/\@ -dd if=/dev/zero of=seed bs=128c count=1 +exec setuidgid dnslog multilog t /var/log/djbdns/dnscache +EOF +mkdir $s/root +mkdir $s/root/ip +touch $s/root/ip/127.0.0.1 +mkdir $s/root/servers +ln $RPM_BUILD_ROOT%{_sysconfdir}/dnsroots.global $s/root/servers/@ +dd if=/dev/zero of=$s/seed bs=128c count=1 + +##### DNSCACHEX ##### +make_supervise_service dnscachex +s=$RPM_BUILD_ROOT%{_sysconfdir}/dnscachex +mkdir $s/env +echo %{_sysconfdir}/dnscachex/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +echo 0.0.0.0 > $s/env/IPSEND +echo 1000000 > $s/env/CACHESIZE +echo 3000000 > $s/env/DATALIMIT +touch $s/env/IGNOREIP +cat>$s/run<<'EOF' +#!/bin/sh +exec 2>&1 +exec $s/log/run<<'EOF' +#!/bin/sh +exec setuidgid dnslog multilog t /var/log/djbdns/dnscachex +EOF +mkdir $s/root +mkdir $s/root/ip +touch $s/root/ip/127.0.0.1 +mkdir $s/root/servers +ln $RPM_BUILD_ROOT%{_sysconfdir}/dnsroots.global $s/root/servers/@ +dd if=/dev/zero of=$s/seed bs=128c count=1 ##### TINYDNS ##### - -mkdir $RPM_BUILD_ROOT%{_sysconfdir}/tinydns -cd $RPM_BUILD_ROOT%{_sysconfdir}/tinydns -mkdir log -mkdir log/main -touch log/status -cat>log/run<<___ +make_supervise_service tinydns +s=$RPM_BUILD_ROOT%{_sysconfdir}/tinydns +cat>$s/log/run<env/ROOT -echo 127.0.0.1 >env/IP -cat>run<<___ +exec setuidgid dnslog multilog t /var/log/djbdns/tinydns +EOF +mkdir $s/env +echo %{_sysconfdir}/tinydns/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +cat>$s/run<&1 exec envuidgid tinydns envdir ./env softlimit -d300000 %{_bindir}/tinydns -___ -mkdir root -touch root/data -cat>root/add-ns<<___ +EOF +mkdir $s/root +touch $s/root/data +cat>$s/root/add-ns<<'EOF' +#!/bin/sh +exec %{_bindir}/tinydns-edit data data.new add ns ${1+"$@"} +EOF +cat>$s/root/add-childns<<'EOF' +#!/bin/sh +exec %{_bindir}/tinydns-edit data data.new add childns ${1+"$@"} +EOF +cat>$s/root/add-host<<'EOF' #!/bin/sh -exec %{_bindir}/tinydns-edit data data.new add ns \${1+"\$@"} -___ -cat>root/add-childns<<___ +exec %{_bindir}/tinydns-edit data data.new add host ${1+"$@"} +EOF +cat>$s/root/add-host6<<'EOF' #!/bin/sh -exec %{_bindir}/tinydns-edit data data.new add childns \${1+"\$@"} -___ -cat>root/add-host<<___ +exec %{_bindir}/tinydns-edit data data.new add host6 ${1+"$@"} +EOF +cat>$s/root/add-alias<<'EOF' #!/bin/sh -exec %{_bindir}/tinydns-edit data data.new add host \${1+"\$@"} -___ -cat>root/add-alias<<___ +exec %{_bindir}/tinydns-edit data data.new add alias ${1+"$@"} +EOF +cat>$s/root/add-alias6<<'EOF' #!/bin/sh -exec %{_bindir}/tinydns-edit data data.new add alias \${1+"\$@"} -___ -cat>root/add-mx<<___ +exec %{_bindir}/tinydns-edit data data.new add alias6 ${1+"$@"} +EOF +cat>$s/root/add-mx<<'EOF' #!/bin/sh -exec %{_bindir}/tinydns-edit data data.new add mx \${1+"\$@"} -___ -cat>root/Makefile<<___ +exec %{_bindir}/tinydns-edit data data.new add mx ${1+"$@"} +EOF +cat>$s/root/Makefile<<'EOF' data.cdb: data - %{_bindir}/tinydns-data -___ + %{_bindir}/tinydns-data +EOF ##### PICKDNS ##### - -mkdir $RPM_BUILD_ROOT%{_sysconfdir}/pickdns -cd $RPM_BUILD_ROOT%{_sysconfdir}/pickdns -mkdir log -mkdir log/main -touch log/status -cat>log/run<<___ +make_supervise_service pickdns +s=$RPM_BUILD_ROOT%{_sysconfdir}/pickdns +cat>$s/log/run<env/ROOT -echo 127.0.0.1 >env/IP -cat>run<<___ +exec setuidgid dnslog multilog t /var/log/djbdns/pickdns +EOF +mkdir $s/env +echo %{_sysconfdir}/pickdns/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +cat>$s/run<&1 exec envuidgid pickdns envdir ./env softlimit -d250000 %{_bindir}/pickdns -___ -mkdir root -touch root/data -cat>root/Makefile<<___ +EOF +mkdir $s/root +touch $s/root/data +cat>$s/root/Makefile<log/run<<___ +make_supervise_service walldns +s=$RPM_BUILD_ROOT%{_sysconfdir}/walldns +cat>$s/log/run<env/ROOT -echo 127.0.0.1 >env/IP -cat>run<<___ +EOF +mkdir $s/env +echo %{_sysconfdir}/walldns/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +cat>$s/run<&1 exec envuidgid walldns envdir ./env softlimit -d250000 %{_bindir}/walldns -___ -mkdir root +EOF +mkdir $s/root ##### RBLDNS ##### - -mkdir $RPM_BUILD_ROOT%{_sysconfdir}/rbldns -cd $RPM_BUILD_ROOT%{_sysconfdir}/rbldns -mkdir log -mkdir log/main -touch log/status -cat>log/run<<___ +make_supervise_service rbldns +s=$RPM_BUILD_ROOT%{_sysconfdir}/rbldns +cat>$s/log/run<env/ROOT -echo 127.0.0.1 >env/IP -echo in-addr.arpa >env/BASE -cat>run<<___ +exec setuidgid dnslog multilog t /var/log/djbdns/rbldns +EOF +mkdir $s/env +echo %{_sysconfdir}/rbldns/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +echo in-addr.arpa > $s/env/BASE +cat>$s/run<&1 exec envuidgid rbldns envdir ./env softlimit -d250000 %{_bindir}/rbldns -___ -mkdir root -touch root/data -cat>root/Makefile<<___ +EOF +mkdir $s/root +touch $s/root/data +cat>$s/root/Makefile<$s/data<log/run<<___ +##### AXFRDNS ##### +make_supervise_service axfrdns +s=$RPM_BUILD_ROOT%{_sysconfdir}/axfrdns +cat>$s/log/run<env/ROOT -echo 127.0.0.1 >env/IP -cat>run<<___ +exec setuidgid dnslog multilog t /var/log/djbdns/axfrdns +EOF +mkdir $s/env +echo %{_sysconfdir}/tinydns/root > $s/env/ROOT +echo 127.0.0.1 > $s/env/IP +cat>$s/run<<'EOF' #!/bin/sh exec 2>&1 exec envdir ./env sh -c ' - exec envuidgid axfrdns softlimit -d300000 tcpserver -vDRHl0 -x tcp.cdb -- "\$IP" 53 %{_bindir}/axfrdns + exec envuidgid axfrdns softlimit -d300000 tcpserver -vDRHl0 -x tcp.cdb -- "$IP" 53 %{_bindir}/axfrdns ' -___ -cat>Makefile<<___ +EOF +cat>$s/Makefile<<'EOF' tcp.cdb: tcp - tcprules tcp.cdb tcp.tmp < tcp -___ -cat>tcp<<___ + tcprules tcp.cdb tcp.tmp < tcp +EOF +cat>$s/tcp<<'EOF' # sample line: 1.2.3.4:allow,AXFR="heaven.af.mil/3.2.1.in-addr.arpa" :deny -___ +EOF ##### daemontools symlinks ##### -install -d $RPM_BUILD_ROOT/var/run/service -cd $RPM_BUILD_ROOT/var/run/service -ln -s ../../..%{_sysconfdir}/dnscache -ln -s ../../..%{_sysconfdir}/tinydns -ln -s ../../..%{_sysconfdir}/pickdns -ln -s ../../..%{_sysconfdir}/walldns -ln -s ../../..%{_sysconfdir}/rbldns -ln -s ../../..%{_sysconfdir}/axfrdns +install -d $RPM_BUILD_ROOT/service +cd $RPM_BUILD_ROOT/service +ln -s ..%{_sysconfdir}/dnscache +ln -s ..%{_sysconfdir}/dnscachex +ln -s ..%{_sysconfdir}/tinydns +ln -s ..%{_sysconfdir}/pickdns +ln -s ..%{_sysconfdir}/walldns +ln -s ..%{_sysconfdir}/rbldns +ln -s ..%{_sysconfdir}/axfrdns + +%clean +rm -rf $RPM_BUILD_ROOT %pre -if [ -n "`getgid djbdns`" ]; then - if [ "`getgid djbdns`" != "32" ]; then - echo "Warning: the group djbdns doesn't have gid=32. Correct this before installing djbdns" 1>&2 - exit 1 - fi -else - %{_sbindir}/groupadd -g 32 -r -f djbdns +%groupadd -g 32 -r -f djbdns +%useradd -u 32 -r -d / -s /bin/false -c "djbdns User" -g djbdns dnslog + +%postun +if [ "$1" = "0" ]; then + %userremove dnslog + %groupremove djbdns +fi + +%pre dnscache +%useradd -P %{name}-dnscache -u 33 -r -d /etc/dnscache -s /bin/false -c "djbdns User" -g djbdns dnscache + +%post dnscache +if [ ! -s %{_sysconfdir}/dnscache/seed ]; then + dd if=/dev/urandom of=%{_sysconfdir}/dnscache/seed bs=128c count=1 +fi +if diff -u %{_sysconfdir}/{dnscache,pickdns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and pickdns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/pickdns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscache,dnscachex}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and dnscachex can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/dnscachex/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscache,rbldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and rbldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/rbldns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscache,tinydns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." fi -if [ -n "`id -u dnslog 2>/dev/null`" ]; then - if [ "`id -u dnslog`" != "32" ]; then - echo "Warning: the user dnslog doesn't have uid=32. Correct this before installing djbdns" 1>&2 - exit 1 +if diff -u %{_sysconfdir}/{dnscache,walldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi + +if [ -f /service/dnscache/supervise/lock ]; then + svc -t /service/dnscache{,/log} +fi + +%preun dnscache +if [ "$1" = "0" ]; then + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/dnscache/supervise/lock ]; then + cd /service/dnscache + rm /service/dnscache + svc -dx . log fi -else - %{_sbindir}/useradd -u 32 -r -d / -s /bin/false -c "djbdns User" -g djbdns dnslog 1>&2 fi -%postun +%postun dnscache if [ "$1" = "0" ]; then - /usr/sbin/userdel dnslog - /usr/sbin/groupdel djbdns + %userremove dnscache fi -%pre -n dnscache -if [ -n "`id -u dnscache 2>/dev/null`" ]; then - if [ "`id -u dnscache`" != "33" ]; then - echo "Warning: the user dnscache doesn't have uid=33. Correct this before installing dnscache" 1>&2 - exit 1 - fi -else - %{_sbindir}/useradd -u 33 -r -d /etc/dnscache -s /bin/false -c "djbdns User" -g djbdns dnscache 1>&2 +%post dnscachex +if [ ! -s %{_sysconfdir}/dnscachex/seed ]; then + dd if=/dev/urandom of=%{_sysconfdir}/dnscachex/seed bs=128c count=1 +fi +if diff -u %{_sysconfdir}/{dnscachex,dnscache}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and dnscache can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/dnscache/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,pickdns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and pickdns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/pickdns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,rbldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and rbldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/rbldns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,tinydns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,walldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." fi -dd if=/dev/urandom of=seed bs=128c count=1 -%postun -n dnscache +if [ -f /service/dnscachex/supervise/lock ]; then + svc -t /service/dnscachex{,/log} +fi + +%preun dnscachex if [ "$1" = "0" ]; then - /usr/sbin/userdel dnscache + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/dnscachex/supervise/lock ]; then + cd /service/dnscachex + rm /service/dnscachex + svc -dx . log + fi fi -%pre -n tinydns -if [ -n "`id -u tinydns 2>/dev/null`" ]; then - if [ "`id -u tinydns`" != "34" ]; then - echo "Warning: the user tinydns doesn't have uid=34. Correct this before installing tinydns" 1>&2 - exit 1 +%pre tinydns +%useradd -P %{name}-tinydns -u 34 -r -d /etc/tinydns -s /bin/false -c "djbdns User" -g djbdns tinydns + +%post tinydns +if diff -u %{_sysconfdir}/{dnscache,tinydns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,tinydns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{pick,tiny}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: pickdns and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{rbl,tiny}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: rbldns and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{tiny,wall}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: tinydns and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/tinydns/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi + +if [ -f /service/tinydns/supervise/lock ]; then + svc -t /service/tinydns{,/log} +fi + +%preun tinydns +if [ "$1" = "0" ]; then + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/tinydns/supervise/lock ]; then + cd /service/tinydns + rm /service/tinydns + svc -dx . log fi -else - %{_sbindir}/useradd -u 34 -r -d /etc/tinydns -s /bin/false -c "djbdns User" -g djbdns tinydns 1>&2 fi -%postun -n tinydns +%postun tinydns if [ "$1" = "0" ]; then - /usr/sbin/userdel tinydns + %userremove tinydns +fi + +%pre pickdns +%useradd -P %{name}-pickdns -u 35 -r -d /etc/pickdns -s /bin/false -c "djbdns User" -g djbdns pickdns + +%post pickdns +if diff -u %{_sysconfdir}/{dnscache,pickdns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and pickdns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/pickdns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,pickdns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and pickdns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/pickdns/env/IP." +fi +if diff -u %{_sysconfdir}/{pick,rbl}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: pickdns and rbldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP" + echo "or %{_sysconfdir}/rbldns/env/IP." +fi +if diff -u %{_sysconfdir}/{pick,tiny}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: pickdns and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{pick,wall}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: pickdns and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi + +if [ -f /service/pickdns/supervise/lock ]; then + svc -t /service/pickdns{,/log} fi -%pre -n pickdns -if [ -n "`id -u pickdns 2>/dev/null`" ]; then - if [ "`id -u pickdns`" != "35" ]; then - echo "Warning: the user pickdns doesn't have uid=35. Correct this before installing pickdns" 1>&2 - exit 1 +%preun pickdns +if [ "$1" = "0" ]; then + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/pickdns/supervise/lock ]; then + cd /service/pickdns + rm /service/pickdns + svc -dx . log fi -else - %{_sbindir}/useradd -u 35 -r -d /etc/pickdns -s /bin/false -c "djbdns User" -g djbdns pickdns 1>&2 fi -%postun -n pickdns +%postun pickdns if [ "$1" = "0" ]; then - /usr/sbin/userdel pickdns + %userremove pickdns fi -%pre -n walldns -if [ -n "`id -u walldns 2>/dev/null`" ]; then - if [ "`id -u walldns`" != "36" ]; then - echo "Warning: the user walldns doesn't have uid=36. Correct this before installing walldns" 1>&2 - exit 1 +%pre walldns +%useradd -P %{name}-walldns -u 36 -r -d /etc/walldns -s /bin/false -c "djbdns User" -g djbdns walldns + +%post walldns +if diff -u %{_sysconfdir}/{dnscache,walldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,walldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi +if diff -u %{_sysconfdir}/{pick,wall}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: pickdns and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi +if diff -u %{_sysconfdir}/{rbl,wall}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: rbldns and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi +if diff -u %{_sysconfdir}/{tiny,wall}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: tinydns and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/tinydns/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi + +if [ -f /service/walldns/supervise/lock ]; then + svc -t /service/walldns{,/log} +fi + +%preun walldns +if [ "$1" = "0" ]; then + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/walldns/supervise/lock ]; then + cd /service/walldns + rm /service/walldns + svc -dx . log fi -else - %{_sbindir}/useradd -u 36 -r -d /etc/walldns -s /bin/false -c "djbdns User" -g djbdns walldns 1>&2 fi -%postun -n walldns +%postun walldns if [ "$1" = "0" ]; then - /usr/sbin/userdel walldns + %userremove walldns fi -%pre -n rbldns -if [ -n "`id -u rbldns 2>/dev/null`" ]; then - if [ "`id -u rbldns`" != "37" ]; then - echo "Warning: the user rbldns doesn't have uid=37. Correct this before installing rbldns" 1>&2 - exit 1 +%pre rbldns +%useradd -P %{name}-rbldns -u 37 -r -d /etc/rbldns -s /bin/false -c "djbdns User" -g djbdns rbldns + +%post rbldns +if diff -u %{_sysconfdir}/{dnscache,rbldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscache and rbldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP" + echo "or %{_sysconfdir}/rbldns/env/IP." +fi +if diff -u %{_sysconfdir}/{dnscachex,rbldns}/env/IP >/dev/zero 2>&1;then + echo "Warning: dnscachex and rbldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/dnscachex/env/IP" + echo "or %{_sysconfdir}/rbldns/env/IP." +fi +if diff -u %{_sysconfdir}/{pick,rbl}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: pickdns and rbldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP" + echo "or %{_sysconfdir}/rbldns/env/IP." +fi +if diff -u %{_sysconfdir}/{rbl,tiny}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: rbldns and tinydns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP" + echo "or %{_sysconfdir}/tinydns/env/IP." +fi +if diff -u %{_sysconfdir}/{rbl,wall}dns/env/IP >/dev/zero 2>&1;then + echo "Warning: rbldns and walldns can't work on the same" + echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP" + echo "or %{_sysconfdir}/walldns/env/IP." +fi + +if [ -f /service/rbldns/supervise/lock ]; then + svc -t /service/rbldns{,/log} +fi + +%preun rbldns +if [ "$1" = "0" ]; then + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/rbldns/supervise/lock ]; then + cd /service/rbldns + rm /service/rbldns + svc -dx . log fi -else - %{_sbindir}/useradd -u 37 -r -d /etc/rbldns -s /bin/false -c "djbdns User" -g djbdns rbldns 1>&2 fi -%postun -n rbldns +%postun rbldns if [ "$1" = "0" ]; then - /usr/sbin/userdel rbldns + %userremove rbldns fi -%pre -n axfrdns -if [ -n "`id -u axfrdns 2>/dev/null`" ]; then - if [ "`id -u axfrdns`" != "38" ]; then - echo "Warning: the user axfrdns doesn't have uid=38. Correct this before installing axfrdns" 1>&2 - exit 1 +%pre axfrdns +%useradd -P %{name}-axfrdns -u 38 -r -d /etc/axfrdns -s /bin/false -c "djbdns User" -g djbdns axfrdns + +%preun axfrdns +if [ "$1" = "0" ]; then + # http://cr.yp.to/daemontools/faq/create.html#remove + if [ -f /service/axfrdns/supervise/lock ]; then + cd /service/axfrdns + rm /service/axfrdns + svc -dx . log fi -else - %{_sbindir}/useradd -u 38 -r -d /etc/axfrdns -s /bin/false -c "djbdns User" -g djbdns axfrdns 1>&2 fi -%postun -n axfrdns +%postun axfrdns if [ "$1" = "0" ]; then - /usr/sbin/userdel axfrdns + %userremove axfrdns fi -%clean -rm -rf $RPM_BUILD_ROOT - %files %defattr(644,root,root,755) -%doc *.gz doc/* +%doc CHANGES TODO MULTIPLEIP TINYDNS doc/* %attr(755,root,root) %{_bindir}/cachetest %attr(755,root,root) %{_bindir}/dns[f-t]* %attr(755,root,root) %{_bindir}/axfr-get +%{_mandir}/man[15]/* +%{_mandir}/man8/axfr-get* +%dir %attr(751,root,root) %dir /var/log/djbdns -%files -n dnscache +%files dnscache %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/dnscache* -%config %attr(644,root,root) %{_sysconfdir}/dnsroots.global -%dir %attr(3755,root,root) %{_sysconfdir}/dnscache -%dir %attr(2755,root,root) %{_sysconfdir}/dnscache/log -%dir %attr(2755,dnslog,djbdns) %{_sysconfdir}/dnscache/log/main -%attr(644,dnslog,djbdns) %{_sysconfdir}/dnscache/log/status +%config %{_sysconfdir}/dnsroots.global +%dir %attr(1755,root,root) %{_sysconfdir}/dnscache +%attr(700,root,root) %dir %{_sysconfdir}/dnscache/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/dnscache/supervise/* + +%dir %attr(1755,root,root) %{_sysconfdir}/dnscache/log +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dnscache/log/run +%attr(700,root,root) %dir %{_sysconfdir}/dnscache/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/dnscache/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/dnscache +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/dnscache/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/dnscache/state + %dir %attr(2755,root,root) %{_sysconfdir}/dnscache/env -%config %attr(644,root,root) %{_sysconfdir}/dnscache/env/* +%config %{_sysconfdir}/dnscache/env/* %attr(755,root,root) %{_sysconfdir}/dnscache/run -%attr(755,root,root) %{_sysconfdir}/dnscache/log/run -%dir %attr(2755,root,root) %{_sysconfdir}/dnscache/root -%dir %attr(2755,root,root) %{_sysconfdir}/dnscache/root/* +%dir %{_sysconfdir}/dnscache/root +%dir %{_sysconfdir}/dnscache/root/ip +%dir %{_sysconfdir}/dnscache/root/servers %config %attr(600,root,root) %{_sysconfdir}/dnscache/root/ip/* -%config %attr(644,root,root) %{_sysconfdir}/dnscache/root/servers/* +%config %{_sysconfdir}/dnscache/root/servers/* %ghost %attr(600,root,root) %{_sysconfdir}/dnscache/seed -/var/run/service/dnscache +%{_mandir}/man8/dnscache* +/service/dnscache -%files -n tinydns +%files dnscachex +%defattr(644,root,root,755) +%dir %attr(1755,root,root) %{_sysconfdir}/dnscachex +%attr(700,root,root) %dir %{_sysconfdir}/dnscachex/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/dnscachex/supervise/* + +%dir %attr(1755,root,root) %{_sysconfdir}/dnscachex/log +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dnscachex/log/run +%attr(700,root,root) %dir %{_sysconfdir}/dnscachex/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/dnscachex/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/dnscachex +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/dnscachex/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/dnscachex/state + +%dir %attr(2755,root,root) %{_sysconfdir}/dnscachex/env +%config %{_sysconfdir}/dnscachex/env/* +%attr(755,root,root) %{_sysconfdir}/dnscachex/run +%dir %{_sysconfdir}/dnscachex/root +%dir %{_sysconfdir}/dnscachex/root/ip +%dir %{_sysconfdir}/dnscachex/root/servers +%config %attr(600,root,root) %{_sysconfdir}/dnscachex/root/ip/* +%config %{_sysconfdir}/dnscachex/root/servers/* +%ghost %attr(600,root,root) %{_sysconfdir}/dnscachex/seed +/service/dnscachex + +%files tinydns %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/tinydns* %dir %attr(3755,root,root) %{_sysconfdir}/tinydns -%dir %attr(2755,root,root) %{_sysconfdir}/tinydns/log -%dir %attr(2755,dnslog,djbdns) %{_sysconfdir}/tinydns/log/main -%attr(644,dnslog,djbdns) %{_sysconfdir}/tinydns/log/status -%attr(755,root,root) %{_sysconfdir}/tinydns/log/run +%attr(700,root,root) %dir %{_sysconfdir}/tinydns/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/tinydns/supervise/* + +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/tinydns/log/run +%dir %attr(1755,root,root) %{_sysconfdir}/tinydns/log +%attr(700,root,root) %dir %{_sysconfdir}/tinydns/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/tinydns/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/tinydns +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/tinydns/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/tinydns/state + %dir %attr(2755,root,root) %{_sysconfdir}/tinydns/env -%config %attr(644,root,root) %{_sysconfdir}/tinydns/env/* +%config %{_sysconfdir}/tinydns/env/* %attr(755,root,root) %{_sysconfdir}/tinydns/run %dir %attr(2755,root,root) %{_sysconfdir}/tinydns/root -%attr(644,root,root) %{_sysconfdir}/tinydns/root/Makefile -%config %attr(644,root,root) %{_sysconfdir}/tinydns/root/data +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/tinydns/root/Makefile +%config %{_sysconfdir}/tinydns/root/data %attr(755,root,root) %{_sysconfdir}/tinydns/root/add-* -/var/run/service/tinydns +%{_mandir}/man8/tinydns* +/service/tinydns -%files -n pickdns +%files tinydns-notify +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/tinydns-notify + +%files pickdns %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/pickdns* %dir %attr(3755,root,root) %{_sysconfdir}/pickdns -%dir %attr(2755,root,root) %{_sysconfdir}/pickdns/log -%dir %attr(2755,dnslog,djbdns) %{_sysconfdir}/pickdns/log/main -%attr(644,dnslog,djbdns) %{_sysconfdir}/pickdns/log/status -%attr(755,root,root) %{_sysconfdir}/pickdns/log/run +%attr(700,root,root) %dir %{_sysconfdir}/pickdns/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/pickdns/supervise/* + +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pickdns/log/run +%dir %attr(1755,root,root) %{_sysconfdir}/pickdns/log +%attr(700,root,root) %dir %{_sysconfdir}/pickdns/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/pickdns/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/pickdns +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/pickdns/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/pickdns/state + %dir %attr(2755,root,root) %{_sysconfdir}/pickdns/env -%config %attr(644,root,root) %{_sysconfdir}/pickdns/env/* +%config %{_sysconfdir}/pickdns/env/* %attr(755,root,root) %{_sysconfdir}/pickdns/run %dir %attr(2755,root,root) %{_sysconfdir}/pickdns/root -%attr(644,root,root) %{_sysconfdir}/pickdns/root/Makefile -%config %attr(644,root,root) %{_sysconfdir}/pickdns/root/data -/var/run/service/pickdns +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pickdns/root/Makefile +%config %{_sysconfdir}/pickdns/root/data +%{_mandir}/man8/pickdns* +/service/pickdns -%files -n walldns +%files walldns %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/walldns* %dir %attr(3755,root,root) %{_sysconfdir}/walldns -%dir %attr(2755,root,root) %{_sysconfdir}/walldns/log -%dir %attr(2755,dnslog,djbdns) %{_sysconfdir}/walldns/log/main -%attr(644,dnslog,djbdns) %{_sysconfdir}/walldns/log/status -%attr(755,root,root) %{_sysconfdir}/walldns/log/run +%attr(700,root,root) %dir %{_sysconfdir}/walldns/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/walldns/supervise/* + +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/walldns/log/run +%dir %attr(1755,root,root) %{_sysconfdir}/walldns/log +%attr(700,root,root) %dir %{_sysconfdir}/walldns/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/walldns/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/walldns +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/walldns/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/walldns/state + %dir %attr(2755,root,root) %{_sysconfdir}/walldns/env -%config %attr(644,root,root) %{_sysconfdir}/walldns/env/* +%config %{_sysconfdir}/walldns/env/* %attr(755,root,root) %{_sysconfdir}/walldns/run %dir %attr(2755,root,root) %{_sysconfdir}/walldns/root -/var/run/service/walldns +%{_mandir}/man8/walldns* +/service/walldns -%files -n rbldns +%files rbldns %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/rbldns* %dir %attr(3755,root,root) %{_sysconfdir}/rbldns -%dir %attr(2755,root,root) %{_sysconfdir}/rbldns/log -%dir %attr(2755,dnslog,djbdns) %{_sysconfdir}/rbldns/log/main -%attr(644,dnslog,djbdns) %{_sysconfdir}/rbldns/log/status -%attr(755,root,root) %{_sysconfdir}/rbldns/log/run +%attr(700,root,root) %dir %{_sysconfdir}/rbldns/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/rbldns/supervise/* + +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rbldns/log/run +%dir %attr(1755,root,root) %{_sysconfdir}/rbldns/log +%attr(700,root,root) %dir %{_sysconfdir}/rbldns/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/rbldns/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/rbldns +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/rbldns/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/rbldns/state + %dir %attr(2755,root,root) %{_sysconfdir}/rbldns/env -%config %attr(644,root,root) %{_sysconfdir}/rbldns/env/* +%config %{_sysconfdir}/rbldns/env/* %attr(755,root,root) %{_sysconfdir}/rbldns/run %dir %attr(2755,root,root) %{_sysconfdir}/rbldns/root -%attr(644,root,root) %{_sysconfdir}/rbldns/root/Makefile -%config %attr(644,root,root) %{_sysconfdir}/rbldns/root/data -/var/run/service/rbldns +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rbldns/root/Makefile +%config %{_sysconfdir}/rbldns/root/data +%{_mandir}/man8/rbldns* +/service/rbldns -%files -n axfrdns +%files axfrdns %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/axfrdns* %dir %attr(3755,root,root) %{_sysconfdir}/axfrdns -%dir %attr(2755,root,root) %{_sysconfdir}/axfrdns/log -%dir %attr(2755,dnslog,djbdns) %{_sysconfdir}/axfrdns/log/main -%attr(644,dnslog,djbdns) %{_sysconfdir}/axfrdns/log/status -%attr(755,root,root) %{_sysconfdir}/axfrdns/log/run +%attr(700,root,root) %dir %{_sysconfdir}/axfrdns/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/axfrdns/supervise/* + +%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/axfrdns/log/run +%dir %attr(1755,root,root) %{_sysconfdir}/axfrdns/log +%attr(700,root,root) %dir %{_sysconfdir}/axfrdns/log/supervise +%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost %{_sysconfdir}/axfrdns/log/supervise/* +%attr(751,dnslog,djbdns) %dir /var/log/djbdns/axfrdns +%attr(600,dnslog,djbdns) %ghost /var/log/djbdns/axfrdns/lock +%attr(640,dnslog,djbdns) %ghost /var/log/djbdns/axfrdns/state + %dir %attr(2755,root,root) %{_sysconfdir}/axfrdns/env -%config %attr(644,root,root) %{_sysconfdir}/axfrdns/env/* +%config %{_sysconfdir}/axfrdns/env/* %attr(755,root,root) %{_sysconfdir}/axfrdns/run -%attr(644,root,root) %{_sysconfdir}/axfrdns/Makefile -%config %attr(644,root,root) %{_sysconfdir}/axfrdns/tcp -/var/run/service/axfrdns +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/axfrdns/Makefile +%config %{_sysconfdir}/axfrdns/tcp +%{_mandir}/man8/axfrdns* +/service/axfrdns