diff --git a/85932ec5.patch b/85932ec5.patch deleted file mode 100644 index 8b919ef..0000000 --- a/85932ec5.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 85932ec5d89041424cf6d20c71b482e23cf17d2f Mon Sep 17 00:00:00 2001 -From: "Antonio \"Criddi\" Mammita" - <77116213+ammammita@users.noreply.github.com> -Date: Wed, 13 Jan 2021 17:17:31 +0000 -Subject: [PATCH] Ticket 18 and 19 (#22) - -Fix issue #18 and issue #19 - -Base template replacement issue ---- - rbldnsd.8 | 4 ++-- - rbldnsd_util.c | 8 ++++++-- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/rbldnsd.8 b/rbldnsd.8 -index 36e70fa..addb737 100644 ---- a/rbldnsd.8 -+++ b/rbldnsd.8 -@@ -726,7 +726,7 @@ the above example may be simplified to: - .fi - There is no default TXT value, so - .B rbldnsd --will not return anything for TXT queries it TXT isn't -+will not return anything for TXT queries unless TXT isn't - specified. - .PP - When A value is specified for a given entry, but TXT template -@@ -782,7 +782,7 @@ text given for individual entries. In order to stop usage of base template - \fB$=\fR for a single record, start it with \fB=\fR (which will be omitted - from the resulting TXT value). For example, - .nf -- $0 See http://www.example.com/bl?$= ($) for details -+ $= See http://www.example.com/bl?$= ($) for details - 127.0.0.2 r123 - 127.0.0.3 - 127.0.0.4 =See other blocklists for details about $ -diff --git a/rbldnsd_util.c b/rbldnsd_util.c -index c6d628d..eeafd07 100644 ---- a/rbldnsd_util.c -+++ b/rbldnsd_util.c -@@ -243,6 +243,8 @@ int txtsubst(char sb[TXTBUFSIZ], const char *txt, - char *const e = sb + 254; - char *lp = sb; - const char *s, *si, *sx; -+ const char *srec = s0; -+ - if (txt[0] == '=') - sx = ++txt; - else if (sn[SUBST_BASE_TEMPLATE] && *sn[SUBST_BASE_TEMPLATE]) { -@@ -273,8 +275,10 @@ int txtsubst(char sb[TXTBUFSIZ], const char *txt, - sl = strlen(si); - ++s; - } -- else -- sl = strlen(si = s0); -+ else { -+ sl = strlen(si = srec); -+ } -+ - if (lp + sl > e) /* silently truncate TXT RR >255 bytes */ - sl = e - lp; - memcpy(lp, si, sl); diff --git a/rbldnsctl b/rbldnsctl index f5bb1b9..cc9e181 100755 --- a/rbldnsctl +++ b/rbldnsctl @@ -82,49 +82,48 @@ for_all_daemons() { } start_one_daemon() { - /usr/bin/systemctl start "rbldnsd-${name}.service" + /bin/systemctl start "rbldnsd-${name}.service" } stop_one_daemon() { - /usr/bin/systemctl stop "rbldnsd-${name}.service" + /bin/systemctl stop "rbldnsd-${name}.service" } reload_one_daemon() { - /usr/bin/systemctl reload "rbldnsd-${name}.service" + /bin/systemctl reload "rbldnsd-${name}.service" } check_one_daemon() { - /usr/bin/systemctl status "rbldnsd-${name}.service" + /bin/systemctl status "rbldnsd-${name}.service" } restart_one_daemon() { - /usr/bin/systemctl restart "rbldnsd-${name}.service" + /bin/systemctl restart "rbldnsd-${name}.service" } condrestart_one_daemon() { - /usr/bin/systemctl try-restart "rbldnsd-${name}.service" + /bin/systemctl try-restart "rbldnsd-${name}.service" } create_one_daemon() { - { - awk '/^\[Unit\]/, 1 == 2' /etc/systemd/rbldnsd.conf - cat <<-END_OF_UNIT - [Unit] - Description=DNSBL (rbldnsd) ${name} instance - - [Service] - ExecStart=/sbin/rbldnsd -n ${args} - END_OF_UNIT - } > "/etc/systemd/system/rbldnsd-${name}.service" + cat > "/etc/systemd/system/rbldnsd-${name}.service" <<-END_OF_UNIT + .include /etc/systemd/rbldnsd.conf + + [Unit] + Description=DNSBL (rbldnsd) ${name} instance + + [Service] + ExecStart=/sbin/rbldnsd -n ${args} + END_OF_UNIT echo "Created unit file /etc/systemd/system/rbldnsd-${name}.service" } enable_one_daemon() { - /usr/bin/systemctl enable "rbldnsd-${name}.service" + /bin/systemctl enable "rbldnsd-${name}.service" } disable_one_daemon() { - /usr/bin/systemctl disable "rbldnsd-${name}.service" + /bin/systemctl disable "rbldnsd-${name}.service" } # See how we were called. @@ -132,7 +131,7 @@ case "$1" in create) for_all_daemons create_one_daemon RETVAL=$? - /usr/bin/systemctl daemon-reload + /bin/systemctl daemon-reload ;; enable) for_all_daemons enable_one_daemon diff --git a/rbldnsd-0.998b-version.patch b/rbldnsd-0.998b-version.patch deleted file mode 100644 index a193fd9..0000000 --- a/rbldnsd-0.998b-version.patch +++ /dev/null @@ -1,16 +0,0 @@ -This addition of the release date for version 0.998b fixes the -version number that rbldnsd reports in its logging output. The -version is extracted from the NEWS file by the configure script -but the pattern matching requires the date to be present. - ---- NEWS -+++ NEWS -@@ -1,7 +1,7 @@ - This file describes user-visible changes in rbldnsd. - Newer news is at the top. - --0.998b -+0.998b (21 Dec 2016) - - Fix for memory errors on very large datasets. - Patch by Andrew Clayton - diff --git a/rbldnsd-configure-c99.patch b/rbldnsd-configure-c99.patch deleted file mode 100644 index 3eb7970..0000000 --- a/rbldnsd-configure-c99.patch +++ /dev/null @@ -1,20 +0,0 @@ -Avoid implicit declarations of gethostbyname and connect in the -non-autoconf configure script. This prevents altering the test result -with compilers which do not support implicit function declarations. - -A more elaborate pull request has been submitted upstream: - - - -diff --git a/configure b/configure -index b0cb655797639dac..978f480e391a46a8 100755 ---- a/configure -+++ b/configure -@@ -173,6 +173,7 @@ else - fi - - if ac_library_find_v 'connect()' "" "-lsocket -lnsl" </dev/null`" in + *$prog*) pid=$p;; + esac + fi + fi + # Start/stop this daemon + $1 + thisret=$? + if [ "$1" = "check_one_daemon" -o "$1" = "reload_one_daemon" ]; then + if [ $thisret -ne 0 ]; then + ret=$thisret + fi + else + if [ $thisret -ne 0 ]; then + ret=1 + fi + fi + done < <(echo "$RBLDNSD") + set_status $ret +} + +start_one_daemon() { + RETVAL=0 + if [ ! "$pid" ]; then + echo -n $"Starting $prog: " + [ x"$name" != x"$prog" ] && echo -n "$name " + daemon $DAEMON -p $pidfile $args + RETVAL=$? + echo + fi + return $RETVAL +} + +stop_one_daemon() { + RETVAL=0 + if [ "$pid" ]; then + echo -n $"Stopping $prog: " + [ x"$name" != x"$prog" ] && echo -n "$name " + kill $pid + usleep 500000 + checkpid $pid + if [ $? = 0 ]; then + echo_failure + RETVAL=1 + else + echo_success + RETVAL=0 + fi + echo + rm -f $pidfile + fi + return $RETVAL +} + +reload_one_daemon() { + if [ "$pid" ]; then + echo -n $"Reloading $prog: " + [ x"$name" != x"$prog" ] && echo -n "$name " + kill -HUP $pid + checkpid $pid && echo_success || echo_failure + RETVAL=$? + echo + else + # Not running + return 7 + fi +} + +check_one_daemon() { + echo -n "$prog " + [ x"$name" != x"$prog" ] && echo -n "[$name] " + if [ "$pid" ]; then + echo $"($pid) is running..." + return 0 + fi + if [ -f "$pidfile" ]; then + echo $"dead but pid file exists" + return 1 + fi + if [ -e /var/lock/subsys/$prog ]; then + echo $"dead but subsys locked" + return 2 + fi + echo $"is stopped" + return 3 +} + +restart_one_daemon() { + stop_one_daemon + pid= + start_one_daemon +} + +condrestart_one_daemon() { + if [ -e /var/lock/subsys/$prog ]; then + restart_one_daemon + else + return 0 + fi +} + +# See how we were called. +case "$1" in + start) + for_all_daemons start_one_daemon + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog + ;; + restart) + for_all_daemons restart_one_daemon + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog + ;; + force-reload|reload) + for_all_daemons reload_one_daemon + RETVAL=$? + ;; + stop) + for_all_daemons stop_one_daemon + RETVAL=$? + rm -f /var/lock/subsys/$prog + ;; + status) + for_all_daemons check_one_daemon + RETVAL=$? + ;; + condrestart|try-restart) + for_all_daemons condrestart_one_daemon + RETVAL=$? + ;; + *) + echo $"Usage: $0 {start|stop|restart|try-restart|reload|force-reload|status}" >&2 + RETVAL=1 + ;; +esac + +exit $RETVAL + +# vi: shiftwidth=4 tabstop=4 syntax=sh diff --git a/rbldnsd.rpmlintrc b/rbldnsd.rpmlintrc index 42b7753..edbeda2 100644 --- a/rbldnsd.rpmlintrc +++ b/rbldnsd.rpmlintrc @@ -1,3 +1,8 @@ +from Config import * + +# Technical terms +addFilter("spelling-error %description -l en_US (blocklists|nameserver) -> ") + # Configure script is not from autotools addFilter("configure-without-libdir-spec") @@ -7,8 +12,3 @@ addFilter("no-manual-page-for-binary rbldnsctl") # Not a strange permission for a script addFilter("strange-permission rbldnsctl 775") -# DNS server -addFilter("spelling-error \('nameserver',") - -# List of unwelcome IP addresses, made available over DNS using rbldnsd -addFilter("spelling-error \('blocklists',") diff --git a/rbldnsd.spec b/rbldnsd.spec index 14e90fd..fdce434 100644 --- a/rbldnsd.spec +++ b/rbldnsd.spec @@ -1,15 +1,24 @@ -# systemd-rpm-macros split out from systemd at Fedora 30 -%if (0%{?fedora} && 0%{?fedora} <= 29) || (0%{?rhel} && 0%{?rhel} <= 8) -%global systemd_rpm_macros systemd +# This package uses systemd init from Fedora 17, but can use it for +# Fedora 15/16 if built using --with systemd +%if !((0%{?rhel} && 0%{?rhel} <= 6) || (0%{?fedora} && 0%{?fedora} <= 16)) +%global _with_systemd --with-systemd +%endif +%global use_systemd %{!?_with_systemd:0}%{?_with_systemd:1} + +# systemd-units merged into systemd at Fedora 17 +%if (0%{?fedora} && 0%{?fedora} <= 16) +%global systemd_units systemd-units %else -%global systemd_rpm_macros systemd-rpm-macros +%global systemd_units systemd %endif -# Use sysusers from Fedora 43 onwards -%if (0%{?rhel} && 0%{?rhel} <= 10) || (0%{?fedora} && 0%{?fedora} <= 42) -%global use_sysusers 0 +# Support systemd presets and drop support for SysV migration from Fedora 18, RHEL 7 +%if (0%{?rhel} && 0%{?rhel} <= 6) || (0%{?fedora} && 0%{?fedora} <= 17) +%global preset_support 0 +%global sysv_to_systemd %{use_systemd} %else -%global use_sysusers 1 +%global preset_support 1 +%global sysv_to_systemd 0 %endif # Build hardened (PIE) where possible @@ -18,28 +27,33 @@ Summary: Small, fast daemon to serve DNSBLs Name: rbldnsd Version: 0.998b -Release: 19%{?dist} -License: GPL-2.0-or-later +Release: 1%{?dist} +License: GPLv2+ URL: https://rbldnsd.io/ Source0: https://rbldnsd.io/dwl/rbldnsd-%{version}.tgz +Source1: rbldnsd.init Source2: rbldnsd.conf Source3: rbldnsctl Source4: README.systemd -Patch0: rbldnsd-configure-c99.patch -Patch1: rbldnsd-0.998b-version.patch -Patch2: https://github.com/spamhaus/rbldnsd/commit/85932ec5.patch BuildRequires: coreutils BuildRequires: gawk BuildRequires: gcc BuildRequires: make BuildRequires: sed -BuildRequires: %{systemd_rpm_macros} BuildRequires: zlib-devel -%if !%{use_sysusers} Requires(pre): shadow-utils +%if %{sysv_to_systemd} +Requires(pre): chkconfig, systemd-sysv +%endif +%if %{use_systemd} +BuildRequires: %{systemd_units} +Requires(post): %{systemd_units} +Requires(preun): %{systemd_units} +Requires(postun): %{systemd_units} +%else +Requires(post): chkconfig +Requires(preun): chkconfig %endif -Requires: gawk -%{?systemd_requires} %description Rbldnsd is a small, authoritative-only DNS nameserver designed to serve @@ -49,26 +63,9 @@ blocklists. %prep %setup -q -# Port non-autoconf configure script to C99 -%patch -P 0 -p1 - -# Fix version number reported by rbldnsd -%patch -P 1 - -# Fix base template replacement issue -# https://github.com/spamhaus/rbldnsd/issues/18 -# https://github.com/spamhaus/rbldnsd/issues/19 -# https://github.com/spamhaus/rbldnsd/pull/22 -%patch -P 2 -p1 - sed -i -e 's@/var/lib/rbldns\([/ ]\)@%{_localstatedir}/lib/rbldnsd\1@g' \ -e 's@\(-r/[a-z/]*\) -b@\1 -q -b@g' contrib/debian/rbldnsd.default -cp -p %{SOURCE2} %{SOURCE3} %{SOURCE4} ./ - -# Create a sysusers.d config file -cat >rbldnsd.sysusers.conf </dev/null || groupadd -r rbldns getent passwd rbldns >/dev/null || \ useradd -r -g rbldns -d %{_localstatedir}/lib/rbldnsd \ -s /sbin/nologin -c "rbldns daemon" rbldns -exit 0 +%if %{sysv_to_systemd} +# SysV-to-systemd migration +if [ $1 -gt 1 -a ! -e /etc/systemd/rbldnsd.conf -a -e %{_initrddir}/rbldnsd ]; then + systemd-sysv-convert --save rbldnsd &>/dev/null || : + chkconfig --del rbldnsd &>/dev/null || : +fi %endif +exit 0 %post +%if %{use_systemd} systemctl daemon-reload &>/dev/null || : +%else +if [ $1 -eq 1 ]; then + # Initial installation + chkconfig --add rbldnsd || : +fi +%endif %preun if [ $1 -eq 0 ]; then # Package removal, not upgrade +%if %{use_systemd} %{_sbindir}/rbldnsctl stop &>/dev/null || : %{_sbindir}/rbldnsctl disable &>/dev/null || : +%else + %{_initrddir}/rbldnsd stop &>/dev/null || : + chkconfig --del rbldnsd || : +%endif fi %postun +%if %{use_systemd} systemctl daemon-reload &>/dev/null || : +%endif if [ $1 -ge 1 ]; then # Package upgrade, not uninstall +%if %{use_systemd} %{_sbindir}/rbldnsctl try-restart &>/dev/null || : +%else + %{_initrddir}/rbldnsd condrestart &>/dev/null || : +%endif fi %files +%if 0%{?_licensedir:1} %license LICENSE.txt +%else +%doc LICENSE.txt +%endif %doc CHANGES-0.81 NEWS README README.user TODO contrib/debian/changelog %{_sbindir}/rbldnsd %{_mandir}/man8/rbldnsd.8* %dir %{_localstatedir}/lib/rbldnsd/ %config(noreplace) %{_sysconfdir}/sysconfig/rbldnsd +%if %{use_systemd} %doc README.systemd %config(noreplace) %{_sysconfdir}/systemd/rbldnsd.conf %{_sbindir}/rbldnsctl -%if %{use_sysusers} -%{_sysusersdir}/rbldnsd.conf +%else +%{_initrddir}/rbldnsd %endif %changelog -* Fri Sep 26 2025 Paul Howarth - 0.998b-19 -- Fix base template replacement issue (GH#18, GH#19, GH#22, rhbz#2398024) - -* Fri Jul 25 2025 Fedora Release Engineering - 0.998b-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Wed Feb 12 2025 Paul Howarth - 0.998b-17 -- Add sysusers.d config file to allow rpm to create users/groups automatically - from Fedora 43 onwards - -* Sat Jan 18 2025 Fedora Release Engineering - 0.998b-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Fri Jul 19 2024 Fedora Release Engineering - 0.998b-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jan 26 2024 Fedora Release Engineering - 0.998b-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 22 2024 Fedora Release Engineering - 0.998b-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jul 21 2023 Fedora Release Engineering - 0.998b-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Fri Jun 23 2023 Paul Howarth - 0.998b-11 -- Avoid use of systemd ".include" directive (rhbz#2216790) -- Avoid use of deprecated patch syntax -- Fix version number reported by rbldnsd - -* Mon Jan 30 2023 Paul Howarth - 0.998b-10 -- Use SPDX-format license tag - -* Mon Jan 30 2023 Florian Weimer - 0.998b-9 -- Port non-autoconf configure script to C99 - -* Fri Jan 20 2023 Fedora Release Engineering - 0.998b-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 0.998b-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Fri Jan 21 2022 Fedora Release Engineering - 0.998b-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 0.998b-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Wed Jan 27 2021 Paul Howarth - 0.998b-4 -- Drop EL-6 support - - Always assume systemd init - - Drop support for sysv-to-systemd migration - - Use %%license unconditionally - - Use %%{?systemd_requires} - -* Wed Jan 27 2021 Fedora Release Engineering - 0.998b-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 0.998b-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - * Tue May 5 2020 Paul Howarth - 0.998b-1 - Update to 0.998b - Minor fixes in copyright and documentation