]> git.pld-linux.org Git - packages/djbdns.git/blobdiff - djbdns.spec
- release 26
[packages/djbdns.git] / djbdns.spec
index b8ec540de6576a84351aa23e90f964cd8ee83e5d..7f7c5a22873504c08975fb2494493e2b267b878b 100644 (file)
@@ -1,9 +1,14 @@
+# TODO
+#  - warning: Installed (but unpackaged) file(s) found:
+#   /etc/rbldns/data
+#   /usr/bin/random-ip
 Summary:       DJB DNS
 Summary:       DJB DNS
-Summary(pl):   DJB DNS
+Summary(pl.UTF-8):     DJB DNS
 Name:          djbdns
 Version:       1.05
 Name:          djbdns
 Version:       1.05
-Release:       13
-License:       http://cr.yp.to/distributors.html (free to use)
+Release:       26
+# http://cr.yp.to/distributors.html
+License:       Public Domain
 Group:         Networking/Daemons
 Source0:       http://cr.yp.to/djbdns/%{name}-%{version}.tar.gz
 # Source0-md5: 3147c5cd56832aa3b41955c7a51cbeb2
 Group:         Networking/Daemons
 Source0:       http://cr.yp.to/djbdns/%{name}-%{version}.tar.gz
 # Source0-md5: 3147c5cd56832aa3b41955c7a51cbeb2
@@ -11,23 +16,41 @@ Source1:    %{name}-doc.tar.gz
 # Source1-md5: 1d6aed1a5d3d3eda3958fa3e7d808fc8
 Source2:       ftp://ftp.innominate.org/gpa/djb/%{name}-%{version}-man.tar.gz
 # Source2-md5: 2b4e71fa4592858e4508538f78d50f61
 # 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
 Patch0:                dnscache-1.05-multiple-ip.patch
-Patch1:                http://www.fefe.de/dns/%{name}-1.05-ipv6.diff
-#              based on http://www.ohse.de/uwe/patches/djbdns-1.05-multiip.diff
-Patch2:                %{name}-1.05-multiip.diff
-Patch3:                http://iksz.hu/package/djbdns-conf/djbdns-1.05-multi_tinydns_data.patch
+# 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
 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
+Patch12:       %{name}-dnscache-merge-similar-outgoing-queries.patch
+# http://www.your.org/dnscache/0001-dnscache-merge-similar-outgoing-queries.patch
+Patch13:       %{name}-dnscache-cache-soa-records.patch
+# http://www.your.org/dnscache/0002-dnscache-cache-soa-records.patch
 URL:           http://cr.yp.to/djbdns.html
 URL:           http://cr.yp.to/djbdns.html
-Requires(pre): /usr/bin/getgid
+BuildRequires: rpm-perlprov
+BuildRequires: rpmbuild(macros) >= 1.202
+Requires(postun):      /usr/sbin/groupdel
+Requires(postun):      /usr/sbin/userdel
 Requires(pre): /bin/id
 Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
+Provides:      group(djbdns)
 Provides:      nameserver
 Provides:      nameserver
+Provides:      user(dnslog)
 Obsoletes:     caching-nameserver
 Obsoletes:     caching-nameserver
-Obsoletes:     nameserver
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -39,59 +62,62 @@ documentation. If you need a DNS server install one of the following
 packages:
 
  - djbdns-dnscache - a local DNS cache
 packages:
 
  - djbdns-dnscache - a local DNS cache
+ - djbdns-dnscachex - an external DNS cache
  - djbdns-tinydns - a DNS server
  - 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
 
  - 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.
 
 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:
 
  - djbdns-dnscache - ein lokaler DNS-Cache
  - djbdns-tinydns - ein DNS-Server
  - djbdns-pickdns - ein Belastung ausgleichender DNS-Server
 Wenn du einen DNS-Server braucht, installe ein von den folgenden
 Paketen:
 
  - 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-walldns - eine Wand Rückgekehrten DNSs
  - djbdns-rbldns - ein IP-Adressen-Listen-DNS-Server
  - djbdns-axfrdns - ein DNS-Zonen-Transfer-Server
 
  - 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.
 
 wyznaczona nawet nagroda.
 
-Ten pakiet zawiera kilka podstawowych narzêdzi DNS oraz trochê
-dokumentacji. Jeli 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:
 
  - djbdns-dnscache - lokalny cache DNS
  - djbdns-tinydns - serwer DNS
 
  - djbdns-dnscache - lokalny cache DNS
  - djbdns-tinydns - serwer DNS
- - 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
+ - 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 dnscache
 Summary:       DJB's local DNS cache
 
 %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:         Networking/Daemons
-PreReq:                %{name} = %{version}
-Requires(pre): /usr/bin/getgid
+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(pre): /bin/id
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
-Requires(post):        diffutils
-Requires(post):        fileutils
 Requires(preun):       daemontools
 Requires(preun):       daemontools
+Requires:      %{name} = %{version}-%{release}
 Requires:      daemontools >= 0.70-5
 Requires:      daemontools >= 0.70-5
+Provides:      user(dnscache)
 Obsoletes:     dnscache
 
 %description dnscache
 Obsoletes:     dnscache
 
 %description dnscache
@@ -100,36 +126,58 @@ 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.
 
 transfer agents. It collects responses from remote DNS servers. It
 caches the responses to save time later.
 
-%description 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
 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.
 
 zu sparen.
 
-%description dnscache -l pl
+%description dnscache -l pl.UTF-8
 dnscache jest lokalnym cachem DNS z pakietu djbdns. Przyjmuje on
 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 dnscachex
+Summary:       DJB's external DNS cache
+Summary(pl.UTF-8):     Zewnętrzny cache DNS od DJB
+Group:         Networking/Daemons
+Requires(post):        diffutils
+Requires(post):        fileutils
+Requires(preun):       daemontools
+Requires:      %{name}-dnscache = %{version}-%{release}
+
+%description dnscachex
+dnscachex is an 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.
+
+%description dnscachex -l pl.UTF-8
+dnscache jest zewnętrznym cachem DNS z pakietu djbdns. Przyjmuje on
+rekursywne zapytania DNS od zewnętrznych 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 tinydns
 Summary:       DJB's DNS server
 
 %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:         Networking/Daemons
-PreReq:                %{name} = %{version}
-Requires(pre): /usr/bin/getgid
+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(pre): /bin/id
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
-Requires(post):        diffutils
 Requires(preun):       daemontools
 Requires(preun):       daemontools
+Requires:      %{name} = %{version}-%{release}
 Requires:      daemontools >= 0.70-5
 Requires:      make
 Requires:      daemontools >= 0.70-5
 Requires:      make
+Provides:      user(tinydns)
 Obsoletes:     tinydns
 
 %description tinydns
 Obsoletes:     tinydns
 
 %description tinydns
@@ -137,32 +185,54 @@ 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.
 
 DNS queries from hosts around the Internet and responds with
 locally-configured information.
 
-%description 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.
 
 DNS-Fragen von dem Hosts aus allem Internet und antwortet mit den
 lokal-konfigurierten Informationen.
 
-%description tinydns -l pl
+%description tinydns -l pl.UTF-8
 tinydns jest serwerem DNS z pakietu djbdns. Przyjmuje on iteracyjne
 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.
 
 lokalnie skonfigurowanych informacji.
 
+%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
 %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:         Networking/Daemons
-PreReq:                %{name} = %{version}
-Requires(pre): /usr/bin/getgid
+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(pre): /bin/id
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
-Requires(post):        diffutils
 Requires(preun):       daemontools
 Requires(preun):       daemontools
+Requires:      %{name} = %{version}-%{release}
 Requires:      daemontools >= 0.70-5
 Requires:      make
 Requires:      daemontools >= 0.70-5
 Requires:      make
+Provides:      user(pickdns)
 Obsoletes:     pickdns
 
 %description pickdns
 Obsoletes:     pickdns
 
 %description pickdns
@@ -171,33 +241,33 @@ accepts iterative DNS queries from hosts around the Internet and
 responds with a dynamic selection of locally configured IP addresses
 with 5-second TTLs.
 
 responds with a dynamic selection of locally configured IP addresses
 with 5-second TTLs.
 
-%description pickdns -l de
+%description pickdns -l de.UTF-8
 pickdns ist ein Belastung ausgleichender DNS-Server aus dem
 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.
 
 Internet und antwortet mit eine dynamische Auswahl von den
 lokal-konfigurierten IP-Adressen mit 5-Sekunden-TTLs.
 
-%description 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 walldns
 Summary:       DJB's reverse DNS wall
 5-sekundowymi TTLami.
 
 %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:         Networking/Daemons
-PreReq:                %{name} = %{version}
-Requires(pre): /usr/bin/getgid
+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(pre): /bin/id
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
-Requires(post):        diffutils
 Requires(preun):       daemontools
 Requires(preun):       daemontools
+Requires:      %{name} = %{version}-%{release}
 Requires:      daemontools >= 0.70-5
 Requires:      daemontools >= 0.70-5
+Provides:      user(walldns)
 Obsoletes:     walldns
 
 %description walldns
 Obsoletes:     walldns
 
 %description walldns
@@ -206,35 +276,36 @@ iterative DNS queries for in-addr.arpa domains from hosts around the
 Internet and supplies generic responses that avoid revealing local
 host information.
 
 Internet and supplies generic responses that avoid revealing local
 host information.
 
-%description 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
 Hosts aus allem Internet und liefert Antworte, die vermeiden
-Informationen über die lokalen Hosts zu aufzudecken.
+Informationen über die lokalen Hosts zu aufzudecken.
 
 
-%description 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
 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 rbldns
 Summary:       DJB's IP-address-listing DNS server
 ujawniania informacji o lokalnych komputerach.
 
 %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:         Networking/Daemons
-PreReq:                %{name} = %{version}
-Requires(pre): /usr/bin/getgid
+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(pre): /bin/id
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
-Requires(post):        diffutils
 Requires(preun):       daemontools
 Requires(preun):       daemontools
+Requires:      %{name} = %{version}-%{release}
 Requires:      daemontools >= 0.70-5
 Requires:      make
 Requires:      daemontools >= 0.70-5
 Requires:      make
+Provides:      user(rbldns)
 Obsoletes:     rbldns
 Obsoletes:     rbldns
+#Obsoletes:    rbldnsd
 
 %description rbldns
 rbldns is an IP-address-listing DNS server from the djbdns package. It
 
 %description rbldns
 rbldns is an IP-address-listing DNS server from the djbdns package. It
@@ -242,36 +313,36 @@ 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.
 
 about various IP addresses. It provides responses showing whether the
 addresses are on a locally configured list, such as RBL or DUL.
 
-%description rbldns -l de
+%description rbldns -l de.UTF-8
 rbldns ist ein IP-Adressen-Listen-DNS-Server aus dem djbdns-Paket. Es
 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.
 
 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 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 axfrdns
 Summary:       DJB's DNS zone-transfer server
 
 %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:         Networking/Daemons
-PreReq:                %{name} = %{version}
-Requires(pre): /usr/bin/getgid
+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(pre): /bin/id
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(postun):      /usr/sbin/userdel
-Requires(postun):      /usr/sbin/groupdel
 Requires(preun):       daemontools
 Requires(preun):       daemontools
-Requires:      %{name}-tinydns = %{version}
+Requires:      %{name} = %{version}-%{release}
+Requires:      %{name}-tinydns = %{version}-%{release}
 Requires:      daemontools >= 0.70-5
 Requires:      make
 Requires:      ucspi-tcp
 Requires:      daemontools >= 0.70-5
 Requires:      make
 Requires:      ucspi-tcp
+Provides:      user(axfrdns)
 Obsoletes:     axfrdns
 
 %description axfrdns
 Obsoletes:     axfrdns
 
 %description axfrdns
@@ -279,27 +350,35 @@ 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.
 
 reads a zone-transfer request in DNS-over-TCP format from its standard
 input and responds with locally configured information.
 
-%description 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.
 
 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 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 -a2
 informacji.
 
 %prep
 %setup -q -a1 -a2
+install %{SOURCE3} .
+install %{SOURCE4} .
 
 
-%patch0 -p1
 %patch1 -p1
 %patch1 -p1
-%patch2 -p1
+%patch0 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5
 %patch3 -p1
 %patch4 -p1
 %patch5
+%patch6 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
 cd doc
 ln -s merge/djbdns/* .
 
 cd doc
 ln -s merge/djbdns/* .
 
@@ -313,6 +392,9 @@ rm -rf $RPM_BUILD_ROOT
 install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_sysconfdir}}
 install -d $RPM_BUILD_ROOT%{_mandir}/{man1,man5,man8}
 
 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}
 install axfrdns                $RPM_BUILD_ROOT%{_bindir}
 install dnsroots.global $RPM_BUILD_ROOT%{_sysconfdir}
 install        axfr-get        $RPM_BUILD_ROOT%{_bindir}
 install axfrdns                $RPM_BUILD_ROOT%{_bindir}
@@ -336,7 +418,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 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}
 install tinydns                $RPM_BUILD_ROOT%{_bindir}
 install tinydns-conf   $RPM_BUILD_ROOT%{_bindir}
 install tinydns-data   $RPM_BUILD_ROOT%{_bindir}
@@ -348,206 +429,230 @@ 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
 
 install djbdns-man/*.5  $RPM_BUILD_ROOT%{_mandir}/man5
 install djbdns-man/*.8  $RPM_BUILD_ROOT%{_mandir}/man8
 
-##### DNSCACHE #####
+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
+
+       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 <seed
 exec envdir ./env sh -c '
 #!/bin/sh
 exec 2>&1
 exec <seed
 exec envdir ./env sh -c '
-  exec envuidgid dnscache softlimit -o250 -d "\$DATALIMIT" %{_bindir}/dnscache
+  exec envuidgid dnscache softlimit -o250 -d "$DATALIMIT" %{_bindir}/dnscache
 '
 '
-___
-cat>log/run<<___
+EOF
+cat>$s/log/run<<'EOF'
 #!/bin/sh
 #!/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 <seed
+exec envdir ./env sh -c '
+  exec envuidgid dnscache softlimit -o250 -d "$DATALIMIT" %{_bindir}/dnscache
+'
+EOF
+cat>$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 #####
 
 ##### 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<<EOF
 #!/bin/sh
 #!/bin/sh
-exec setuidgid dnslog multilog t ./main
-___
-mkdir env
-echo %{_sysconfdir}/tinydns/root>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<<EOF
 #!/bin/sh
 exec 2>&1
 exec envuidgid tinydns envdir ./env softlimit -d300000 %{_bindir}/tinydns
 #!/bin/sh
 exec 2>&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
 #!/bin/sh
-exec %{_bindir}/tinydns-edit data data.new add ns \${1+"\$@"}
-___
-cat>root/add-childns<<___
+exec %{_bindir}/tinydns-edit data data.new add ns ${1+"$@"}
+EOF
+cat>$s/root/add-childns<<'EOF'
 #!/bin/sh
 #!/bin/sh
-exec %{_bindir}/tinydns-edit data data.new add childns \${1+"\$@"}
-___
-cat>root/add-host<<___
+exec %{_bindir}/tinydns-edit data data.new add childns ${1+"$@"}
+EOF
+cat>$s/root/add-host<<'EOF'
 #!/bin/sh
 #!/bin/sh
-exec %{_bindir}/tinydns-edit data data.new add host \${1+"\$@"}
-___
-cat>root/add-host6<<___
+exec %{_bindir}/tinydns-edit data data.new add host ${1+"$@"}
+EOF
+cat>$s/root/add-host6<<'EOF'
 #!/bin/sh
 #!/bin/sh
-exec %{_bindir}/tinydns-edit data data.new add host6 \${1+"\$@"}
-___
-cat>root/add-alias<<___
+exec %{_bindir}/tinydns-edit data data.new add host6 ${1+"$@"}
+EOF
+cat>$s/root/add-alias<<'EOF'
 #!/bin/sh
 #!/bin/sh
-exec %{_bindir}/tinydns-edit data data.new add alias \${1+"\$@"}
-___
-cat>root/add-alias6<<___
+exec %{_bindir}/tinydns-edit data data.new add alias ${1+"$@"}
+EOF
+cat>$s/root/add-alias6<<'EOF'
 #!/bin/sh
 #!/bin/sh
-exec %{_bindir}/tinydns-edit data data.new add alias6 \${1+"\$@"}
-___
-cat>root/add-mx<<___
+exec %{_bindir}/tinydns-edit data data.new add alias6 ${1+"$@"}
+EOF
+cat>$s/root/add-mx<<'EOF'
 #!/bin/sh
 #!/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
 data.cdb: data
        %{_bindir}/tinydns-data
-___
+EOF
 
 ##### PICKDNS #####
 
 ##### 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<<EOF
 #!/bin/sh
 #!/bin/sh
-exec setuidgid dnslog multilog t ./main
-___
-mkdir env
-echo %{_sysconfdir}/pickdns/root>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<<EOF
 #!/bin/sh
 exec 2>&1
 exec envuidgid pickdns envdir ./env softlimit -d250000 %{_bindir}/pickdns
 #!/bin/sh
 exec 2>&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<<EOF
 data.cdb: data
        %{_bindir}/pickdns-data
 data.cdb: data
        %{_bindir}/pickdns-data
-___
+EOF
 
 ##### WALLDNS #####
 
 ##### WALLDNS #####
-mkdir $RPM_BUILD_ROOT%{_sysconfdir}/walldns
-cd $RPM_BUILD_ROOT%{_sysconfdir}/walldns
-mkdir log
-mkdir log/main
-touch log/status
-cat>log/run<<___
+make_supervise_service walldns
+s=$RPM_BUILD_ROOT%{_sysconfdir}/walldns
+cat>$s/log/run<<EOF
 #!/bin/sh
 exec setuidgid dnslog multilog t ./main
 #!/bin/sh
 exec setuidgid dnslog multilog t ./main
-___
-mkdir env
-echo %{_sysconfdir}/walldns/root>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<<EOF
 #!/bin/sh
 exec 2>&1
 exec envuidgid walldns envdir ./env softlimit -d250000 %{_bindir}/walldns
 #!/bin/sh
 exec 2>&1
 exec envuidgid walldns envdir ./env softlimit -d250000 %{_bindir}/walldns
-___
-mkdir root
+EOF
+mkdir $s/root
 
 ##### RBLDNS #####
 
 ##### 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<<EOF
 #!/bin/sh
 #!/bin/sh
-exec setuidgid dnslog multilog t ./main
-___
-mkdir env
-echo %{_sysconfdir}/rbldns/root>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<<EOF
 #!/bin/sh
 exec 2>&1
 exec envuidgid rbldns envdir ./env softlimit -d250000 %{_bindir}/rbldns
 #!/bin/sh
 exec 2>&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<<EOF
 data.cdb: data
        %{_bindir}/rbldns-data
 data.cdb: data
        %{_bindir}/rbldns-data
-___
-cat>data<<___
-# example 
+EOF
+cat>$s/data<<EOF
+# example
+# !10.11.12.13:See http://bad.example.com
 # :127.0.0.2:blacklisted"
 # 1.2.3.0/24
 # :127.0.0.2:blacklisted"
 # 1.2.3.0/24
-___
+EOF
 
 
 
 ##### AXFRDNS #####
 
 
 
 ##### AXFRDNS #####
-
-mkdir $RPM_BUILD_ROOT%{_sysconfdir}/axfrdns
-cd $RPM_BUILD_ROOT%{_sysconfdir}/axfrdns
-mkdir log
-mkdir log/main
-touch log/status
-cat>log/run<<___
+make_supervise_service axfrdns
+s=$RPM_BUILD_ROOT%{_sysconfdir}/axfrdns
+cat>$s/log/run<<EOF
 #!/bin/sh
 #!/bin/sh
-exec setuidgid dnslog multilog t ./main
-___
-mkdir env
-echo %{_sysconfdir}/tinydns/root>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 '
 #!/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
 tcp.cdb: tcp
        tcprules tcp.cdb tcp.tmp < tcp
-___
-cat>tcp<<___
+EOF
+cat>$s/tcp<<'EOF'
 # sample line:  1.2.3.4:allow,AXFR="heaven.af.mil/3.2.1.in-addr.arpa"
 :deny
 # 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/service
 cd $RPM_BUILD_ROOT/service
 ln -s ..%{_sysconfdir}/dnscache
 
 ##### daemontools symlinks #####
 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}/tinydns
 ln -s ..%{_sysconfdir}/pickdns
 ln -s ..%{_sysconfdir}/walldns
@@ -558,260 +663,323 @@ ln -s ..%{_sysconfdir}/axfrdns
 rm -rf $RPM_BUILD_ROOT
 
 %pre
 rm -rf $RPM_BUILD_ROOT
 
 %pre
-if [ -n "`getgid djbdns`" ]; then
-       if [ "`getgid djbdns`" != "32" ]; then
-               echo "Error: group djbdns doesn't have gid=32. Correct this before installing djbdns." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/groupadd -g 32 -r -f djbdns
-fi
-if [ -n "`id -u dnslog 2>/dev/null`" ]; then
-       if [ "`id -u dnslog`" != "32" ]; then
-               echo "Error: user dnslog doesn't have uid=32. Correct this before installing djbdns." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/useradd -u 32 -r -d / -s /bin/false -c "djbdns User" -g djbdns dnslog 1>&2
-fi
+%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
 
 %postun
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel dnslog
-       /usr/sbin/groupdel djbdns
+       %userremove dnslog
+       %groupremove djbdns
 fi
 
 %pre dnscache
 fi
 
 %pre dnscache
-if [ -n "`id -u dnscache 2>/dev/null`" ]; then
-       if [ "`id -u dnscache`" != "33" ]; then
-               echo "Error: user dnscache doesn't have uid=33. Correct this before installing djbdns-dnscache." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/useradd -u 33 -r -d /etc/dnscache -s /bin/false -c "djbdns User" -g djbdns dnscache 1>&2
-fi
+%useradd -P %{name}-dnscache -u 33 -r -d /etc/dnscache -s /bin/false -c "djbdns User" -g djbdns dnscache
 
 %post dnscache
 
 %post dnscache
-if [ \! -s /etc/dnscache/seed ]; then
-       dd if=/dev/urandom of=/etc/dnscache/seed bs=128c count=1
+if [ ! -s %{_sysconfdir}/dnscache/seed ]; then
+       dd if=/dev/urandom of=%{_sysconfdir}/dnscache/seed bs=128c count=1
 fi
 fi
-if diff -u /etc/{dnscache,pickdns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and pickdns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/pickdns/env/IP."
+       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
 fi
-if diff -u /etc/{dnscache,rbldns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and rbldns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/rbldns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP"
+       echo "or %{_sysconfdir}/rbldns/env/IP."
 fi
 fi
-if diff -u /etc/{dnscache,tinydns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and tinydns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/tinydns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP"
+       echo "or %{_sysconfdir}/tinydns/env/IP."
 fi
 fi
-if diff -u /etc/{dnscache,walldns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/walldns/env/IP."
+       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
 fi
 
 %preun dnscache
 if [ "$1" = "0" ]; then
-       svc -d /service/dnscache
+       # 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
 fi
 
 %postun dnscache
 if [ "$1" = "0" ]; then
 fi
 
 %postun dnscache
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel dnscache
+       %userremove dnscache
 fi
 
 fi
 
-%pre tinydns
-if [ -n "`id -u tinydns 2>/dev/null`" ]; then
-       if [ "`id -u tinydns`" != "34" ]; then
-               echo "Error: user tinydns doesn't have uid=34. Correct this before installing djbdns-tinydns." 1>&2
-               exit 1
+%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
+
+if [ -f /service/dnscachex/supervise/lock ]; then
+       svc -t /service/dnscachex{,/log}
+fi
+
+%preun dnscachex
+if [ "$1" = "0" ]; then
+       # 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
-else
-       /usr/sbin/useradd -u 34 -r -d /etc/tinydns -s /bin/false -c "djbdns User" -g djbdns tinydns 1>&2
 fi
 
 fi
 
+%pre tinydns
+%useradd -P %{name}-tinydns -u 34 -r -d /etc/tinydns -s /bin/false -c "djbdns User" -g djbdns tinydns
+
 %post tinydns
 %post tinydns
-if diff -u /etc/{dnscache,tinydns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and tinydns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/tinydns/env/IP."
+       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
 fi
-if diff -u /etc/{pick,tiny}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: pickdns and tinydns can't work on the same"
-       echo "IP address. You have to edit either /etc/pickdns/env/IP"
-       echo "or /etc/tinydns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP"
+       echo "or %{_sysconfdir}/tinydns/env/IP."
 fi
 fi
-if diff -u /etc/{rbl,tiny}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: rbldns and tinydns can't work on the same"
-       echo "IP address. You have to edit either /etc/rbldns/env/IP"
-       echo "or /etc/tinydns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP"
+       echo "or %{_sysconfdir}/tinydns/env/IP."
 fi
 fi
-if diff -u /etc/{tiny,wall}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: tinydns and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/tinydns/env/IP"
-       echo "or /etc/walldns/env/IP."
+       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
 fi
 
 %preun tinydns
 if [ "$1" = "0" ]; then
-       svc -d /service/tinydns
+       # 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
 fi
 
 %postun tinydns
 if [ "$1" = "0" ]; then
 fi
 
 %postun tinydns
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel tinydns
+       %userremove tinydns
 fi
 
 %pre pickdns
 fi
 
 %pre pickdns
-if [ -n "`id -u pickdns 2>/dev/null`" ]; then
-       if [ "`id -u pickdns`" != "35" ]; then
-               echo "Error: user pickdns doesn't have uid=35. Correct this before installing djbdns-pickdns." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/useradd -u 35 -r -d /etc/pickdns -s /bin/false -c "djbdns User" -g djbdns pickdns 1>&2
-fi
+%useradd -P %{name}-pickdns -u 35 -r -d /etc/pickdns -s /bin/false -c "djbdns User" -g djbdns pickdns
 
 %post pickdns
 
 %post pickdns
-if diff -u /etc/{dnscache,pickdns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and pickdns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/pickdns/env/IP."
+       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
 fi
-if diff -u /etc/{pick,rbl}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: pickdns and rbldns can't work on the same"
-       echo "IP address. You have to edit either /etc/pickdns/env/IP"
-       echo "or /etc/rbldns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP"
+       echo "or %{_sysconfdir}/rbldns/env/IP."
 fi
 fi
-if diff -u /etc/{pick,tiny}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: pickdns and tinydns can't work on the same"
-       echo "IP address. You have to edit either /etc/pickdns/env/IP"
-       echo "or /etc/tinydns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP"
+       echo "or %{_sysconfdir}/tinydns/env/IP."
 fi
 fi
-if diff -u /etc/{pick,wall}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: pickdns and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/pickdns/env/IP"
-       echo "or /etc/walldns/env/IP."
+       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
 
 %preun pickdns
 if [ "$1" = "0" ]; then
 fi
 
 %preun pickdns
 if [ "$1" = "0" ]; then
-       svc -d /service/pickdns
+       # 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
 fi
 
 %postun pickdns
 if [ "$1" = "0" ]; then
 fi
 
 %postun pickdns
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel pickdns
+       %userremove pickdns
 fi
 
 %pre walldns
 fi
 
 %pre walldns
-if [ -n "`id -u walldns 2>/dev/null`" ]; then
-       if [ "`id -u walldns`" != "36" ]; then
-               echo "Error: user walldns doesn't have uid=36. Correct this before installing djbdns-walldns." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/useradd -u 36 -r -d /etc/walldns -s /bin/false -c "djbdns User" -g djbdns walldns 1>&2
-fi
+%useradd -P %{name}-walldns -u 36 -r -d /etc/walldns -s /bin/false -c "djbdns User" -g djbdns walldns
 
 %post walldns
 
 %post walldns
-if diff -u /etc/{dnscache,walldns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/walldns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/dnscache/env/IP"
+       echo "or %{_sysconfdir}/walldns/env/IP."
 fi
 fi
-if diff -u /etc/{pick,wall}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: pickdns and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/pickdns/env/IP"
-       echo "or /etc/walldns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP"
+       echo "or %{_sysconfdir}/walldns/env/IP."
 fi
 fi
-if diff -u /etc/{rbl,wall}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: rbldns and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/rbldns/env/IP"
-       echo "or /etc/walldns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP"
+       echo "or %{_sysconfdir}/walldns/env/IP."
 fi
 fi
-if diff -u /etc/{tiny,wall}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: tinydns and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/tinydns/env/IP"
-       echo "or /etc/walldns/env/IP."
+       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
 fi
 
 %preun walldns
 if [ "$1" = "0" ]; then
-       svc -d /service/walldns
+       # 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
 fi
 
 %postun walldns
 if [ "$1" = "0" ]; then
 fi
 
 %postun walldns
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel walldns
+       %userremove walldns
 fi
 
 %pre rbldns
 fi
 
 %pre rbldns
-if [ -n "`id -u rbldns 2>/dev/null`" ]; then
-       if [ "`id -u rbldns`" != "37" ]; then
-               echo "Error: user rbldns doesn't have uid=37. Correct this before installing djbdns-rbldns." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/useradd -u 37 -r -d /etc/rbldns -s /bin/false -c "djbdns User" -g djbdns rbldns 1>&2
-fi
+%useradd -P %{name}-rbldns -u 37 -r -d /etc/rbldns -s /bin/false -c "djbdns User" -g djbdns rbldns
 
 %post rbldns
 
 %post rbldns
-if diff -u /etc/{dnscache,rbldns}/env/IP >/dev/zero 2>&1;then
+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 "Warning: dnscache and rbldns can't work on the same"
-       echo "IP address. You have to edit either /etc/dnscache/env/IP"
-       echo "or /etc/rbldns/env/IP."
+       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
 fi
-if diff -u /etc/{pick,rbl}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: pickdns and rbldns can't work on the same"
-       echo "IP address. You have to edit either /etc/pickdns/env/IP"
-       echo "or /etc/rbldns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/pickdns/env/IP"
+       echo "or %{_sysconfdir}/rbldns/env/IP."
 fi
 fi
-if diff -u /etc/{rbl,tiny}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: rbldns and tinydns can't work on the same"
-       echo "IP address. You have to edit either /etc/rbldns/env/IP"
-       echo "or /etc/tinydns/env/IP."
+       echo "IP address. You have to edit either %{_sysconfdir}/rbldns/env/IP"
+       echo "or %{_sysconfdir}/tinydns/env/IP."
 fi
 fi
-if diff -u /etc/{rbl,wall}dns/env/IP >/dev/zero 2>&1;then
+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 "Warning: rbldns and walldns can't work on the same"
-       echo "IP address. You have to edit either /etc/rbldns/env/IP"
-       echo "or /etc/walldns/env/IP."
+       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
 fi
 
 %preun rbldns
 if [ "$1" = "0" ]; then
-       svc -d /service/rbldns
+       # 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
 fi
 
 %postun rbldns
 if [ "$1" = "0" ]; then
 fi
 
 %postun rbldns
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel rbldns
+       %userremove rbldns
 fi
 
 %pre axfrdns
 fi
 
 %pre axfrdns
-if [ -n "`id -u axfrdns 2>/dev/null`" ]; then
-       if [ "`id -u axfrdns`" != "38" ]; then
-               echo "Error: user axfrdns doesn't have uid=38. Correct this before installing djbdns-axfrdns." 1>&2
-               exit 1
-       fi
-else
-       /usr/sbin/useradd -u 38 -r -d /etc/axfrdns -s /bin/false -c "djbdns User" -g djbdns axfrdns 1>&2
-fi
+%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
 
 %preun axfrdns
 if [ "$1" = "0" ]; then
-       svc -d /service/axfrdns
+       # 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
 fi
 
 %postun axfrdns
 if [ "$1" = "0" ]; then
 fi
 
 %postun axfrdns
 if [ "$1" = "0" ]; then
-       /usr/sbin/userdel axfrdns
+       %userremove axfrdns
 fi
 
 %files
 fi
 
 %files
@@ -822,59 +990,111 @@ fi
 %attr(755,root,root) %{_bindir}/axfr-get
 %{_mandir}/man[15]/*
 %{_mandir}/man8/axfr-get*
 %attr(755,root,root) %{_bindir}/axfr-get
 %{_mandir}/man[15]/*
 %{_mandir}/man8/axfr-get*
+%dir %attr(751,root,root) %dir /var/log/djbdns
 
 %files dnscache
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/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
 %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/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(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
 %{_mandir}/man8/dnscache*
 /service/dnscache
 
 %ghost %attr(600,root,root) %{_sysconfdir}/dnscache/seed
 %{_mandir}/man8/dnscache*
 /service/dnscache
 
+%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
 %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
 %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(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-*
 %{_mandir}/man8/tinydns*
 /service/tinydns
 
 %attr(755,root,root) %{_sysconfdir}/tinydns/root/add-*
 %{_mandir}/man8/tinydns*
 /service/tinydns
 
+%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
 %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
 %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(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
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pickdns/root/Makefile
+%config %{_sysconfdir}/pickdns/root/data
 %{_mandir}/man8/pickdns*
 /service/pickdns
 
 %{_mandir}/man8/pickdns*
 /service/pickdns
 
@@ -882,12 +1102,19 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/walldns*
 %dir %attr(3755,root,root) %{_sysconfdir}/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
 %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
 %{_mandir}/man8/walldns*
 %attr(755,root,root) %{_sysconfdir}/walldns/run
 %dir %attr(2755,root,root) %{_sysconfdir}/walldns/root
 %{_mandir}/man8/walldns*
@@ -897,16 +1124,23 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/rbldns*
 %dir %attr(3755,root,root) %{_sysconfdir}/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
 %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(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
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rbldns/root/Makefile
+%config %{_sysconfdir}/rbldns/root/data
 %{_mandir}/man8/rbldns*
 /service/rbldns
 
 %{_mandir}/man8/rbldns*
 /service/rbldns
 
@@ -914,14 +1148,21 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/axfrdns*
 %dir %attr(3755,root,root) %{_sysconfdir}/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
 %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(755,root,root) %{_sysconfdir}/axfrdns/run
-%attr(644,root,root) %{_sysconfdir}/axfrdns/Makefile
-%config %attr(644,root,root) %{_sysconfdir}/axfrdns/tcp
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/axfrdns/Makefile
+%config %{_sysconfdir}/axfrdns/tcp
 %{_mandir}/man8/axfrdns*
 /service/axfrdns
 %{_mandir}/man8/axfrdns*
 /service/axfrdns
This page took 0.101319 seconds and 4 git commands to generate.