# default options %define sdb 1 %define geoip 0 %define gssapi 1 %{?_with_sdbp: %{expand: %%global sdb 1}} %{?_without_sdb: %{expand: %%global sdb 0}} %{?_with_geoip: %{expand: %%global geoip 1}} %{?_without_geoip: %{expand: %%global geoip 0}} %{?_with_gssapi: %{expand: %%global gssapi 1}} %{?_without_gssapi: %{expand: %%global gssapi 0}} %define major_version 9.9.0 %define patch_version %define dashpatch %{?patch_version:-%patch_version}%nil %define dotpatch %{?patch_version:.%patch_version}%nil Name: bind Version: %{major_version}%{dotpatch} Release: %mkrel 6 Summary: A DNS (Domain Name System) server License: ISC Group: System/Servers URL: http://www.isc.org/products/BIND/ Source0: ftp://ftp.isc.org/isc/%{name}9/%{major_version}%{dashpatch}/%{name}-%{major_version}%{dashpatch}.tar.gz Source1: ftp://ftp.isc.org/isc/%{name}9/%{major_version}%{dashpatch}/%{name}-%{major_version}%{dashpatch}.tar.gz.asc Source2: bind-manpages.tar.bz2 Source3: bind-dhcp-dynamic-dns-examples.tar.bz2 Source4: bind-named.init Source6: bind-named.sysconfig Source7: bind-keygen.c Source8: named.NetworkManager Source9: setup-named-chroot.sh Source12: README.sdb_pgsql Source11: ftp://ftp.internic.net/domain/named.cache # caching-nameserver files (S100-S112) Source100: bogon_acl.conf Source101: hosts Source102: localdomain.zone Source103: localhost.zone Source104: logging.conf Source105: named.broadcast Source106: named.conf Source107: named.ip6.local Source108: named.local Source109: named.zero Source110: rndc.conf Source111: rndc.key Source112: trusted_networks_acl.conf Source30: ldap2zone.c Source31: ldap2zone.1 Source32: named-sdb.8 Source33: zonetodb.1 Source34: zone2sqlite.1 Source35: bind.tmpfiles.d Source36: bind-9.3.1rc1-sdb_tools-Makefile.in Source37: named.service Source39: named-sdb.service # fedora patches Patch71: bind-9.5-overflow.patch Patch72: bind-9.5-dlz-64bit.patch Patch87: bind-9.5-parallel-build.patch Patch99: bind-96-libtool2.patch Patch101: bind-96-old-api.patch Patch102: bind-95-rh452060.patch Patch106: bind93-rh490837.patch Patch104: bind-96-dyndb.patch # SDB patches Patch11: bind-9.3.2b2-sdbsrc.patch Patch12: bind-9.5-sdb.patch Patch17: bind-9.3.2b1-fix_sdb_ldap.patch Patch62: bind-9.5-sdb-sqlite-bld.patch # IDN patches Patch73: bind-9.5-libidn.patch Patch83: bind-9.5-libidn2.patch Patch85: bind-9.5-libidn3.patch Patch94: bind95-rh461409.patch # other patches Patch201: bind-queryperf_fix.diff Patch206: bind-9.2.0rc3-varrun.patch Patch208: bind-9.3.2-prctl_set_dumpable.patch # (oe) rediffed patch originates from http://www.caraytech.com/geodns/ Patch300: bind-9.4.0-geoip.diff Requires: bind-utils >= %{version}-%{release} BuildRequires: openssl-devel BuildRequires: multiarch-utils >= 1.0.3 BuildRequires: libidn-devel BuildRequires: postgresql-devel BuildRequires: mysql-devel BuildRequires: libcap-devel >= 2.10 BuildRequires: libxml2-devel %if %{gssapi} BuildRequires: krb5-devel %endif %if %{geoip} BuildRequires: libgeoip-devel %endif %if %{sdb} BuildRequires: mysql-devel BuildRequires: openldap-devel BuildRequires: postgresql-devel BuildRequires: sqlite3-devel %endif %description BIND (Berkeley Internet Name Domain) is an implementation of the DNS (domain Name System) protocols. BIND includes a DNS server (named), which resolves host names to IP addresses, and a resolver library (routines for applications to use when interfacing with DNS). A DNS server allows clients to name resources or objects and share the information with other network machines. The named DNS server can be used on workstations as a caching name server, but is generally only needed on one machine for an entire network. Note that the configuration files for making BIND act as a simple caching nameserver are included in the caching-nameserver package. Install the bind package if you need a DNS server for your network. If you want bind to act a caching name server, you will also need to install the caching-nameserver package. Many BIND 8 features previously unimplemented in BIND 9, including domain-specific forwarding, the \$GENERATE master file directive, and the "blackhole", "dialup", and "sortlist" options Forwarding of dynamic update requests; this is enabled by the "allow-update-forwarding" option A new, simplified database interface and a number of sample drivers based on it; see doc/dev/sdb for details Support for building single-threaded servers for environments that do not supply POSIX threads New configuration options: "min-refresh-time", "max-refresh-time", "min-retry-time", "max-retry-time", "additional-from-auth", "additional-from-cache", "notify explicit" Faster lookups, particularly in large zones. Build Options: --with sdb Build with database backends and DLZ support (enabled by default) --with geoip Build with GeoIP support (disabled per default) %if %{sdb} %package sdb Summary: BIND server with database backends and DLZ support Group: System/Servers Requires: bind %description sdb BIND (Berkeley Internet Name Domain) is an implementation of the DNS (Domain Name System) protocols. BIND includes a DNS server (named-sdb) which has compiled-in SDB (Simplified Database Backend) which includes support for using alternative Zone Databases stored in an LDAP server (ldapdb), a postgreSQL database (pgsqldb), an sqlite database (sqlitedb), or in the filesystem (dirdb), in addition to the standard in-memory RBT (Red Black Tree) zone database. It also includes support for DLZ (Dynamic Loadable Zones) %endif %package utils Summary: Utilities for querying DNS name servers Group: Networking/Other %description utils Bind-utils contains a collection of utilities for querying DNS (Domain Name Service) name servers to find out information about Internet hosts. These tools will provide you with the IP addresses for given host names, as well as other information about registered domains and network addresses. You should install bind-utils if you need to get information from DNS name servers. %package devel Summary: Include files and libraries needed for bind DNS development Group: Development/C %description devel The bind-devel package contains all the include files and the library required for DNS (Domain Name Service) development for BIND versions 9.x.x. %package doc Summary: Documentation for BIND Group: Books/Other BuildArch: noarch %description doc The bind-devel package contains the documentation for BIND. %prep %setup -q -n %{name}-%{major_version}%{dashpatch} -a2 -a3 #patch200 -p1 -b .fallback-to-second-server.droplet %patch201 -p0 -b .queryperf_fix.droplet %patch104 -p1 -b .dyndb %if %{sdb} %patch101 -p1 -b .old-api mkdir bin/named-sdb cp -r bin/named/* bin/named-sdb %patch11 -p1 -b .sdbsrc # SDB ldap cp -fp contrib/sdb/ldap/ldapdb.[ch] bin/named-sdb # SDB postgreSQL cp -fp contrib/sdb/pgsql/pgsqldb.[ch] bin/named-sdb # SDB sqlite cp -fp contrib/sdb/sqlite/sqlitedb.[ch] bin/named-sdb # SDB Berkeley DB - needs to be ported to DB4! #cp -fp contrib/sdb/bdb/bdb.[ch] bin/named_sdb # SDB dir cp -fp contrib/sdb/dir/dirdb.[ch] bin/named-sdb # SDB tools mkdir -p bin/sdb_tools cp -fp %{SOURCE30} bin/sdb_tools/ldap2zone.c cp -fp %{SOURCE36} bin/sdb_tools/Makefile.in #cp -fp contrib/sdb/bdb/zone2bdb.c bin/sdb_tools cp -fp contrib/sdb/ldap/{zone2ldap.1,zone2ldap.c} bin/sdb_tools cp -fp contrib/sdb/pgsql/zonetodb.c bin/sdb_tools cp -fp contrib/sdb/sqlite/zone2sqlite.c bin/sdb_tools %patch12 -p1 -b .sdb %patch17 -p1 -b .fix_sdb_ldap %patch62 -p1 -b .sdb-sqlite-bld %endif %patch206 -p0 -b .varrun.droplet %patch208 -p0 -b .prctl_set_dumpable.droplet %patch71 -p1 -b .overflow.droplet %patch72 -p1 -b .64bit %patch73 -p1 -b .libidn %patch83 -p1 -b .libidn2 %patch85 -p1 -b .libidn3 %patch87 -p1 -b .parallel %patch94 -p1 -b .rh461409 mkdir -p m4 %patch99 -p1 -b .libtool2 %patch102 -p0 -b .rh452060 %patch106 -p0 -b .rh490837 %if %{geoip} %patch300 -p1 -b .geoip %endif cp %{SOURCE7} keygen.c cp %{SOURCE11} named.cache mkdir -p caching-nameserver cp %{SOURCE100} caching-nameserver/bogon_acl.conf cp %{SOURCE101} caching-nameserver/hosts cp %{SOURCE102} caching-nameserver/localdomain.zone cp %{SOURCE103} caching-nameserver/localhost.zone cp %{SOURCE104} caching-nameserver/logging.conf cp %{SOURCE105} caching-nameserver/named.broadcast cp %{SOURCE106} caching-nameserver/named.conf cp %{SOURCE107} caching-nameserver/named.ip6.local cp %{SOURCE108} caching-nameserver/named.local cp %{SOURCE109} caching-nameserver/named.zero cp %{SOURCE110} caching-nameserver/rndc.conf cp %{SOURCE111} caching-nameserver/rndc.key cp %{SOURCE112} caching-nameserver/trusted_networks_acl.conf %build %serverbuild export CPPFLAGS="$CPPFLAGS -DDIG_SIGCHASE" export STD_CDEFINES="$CPPFLAGS" libtoolize --copy --force aclocal -I m4 --force autoheader --force autoconf --force # (oe) make queryperf from the contrib _before_ bind..., makes it # easier to determine if it builds or not, it saves time... pushd contrib/queryperf rm -f configure autoconf %configure2_5x %make CFLAGS="$CFLAGS" popd pushd contrib/query-loc-* perl -pi -e "s|-lnsl|-lnsl -lresolv|g" configure* rm -f configure autoconf %configure2_5x %make CFLAGS="$CFLAGS" popd %if %{geoip} export CFLAGS="$CFLAGS -DGEOIP" export LDFLAGS="$LDFLAGS -lGeoIP" %endif %configure2_5x \ --localstatedir=/var \ --disable-openssl-version-check \ --enable-exportlib \ --with-export-libdir=%{_libdir} \ --with-export-includedir=%{_includedir} \ --enable-threads \ --enable-largefile \ --enable-ipv6 \ --enable-filter-aaaa \ --enable-epoll \ --with-openssl=%{_prefix} \ %if %{gssapi} --with-gssapi=%{_prefix} --disable-isc-spnego \ %endif --with-randomdev=/dev/urandom \ --with-libxml2=yes \ %if %{sdb} --with-dlz-ldap=yes \ --with-dlz-postgres=yes \ --with-dlz-mysql=yes \ --with-dlz-filesystem=yes \ --with-dlz-stub=yes %endif # pkcs11 support requires a working backend, otherwise bind won't start # http://blogs.sun.com/janp/ # http://sourceforge.net/projects/opencryptoki #--with-pkcs11 \ make gcc $CFLAGS -o dns-keygen keygen.c #%%check ## run the test suite #make check %install rm -rf %{buildroot} # make some directories install -d %{buildroot}/var/run/named %makeinstall_std ln -snf named %{buildroot}%{_sbindir}/lwresd install -m0755 contrib/named-bootconf/named-bootconf.sh %{buildroot}%{_sbindir}/named-bootconf install -m0755 contrib/queryperf/queryperf %{buildroot}%{_bindir}/ cp contrib/queryperf/README README.queryperf install -m0755 contrib/query-loc-*/query-loc %{buildroot}%{_bindir}/ install -m0644 contrib/query-loc-*/query-loc.1 %{buildroot}%{_mandir}/man1/ cp contrib/query-loc-*/ADDRESSES ADDRESSES.query-loc cp contrib/query-loc-*/ALGO ALGO.query-loc cp contrib/query-loc-*/README README.query-loc cp contrib/query-loc-*/USAGE USAGE.query-loc install -d -m 755 %{buildroot}%{_initrddir} install -m 755 %{SOURCE4} %{buildroot}%{_initrddir}/named install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig install -m 644 %{SOURCE6} %{buildroot}%{_sysconfdir}/sysconfig/named install -d -m 755 %{buildroot}%{_sysconfdir}/rsyslog.d/ cat > %{buildroot}%{_sysconfdir}/rsyslog.d/named.conf <<'EOF' $AddUnixListenSocket /var/lib/named/dev/log EOF install -d -m 755 %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d install -m 755 %{SOURCE8} %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/13-named install -m 755 %{SOURCE9} %{buildroot}%{_sbindir}/setup-named-chroot.sh # systemd files install -d -m 755 %{buildroot}%{_sysconfdir}/tmpfiles.d install -m 644 %{SOURCE35} %{buildroot}%{_sysconfdir}/tmpfiles.d/named.conf install -d -m 755 %{buildroot}%{_unitdir} install -m 644 %{SOURCE37} %{buildroot}%{_unitdir} install -m 644 %{SOURCE39} %{buildroot}%{_unitdir} %if %{sdb} install -m 644 %{SOURCE12} contrib/sdb/pgsql/ install -m 644 %{SOURCE31} %{buildroot}%{_mandir}/man1/ldap2zone.1 install -m 644 %{SOURCE32} %{buildroot}%{_mandir}/man8/named-sdb.8 install -m 644 %{SOURCE33} %{buildroot}%{_mandir}/man1/zonetodb.1 install -m 644 %{SOURCE34} %{buildroot}%{_mandir}/man1/zone2sqlite.1 %endif install -m 755 dns-keygen %{buildroot}%{_sbindir}/dns-keygen # make the chroot install -d %{buildroot}/var/lib/named/{dev,etc} install -d %{buildroot}/var/lib/named/var/{log,run,tmp} install -d %{buildroot}/var/lib/named/var/named/{master,slaves,reverse,dynamic} install -m 644 \ caching-nameserver/named.conf \ caching-nameserver/logging.conf \ caching-nameserver/trusted_networks_acl.conf \ caching-nameserver/hosts \ caching-nameserver/bogon_acl.conf \ %{buildroot}/var/lib/named/etc install -m 640 \ caching-nameserver/rndc.conf\ caching-nameserver/rndc.key \ %{buildroot}/var/lib/named/etc install -m 644 \ caching-nameserver/localdomain.zone \ caching-nameserver/localhost.zone \ %{buildroot}/var/lib/named/var/named/master install -m 644 \ caching-nameserver/named.broadcast \ caching-nameserver/named.ip6.local \ caching-nameserver/named.local \ caching-nameserver/named.zero \ %{buildroot}/var/lib/named/var/named/reverse # fix some compat symlinks ln -s /var/lib/named/etc/named.conf %{buildroot}%{_sysconfdir}/named.conf ln -s /var/lib/named/etc/rndc.conf %{buildroot}%{_sysconfdir}/rndc.conf ln -s /var/lib/named/etc/rndc.key %{buildroot}%{_sysconfdir}/rndc.key mv %{buildroot}%{_sysconfdir}/bind.keys %{buildroot}/var/lib/named/etc/ ln -s /var/lib/named/etc/bind.keys %{buildroot}%{_sysconfdir}/bind.keys echo "; Use \"dig @A.ROOT-SERVERS.NET . ns\" to update this file if it's outdated." > named.cache.tmp cat named.cache >> named.cache.tmp install -m0644 named.cache.tmp %{buildroot}/var/lib/named/var/named/named.ca # fix man pages install -m0644 man5/resolver.5 %{buildroot}%{_mandir}/man5/ ln -s resolver.5 %{buildroot}%{_mandir}/man5/resolv.5 install -d -m 755 %{buildroot}%{_docdir}/%{name} install -d -m 755 %{buildroot}%{_docdir}/%{name}/arm install -m 644 doc/arm/*.html %{buildroot}%{_docdir}/%{name}/arm install -m 644 doc/arm/*.pdf %{buildroot}%{_docdir}/%{name}/arm cp -pr doc/trustix %{buildroot}%{_docdir}/%{name} #cp -pr doc/rfc %{buildroot}%{_docdir}/%{name} #cp -pr doc/draft %{buildroot}%{_docdir}/%{name} cp -pr doc/misc %{buildroot}%{_docdir}/%{name} rm -f %{buildroot}%{_docdir}/%{name}/misc/Makefile* cp -pr doc/dhcp-dynamic-dns-examples %{buildroot}%{_docdir}/%{name} %multiarch_binaries %{buildroot}%{_bindir}/isc-config.sh %pre %_pre_useradd named /var/lib/named /bin/false DATE=`date +%%Y%%m%%d%%j%%S` for f in named.conf rndc.conf rndc.key; do # move away files to prepare for softlinks if [ -f /etc/$f -a ! -h /etc/$f ]; then mv -vf /etc/$f /etc/$f.$DATE; fi if [ -f /etc/$f -a ! -h /etc/$f ]; then mv -vf /etc/$f /etc/$f.$DATE; fi if [ -f /etc/$f -a ! -h /etc/$f ]; then mv -vf /etc/$f /etc/$f.$DATE; fi done %post if grep -q "_MY_KEY_" /var/lib/named/etc/rndc.conf /var/lib/named/etc/rndc.key; then MYKEY="`%{_sbindir}/dns-keygen`" perl -pi -e "s|_MY_KEY_|$MYKEY|g" /var/lib/named/etc/rndc.conf /var/lib/named/etc/rndc.key fi # remove device file created with wrong minor number (#3028) urandom=/var/lib/named/dev/urandom if [ -f $urandom ] && [ $(ls -l $urandom | awk '{print $6}') -eq 8 ]; then rm -f $urandom fi %_post_service named %preun %_preun_service named %postun %_postun_userdel named %files %doc CHANGES README FAQ COPYRIGHT %if %{geoip} %doc geodns.INSTALL geodns.named.conf-sample %endif %config(noreplace) %{_sysconfdir}/sysconfig/named %config(noreplace) %{_sysconfdir}/rsyslog.d/named.conf %{_sysconfdir}/tmpfiles.d/named.conf %{_sysconfdir}/NetworkManager/dispatcher.d/13-named %{_initrddir}/named %{_unitdir}/named.service %{_sbindir}/setup-named-chroot.sh %{_sbindir}/arpaname %{_sbindir}/ddns-confgen %{_sbindir}/dns-keygen %{_sbindir}/dnssec-dsfromkey %{_sbindir}/dnssec-keyfromlabel %{_sbindir}/dnssec-keygen %{_sbindir}/dnssec-revoke %{_sbindir}/dnssec-settime %{_sbindir}/dnssec-signzone %{_sbindir}/genrandom %{_sbindir}/isc-hmac-fixup %{_sbindir}/lwresd %{_sbindir}/named %{_sbindir}/named-bootconf %{_sbindir}/named-checkconf %{_sbindir}/named-checkzone %{_sbindir}/named-compilezone %{_sbindir}/named-journalprint %{_sbindir}/nsec3hash %{_sbindir}/rndc %{_sbindir}/rndc-confgen %{_mandir}/man1/arpaname.1.* %{_mandir}/man5/named.conf.5* %{_mandir}/man5/rndc.conf.5* %{_mandir}/man8/ddns-confgen.8.* %{_mandir}/man8/dnssec-*.8* %{_mandir}/man8/genrandom.8.* %{_mandir}/man8/isc-hmac-fixup.8.* %{_mandir}/man8/lwresd.8* %{_mandir}/man8/named-*.8* %{_mandir}/man8/named.8* %{_mandir}/man8/nsec3hash.8.* %{_mandir}/man8/rndc.8* %{_mandir}/man8/rndc-confgen.8* # the chroot %dir /var/lib/named %dir /var/lib/named/dev %dir /var/lib/named/etc %dir /var/lib/named/var %attr(-,named,named) %dir /var/lib/named/var/named %attr(-,named,named) %dir /var/lib/named/var/log %attr(-,named,named) %dir /var/lib/named/var/run %attr(-,named,named) %dir /var/lib/named/var/tmp %attr(-,named,named) %dir /var/lib/named/var/named/master %attr(-,named,named) %dir /var/lib/named/var/named/slaves %attr(-,named,named) %dir /var/lib/named/var/named/reverse %attr(-,named,named) %dir /var/lib/named/var/named/dynamic %config(noreplace) /var/lib/named/etc/named.conf %attr(-,root,named) %config(noreplace) /var/lib/named/etc/bind.keys %attr(-,root,named) %config(noreplace) /var/lib/named/etc/rndc.conf %attr(-,root,named) %config(noreplace) /var/lib/named/etc/rndc.key %{_sysconfdir}/bind.keys %{_sysconfdir}/named.conf %{_sysconfdir}/rndc.conf %{_sysconfdir}/rndc.key %config(noreplace) /var/lib/named/etc/bogon_acl.conf %config(noreplace) /var/lib/named/etc/logging.conf %config(noreplace) /var/lib/named/etc/trusted_networks_acl.conf %config(noreplace) /var/lib/named/etc/hosts %config(noreplace) /var/lib/named/var/named/master/localdomain.zone %config(noreplace) /var/lib/named/var/named/master/localhost.zone %config(noreplace) /var/lib/named/var/named/reverse/named.broadcast %config(noreplace) /var/lib/named/var/named/reverse/named.ip6.local %config(noreplace) /var/lib/named/var/named/reverse/named.local %config(noreplace) /var/lib/named/var/named/reverse/named.zero %config(noreplace) /var/lib/named/var/named/named.ca %files devel %doc CHANGES README %multiarch %{multiarch_bindir}/isc-config.sh %{_bindir}/isc-config.sh %{_includedir}/* %{_libdir}/*.a %{_mandir}/man1/isc-config.sh.1* %{_mandir}/man3/lwres*.3* %files utils %doc README COPYRIGHT *.query-loc *.queryperf %{_bindir}/dig %{_bindir}/host %{_bindir}/nslookup %{_bindir}/nsupdate %{_bindir}/queryperf %{_bindir}/query-loc %{_mandir}/man1/host.1* %{_mandir}/man1/dig.1* %{_mandir}/man1/nslookup.1* %{_mandir}/man1/nsupdate.1* %{_mandir}/man1/query-loc.1* %{_mandir}/man5/resolver.5* %{_mandir}/man5/resolv.5* %files doc %{_docdir}/%{name} %doc doc/dhcp-dynamic-dns-examples doc/chroot doc/trustix %if %{sdb} %files sdb %{_unitdir}/named-sdb.service %{_mandir}/man1/zone2ldap.1* %{_mandir}/man1/ldap2zone.1* %{_mandir}/man1/zonetodb.1* %{_mandir}/man1/zone2sqlite.1* %{_mandir}/man8/named-sdb.8* %doc contrib/sdb/ldap/README.ldap contrib/sdb/ldap/INSTALL.ldap contrib/sdb/pgsql/README.sdb_pgsql %{_sbindir}/named-sdb %{_sbindir}/zone2ldap %{_sbindir}/ldap2zone %{_sbindir}/zonetodb %{_sbindir}/zone2sqlite %endif