diff --git a/debian/changelog b/debian/changelog index 8996f88..2ab9378 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,90 @@ -dnsmasq (2.90-1) unstable; urgency=low +dnsmasq (2.89-1.1) UNRELEASED; urgency=medium - * New upstream. (closes: #1033165) + * Non-maintainer upload. + * Introduce autokpgtests per d/tests/* (Closes: #1034135). + * Switch to dpkg-source 3.0 (quilt) format (Closes: #1007041). + * doc.html: Add patch to eliminate privacy breaches leaving the Donations + paragraph as untouched as possible. + * Prepend dnsmasq. to default, init, preinst, postinst, prerm, postrm. + * Rename d/systemd.service to d/dnsmasq.service. + * Rename d/systemd@.service to d/dnsmasq@.service. + * Refactor d/rules to use the DH sequencer and fix major lintian issues + (Closes: #844989, #1040923). + Modified files: + - d/rules + Complete rewrite making use of debhelper and its tools, fixes lintian + warning debian-rules-sets-dpkg-architecture-variable. + - d/control + Build-Depends, Pre-Depends, Depends added or changed as needed, lintian + error depends-on-obsolete-package fixed. + - d/dnsmasq.default + ENABLED removed and comment changed to fix lintian error + init.d-script-should-always-start-service. + - d/dnsmasq.init + Remove handling of obsolete ENABLED flag. + Extract code used with System-V-style init and systemd into + d/init-system-common, extract code used with systemd only + into d/systemd-helper. This fixes lintian warning + systemd-service-file-wraps-init-script. + Drop workaround for hypothetically non-existent file + /lib/lsb/init-functions, it has been around for more than a decade. + - d/dnsmasq.service, d/dnsmasq@.service + Adapt these files to make use of init-system-common and systemd-helper. + - d/dnsmasq.{post,pre}{inst,rm} + Rely mostly on the script snippets created by the DH tools to get + things done, implicitly fixes the lintian warnings + maintainer-script-should-not-use-dpkg-maintscript-helper and + command-with-path-in-maintainer-script. + - d/resolvconf* + Change file mode bits to 0755, the installed files need it + New files: + - d/dnsmasq.{install,links,maintscript} + - d/dnsmasq-base.{dirs,docs,install} + - d/dnsmasq-base-lua.{dirs,docs,install,links} + - d/dnsmasq-utils.{install,manpages} + The DH tools use these to install what was scripted explicitly + in the previous version of the d/rules file, + lintian warning dbus-policy-in-etc fixed + - d/init-system-common + - d/systemd-helper + These files contain slightly modified code formerly part of in + d/dnsmasq.init. + Deleted files: + - d/*conffiles + - d/lintian-override + - d/installed-marker + These are not in use anymore. + * Deal with a removed conffile and changed links. + Modified files: + - d/dnsmasq-base.{postinst,postrm} + New files: + - d/dnsmasq-base.maintscript + - d/dnsmasq-base-lua.maintscript + * Add watch file and upstream's signing key. + New files: + - d/watch + - d/u/signing-key.asc + * Remove dependency on package adduser. + Modified files: + - d/control + - d/dnsmasq.post{inst,rm} + * Refactor d/copyright to comply with DEP 5 (Closes: #966505). + * Remove trailing whitespace from various files under debian/. + * Bump Standards-Version to 4.6.2. + * Specify Rules-Requires-Root. + * Update http:// to https:// with Homepage, Vcs-Git and Vcs-Browser. + * Introduce d/u/metadata. + * Fix lintian issue duplicate-short-description. + * Fix lintian issue capitalization-error-in-description. + * Bump Lua version to 5.4 (Closes: #1050750). + Modified files: + - d/control + - d/t/functions.d/log.patterns + - d/p/series + New files: + - d/p/bump-lua-version.patch - -- Simon Kelley Mon, 6 Mar 2023 23:22:06 +0000 + -- Sven Geuer Fri, 12 Jan 2024 20:31:44 +0100 dnsmasq (2.89-1) unstable; urgency=low @@ -101,7 +183,7 @@ dnsmasq (2.81-3) unstable; urgency=low dnsmasq (2.81-2) unstable; urgency=low * Fix FTBFS on kFreeBSD. (closes: #958100) - + -- Simon Kelley Sat, 18 Apr 2020 18:34:15 +0000 dnsmasq (2.81-1) unstable; urgency=low @@ -119,7 +201,7 @@ dnsmasq (2.81-1) unstable; urgency=low * Fix build faliure with newer Nettle libraries. (closes: #940985) * Support runscript init-system (closes: #929884) * Security fix for CVE-2019-14834 (closes: #948373) - + -- Simon Kelley Wed, 8 Apr 2020 17:33:15 +0000 dnsmasq (2.80-1) unstable; urgency=low @@ -598,7 +680,7 @@ dnsmasq (2.51-1) unstable; urgency=low * New upstream. * Bump standards-version to 3.8.2 (no changes needed). - * Ignore files named *.dpkg-old, *.dpkg-new and *.dpkg-dist + * Ignore files named *.dpkg-old, *.dpkg-new and *.dpkg-dist in /etc/dnsmasq.d * Provide a facility in /etc/default/dnsmasq to disable dnsmasq's interaction with the resolvconf package. This is needed because @@ -607,31 +689,31 @@ dnsmasq (2.51-1) unstable; urgency=low * Check for duplicate names/addresses in /etc/ethers. (closes: #523787) * Set the system locale in the environment before invoking dnsmasq, so that translated messages work, and IDN uses the correct charset. - + -- Simon Kelley Fri, 4 Oct 2009 14:01:14 +0000 dnsmasq (2.50-1) unstable; urgency=high - + * New upstream, fixes remote vulns in TFTP server. - Bugtraq id: 36120,36121 CVE: 2009-2957,2009-2958 - + Bugtraq id: 36120,36121 CVE: 2009-2957,2009-2958 + -- Simon Kelley Fri, 21 Aug 2009 10:25:13 +0000 - + dnsmasq (2.49-1) unstable; urgency=low - + * New upstream. * Log TFTP "file not found" errors. (closes: #532201) - + -- Simon Kelley Mon, 8 Jun 2009 22:03:23 +0000 - + dnsmasq (2.48-2) unstable; urgency=low - + * Change dnsmasq -> dnsmasq-base dependency to >= to allow binNMU, fixes Lintian error. * Bump standards-version to 3.8.1 - + -- Simon Kelley Fri, 5 Jun 2009 10:58:33 +0000 dnsmasq (2.48-1) unstable; urgency=low @@ -643,14 +725,14 @@ dnsmasq (2.48-1) unstable; urgency=low installing the latest dnsmasq will install the latest dnsmasq-base too. (closes: #523955) * Add nodhcp DEB_BUILD_OPTIONS option. - + -- Simon Kelley Fri, 29 May 2009 10:20:23 +0000 dnsmasq (2.47-3) unstable; urgency=low * Fix bashism in init script. (closes: #514397) * Tweak logging in init script. - + -- Simon Kelley Sat, 7 Feb 2009 19:25:23 +0000 dnsmasq (2.47-2) unstable; urgency=low @@ -658,57 +740,57 @@ dnsmasq (2.47-2) unstable; urgency=low * Check that /etc/init.d/dnsmasq is executable in postinst in case the daemon has been disabled that way. (closes: #514314) * Ensure that /var/run/dnsmasq exists and has the right permissions - before running dnsmasq. On some systems /var/run is cleared over + before running dnsmasq. On some systems /var/run is cleared over reboot. (closes: #514317) - + -- Simon Kelley Fri, 6 Feb 2009 09:38:21 +0000 - + dnsmasq (2.47-1) unstable; urgency=low * New upstream. - * Handle the "ENABLED" flag in the init script a bit more + * Handle the "ENABLED" flag in the init script a bit more intelligently. The "stop" and "status" functions continue - to work even when disabled, but a failed "stop" becomes + to work even when disabled, but a failed "stop" becomes silent and returns zero exit code. - * Don't explicitly kill dnsmasq at system shutdown, rely on the + * Don't explicitly kill dnsmasq at system shutdown, rely on the sendsigs script instead which is quicker. (closes: #506734) * Store the PID-file in /var/run/dnsmasq. This directory is owned by user "dnsmasq", so that dnsmasq can delete the PID-file on - shutdown. This ensures that the the PID-file goes even when dnsmasq - is stopped by sendsigs. (closes: #508560) + shutdown. This ensures that the the PID-file goes even when dnsmasq + is stopped by sendsigs. (closes: #508560) * Bump standards-version to 3.8.0 (no changes required.) * /usr/sbin/adduser -> adduser in postinst. Lintian fix. - * Handle IPv6 addresses in "tentative" state better. (closes: #507646) + * Handle IPv6 addresses in "tentative" state better. (closes: #507646) * Add DBus introspection support. (closes: #508774) * Fix Dbus configuration. (closes: #510649) - + -- Simon Kelley Mon, 2 Feb 2009 13:39:11 +0000 dnsmasq (2.46-1) unstable; urgency=low * New upstream. (closes: #499162) (closes: #499007) * Remove from init script start-stop-daemon call to kill - child processes. This is not needed since dnsmasq is + child processes. This is not needed since dnsmasq is carefully written to kill child processes, and it interacts badly with "private" instances of dnsmasq. (closes: #505523) * Provide /etc/dnsmasq.d and alter the installed /etc/default/dnsmasq so that /etc/dnsmasq.d is read. This provides a drop-directory where - libvirt can add options to make the system dnsmasq automatically + libvirt can add options to make the system dnsmasq automatically play nice with libvirt's private instances. (closes: #505522) - + -- Simon Kelley Thu, 13 Nov 2008 20:15:31 +0000 dnsmasq (2.45-1) unstable; urgency=high * New upstream - fixes regression when min-port not set. - + -- Simon Kelley Sun, 20 Jul 2008 19:27:11 +0000 - + dnsmasq (2.44-1) unstable; urgency=high * New upstream - bugfix release for 2.43. * Fix crash in netlink code. (closes: #491289) - + -- Simon Kelley Fri, 11 Jul 2008 19:39:10 +0000 dnsmasq (2.43-1) unstable; urgency=high @@ -716,25 +798,25 @@ dnsmasq (2.43-1) unstable; urgency=high * New upstream. * Implement source-port randomisation and better random number generator as defence against CVE-2008-1447 (closes: #490123) - + -- Simon Kelley Tue, 17 Jun 2008 11:55:38 +0000 dnsmasq (2.42-4) unstable; urgency=low * Fix botch in postinst introduced in 2.42-2. (closes: #486616) - + -- Simon Kelley Tue, 17 Jun 2008 11:39:10 +0000 dnsmasq (2.42-3) unstable; urgency=low * Fix thinko in init script, breaks status command. (closes: #486455) - + -- Simon Kelley Mon, 16 Jun 2008 11:26:20 +0000 dnsmasq (2.42-2) unstable; urgency=low * Error check in postinst file (closes: #485645) - + -- Simon Kelley Tue, 10 Jun 2008 20:25:10 +0000 dnsmasq (2.42-1) unstable; urgency=low @@ -744,13 +826,13 @@ dnsmasq (2.42-1) unstable; urgency=low * Use LSB log_*_msg rather than echo in init script. (closes: #473117) * Fix agent-id echo problem. (closes: #473015) * Fixup changing /usr/share/doc/dnsmasq to symlink. (closes: #468763) - + -- Simon Kelley Wed, 27 Feb 2008 21:15:28 +0000 dnsmasq (2.41-2) unstable; urgency=low * Fix rules to build binary-arch and binary-indep correctly. - + -- Simon Kelley Wed, 27 Feb 2008 19:57:10 +0000 dnsmasq (2.41-1) unstable; urgency=low @@ -760,11 +842,11 @@ dnsmasq (2.41-1) unstable; urgency=low * Fix DHCP problem interoperating with Sony Ericsson K610i (closes: #451871) * Split binary packages into dnsmasq and dnsmasq-base (closes: #463407) * Add warnings about bad effects of --filterwin2k to default config - file. (closes: #464357) + file. (closes: #464357) * Don't declare Provides: $named in LSB header. (closes: #464512) * Remove conflict with pdnsd. (closes: #464691) * Add ability to disable dnsmasq in /etc/default/dnsmasq. (closes: #465062) - + -- Simon Kelley Thu, 31 Jan 2008 20:25:28 +0000 dnsmasq (2.40-1) unstable; urgency=low @@ -773,11 +855,11 @@ dnsmasq (2.40-1) unstable; urgency=low * Fix manpage typo. (closes: #429412) * Fix dnsmasq.conf typos (closes: #429929) * Handle DEB_BUILD_OPTIONS nostrip and noopt (closes: #436784) - * Add DEB_BUILD_OPTIONS for nodocs, notftp, noipv6, + * Add DEB_BUILD_OPTIONS for nodocs, notftp, noipv6, nodbus, noi18n and nortc. * Create DEBIAN/md5sums file in package. * Add status function to init script. (closes: #439316) - + -- Simon Kelley Thu, 9 Aug 2007 10:24:18 +0000 dnsmasq (2.39-1) unstable; urgency=low @@ -785,19 +867,19 @@ dnsmasq (2.39-1) unstable; urgency=low * New upstream. * Provide example config file in /usr/share/doc/dnsmasq/examples as well as /etc/dnsmasq.conf, so it's available for reference. - + -- Simon Kelley Thu, 13 Feb 2007 10:02:38 +0000 dnsmasq (2.38-1) unstable; urgency=low * New upstream (closes: #410185) - + -- Simon Kelley Tue, 6 Feb 2007 21:14:58 +0000 dnsmasq (2.37-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Thu, 25 Jan 2007 10:44:18 +0000 dnsmasq (2.36-1) unstable; urgency=low @@ -805,14 +887,14 @@ dnsmasq (2.36-1) unstable; urgency=low * New upstream. (closes: #400037) * Don't fail to purge if deluser command is not available. * Add one second sleep to resolvconf script. (closes: #398961) - * Fix dnsmasq.conf typo (closes: #405314) - + * Fix dnsmasq.conf typo (closes: #405314) + -- Simon Kelley Tue, 31 Oct 2006 10:24:58 +0000 dnsmasq (2.35-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Wed, 18 Oct 2006 09:23:28 +0000 dnsmasq (2.34-1) unstable; urgency=low @@ -820,9 +902,9 @@ dnsmasq (2.34-1) unstable; urgency=low * New upstream. * Includes --clear-on-reload flag. (loses: #391654) * Don't any longer set the "domain-needed" and "bogus-priv" flags in the - * the default-installed dnsmasq.conf. These can generate puzzling + * the default-installed dnsmasq.conf. These can generate puzzling * behaviour for people who get them without asking. - + -- Simon Kelley Wed, 9 Aug 2006 09:23:28 +0000 dnsmasq (2.33-1) unstable; urgency=low @@ -831,71 +913,71 @@ dnsmasq (2.33-1) unstable; urgency=low * Remove bashism from Makefile (closes: #375409) * Added Provides: $named to LSB header in init script. * Add --dns-forward-max flag. (closes: #377506) - + -- Simon Kelley Sun, 25 June 2006 18:03:13 +0000 dnsmasq (2.32-2) unstable; urgency=low * Added LSB tags to init.d startup script. (closes: #374650) - + -- Simon Kelley Sun, 25 June 2006 17:55:11 +0000 dnsmasq (2.32-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Mon, 8 May 2006 09:23:28 +0000 dnsmasq (2.31-1) unstable; urgency=high * New upstream. (closes: #364800) * Compile in Dbus support now that suitable Dbus packages exist. - * Don't stop an old dnsmasq process, until a new one is ready, + * Don't stop an old dnsmasq process, until a new one is ready, when upgrading. (closes: #366224) * Move to standards-version 3.7.2 (no changes needed). - + -- Simon Kelley Sat, 6 May 2006 11:58:22 +0000 dnsmasq (2.30-1) unstable; urgency=low * New upstream, fixes crash with DHCP broadcast replies. - + -- Simon Kelley Sun, 23 Apr 2006 14:58:22 +0000 dnsmasq (2.29-1) unstable; urgency=low * New upstream. (closes: #363244) (closes: #363340) - * Made config options clearer in src/config.h and + * Made config options clearer in src/config.h and clarify ISC integration status in Debian readme. (closes: #364250) - + -- Simon Kelley Tue, 18 Apr 2006 10:26:12 +0000 dnsmasq (2.28-1) unstable; urgency=low * New upstream. (closes: #359956) (closes: #362499) * Added firestarter info to FAQ. (closes: #359139) - + -- Simon Kelley Tue, 14 Mar 2006 19:20:12 +0000 dnsmasq (2.27-1) unstable; urgency=low * New upstream. * Workaround buggy Microsoft DHCP clients. (closes: #355008) - + -- Simon Kelley Wed, 1 Feb 2006 17:05:12 +0000 dnsmasq (2.26-1) unstable; urgency=high * New upstream. (Fixes possible crash in 2.25, hence urgency). - + -- Simon Kelley Sun, 22 Jan 2006 11:05:22 +0000 dnsmasq (2.25-1) unstable; urgency=low * Remove bashisms in postinst and prerm scripts. - * Remove misconceived dependency on locales. + * Remove misconceived dependency on locales. * Depend on adduser. - + -- Simon Kelley Thu, 01 Dec 2005 21:02:12 +0000 dnsmasq (2.24-1) unstable; urgency=low @@ -905,7 +987,7 @@ dnsmasq (2.24-1) unstable; urgency=low * Add build support for I18N and gettext. * Fixed manpage typos. (closes: #336413) * Create a dnsmasq-unique userid for the daemon to run as. (closes: #338353) - + -- Simon Kelley Sat, 03 Sep 2005 20:02:32 +0000 dnsmasq (2.23-1) unstable; urgency=low @@ -914,32 +996,32 @@ dnsmasq (2.23-1) unstable; urgency=low * Fix manpage typos. (closes: #304984) * Add support for DNSMASQ_EXCEPT in /etc/defaults/dnsmasq. putting "lo" in this also disables resolvconf support. - * No longer delete pre-existing /etc/init.d symlinks. The - change in default runlevels which necessitated this - is now ancient history and anyway the startup script now + * No longer delete pre-existing /etc/init.d symlinks. The + change in default runlevels which necessitated this + is now ancient history and anyway the startup script now behaves when called twice. (closes: #312111) * Tightened config-file parser. (closes: #317030) - + -- Simon Kelley Tue, 02 Aug 2005 13:17:22 +0000 dnsmasq (2.22-2) unstable; urgency=low - * Make the resolv.conf polling code resistant to + * Make the resolv.conf polling code resistant to backwards-moving system clocks. (closes: #306117) (closes: #300694) - + -- Simon Kelley Wed, 04 May 2005 13:25:23 +0000 dnsmasq (2.22-1) unstable; urgency=low * New upstream. * Fixed broken-ness when read /etc/ethers. (closes: #301999) - + -- Simon Kelley Thur, 24 Mar 2005 17:10:13 +0000 dnsmasq (2.21-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Sat, 29 Jan 2005 16:05:13 +0000 dnsmasq (2.20-1) unstable; urgency=low @@ -947,7 +1029,7 @@ dnsmasq (2.20-1) unstable; urgency=low * New upstream. * Fix shadowed CNAME-target problem. (closes: #286654) * Add --localise-queries option. (closes: #291367) - + -- Simon Kelley Fri, 17 Dec 2004 17:35:23 +0000 dnsmasq (2.19-1) unstable; urgency=high @@ -955,37 +1037,37 @@ dnsmasq (2.19-1) unstable; urgency=high * New upstream. * Fix another IPv6 interface enumeration problem. (closes: #285182) * Uploading at high priority since 285182 is really RC. - + -- Simon Kelley Sat, 11 Dec 2004 20:39:33 +0000 dnsmasq (2.18-2) unstable; urgency=low * Revert startup to not start from rcS. Starting in rcS * causes problems if interfaces are not available at that - * point. Users who need this facility should manually + * point. Users who need this facility should manually * make rcS.d symlinks. (closes: #283239) -- Simon Kelley Sat, 27 Nov 2004 16:33:12 +0000 - + dnsmasq (2.18-1) unstable; urgency=low * New upstream. * Reset cache statistics when clearing the cache. (closes: #281817) * Fix problems with bind-interfaces and IPv6. (closes: #282192) * Fix problems upgrading when restarting dnsmasq fails. - + -- Simon Kelley Tue, 16 Nov 2004 17:33:32 +0000 dnsmasq (2.17-1) unstable; urgency=high - * New upstream - fixes crash, hence high urgency. - * Clarified log message when a record in /etc/hosts + * New upstream - fixes crash, hence high urgency. + * Clarified log message when a record in /etc/hosts and a DHCP name clash. (closes: #275420) * Start dnsmasq just before portmap and nfs mounts from rcS.d DNS is required at this stage to use the net. (closes: #280434) * Make "bind-interfaces" apply to IPv6 interfaces. (closes: #278492) * Allow a list if interfaces as arg to the --interface and - --except-interface options. (closes: #279063) + --except-interface options. (closes: #279063) -- Simon Kelley Tue, 26 Oct 2004 20:39:33 +0000 @@ -993,7 +1075,7 @@ dnsmasq (2.16-2) unstable; urgency=high * Rename variable in cache.c which clashes with C headers under gcc-3.4 (closes: #277893) - + -- Simon Kelley Mon, 25 Oct 2004 16:03:24 +0000 dnsmasq (2.16-1) unstable; urgency=high @@ -1004,26 +1086,26 @@ dnsmasq (2.16-1) unstable; urgency=high packets with bad checksum. * Fix bad interaction with polipo. (closes: #275754) * Cache CNAMEs better. (closes: #276289) - + -- Simon Kelley Mon, 04 Oct 2004 15:25:44 +0000 dnsmasq (2.15-1) unstable; urgency=low * New upstream. * Fix NXDOMAIN/NODATA confusion for locally known names. (closes: #271564) - + -- Simon Kelley Wed, 15 Sep 2004 15:01:44 +0000 dnsmasq (2.14-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Sat, 28 Aug 2004 20:39:33 +0000 dnsmasq (2.13-1) unstable; urgency=high * New upstream - fixes crash. (closes #265313) - + -- Simon Kelley Thur, 12 Aug 2004 12:45:23 +0000 dnsmasq (2.12-1) unstable; urgency=low @@ -1032,13 +1114,13 @@ dnsmasq (2.12-1) unstable; urgency=low * Log types of incoming queries (closes: #230123). * Don't set "filterwin2k" by default in the included config file - it breaks SRV lookups and Kerberos. - + -- Simon Kelley Sun, 8 Aug 2004 19:58:13 +0000 dnsmasq (2.11-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Wed, 28 July 2004 21:59:33 +0000 dnsmasq (2.10-1) unstable; urgency=low @@ -1054,7 +1136,7 @@ dnsmasq (2.10-1) unstable; urgency=low dnsmasq (2.9-2) unstable; urgency=low * Fix typo in debian/control (closes: #255762) - + -- Simon Kelley Wed, 23 Jun 2004 20:40:13 +0000 dnsmasq (2.9-1) unstable; urgency=low @@ -1066,7 +1148,7 @@ dnsmasq (2.9-1) unstable; urgency=low * Updated README.debian (closes: #253429) * Changed startup message to mention DHCP as well as DNS. * New resolvconf update script (closes: #254765) - + -- Simon Kelley Wed, 26 May 2004 12:35:23 +0000 dnsmasq (2.8-1) unstable; urgency=low @@ -1076,10 +1158,10 @@ dnsmasq (2.8-1) unstable; urgency=low DHCP leases over a restart. (closes: #248829) -- Simon Kelley Thur, 13 May 2004 18:40:12 +0000 - + dnsmasq (2.7-2) unstable; urgency=low - * New version of resolvconf script from Thomas Hood with the + * New version of resolvconf script from Thomas Hood with the following changes: (closes: #247695) * Doesn't include nameservers listed in the lo.inet or lo.inet6 interface records created by "ifup lo" @@ -1087,7 +1169,7 @@ dnsmasq (2.7-2) unstable; urgency=low * Eliminates duplicate nameserver addresses * Updates /var/run/dnsmasq/resolv.conf atomically * Doesn't generate empty lines - + -- Simon Kelley Tue, 11 May 2004 22:35:12 +0000 dnsmasq (2.7-1) unstable; urgency=low @@ -1102,7 +1184,7 @@ dnsmasq (2.6-3) unstable; urgency=low to be equivalent to restart. This is needed to be policy compliant since SIGHUP doesn't cause dnsmasq to reload its configuration file, only the /etc/hosts, /etc/resolv.conf etc. (closes: #244208) - + -- Simon Kelley Sun, 18 Apr 2004 14:40:51 +0000 dnsmasq (2.6-2) unstable; urgency=low @@ -1119,46 +1201,46 @@ dnsmasq (2.6-2) unstable; urgency=low readme.Debian (closes: #241700) -- Simon Kelley Tue, 13 Apr 2004 18:37:55 +0000 - + dnsmasq (2.6-1) unstable; urgency=low * New upstream. * New version adds back ability to read ISC dhcpd lease files for backwards compatibility. (closes: #229684) (closes: #236421) * Fix parsing of # characters in options file. (closes: #241199) - + -- Simon Kelley Sun, 21 Mar 2004 19:59:25 +0000 - + dnsmasq (2.5-1) unstable; urgency=low - * New upstream, includes fix for IP-alias related + * New upstream, includes fix for IP-alias related problem. (closes: #238268) - + -- Simon Kelley Sun, 14 Mar 2004 08:32:43 +0000 dnsmasq (2.4-3) unstable; urgency=low * Fixed "bind-interfaces" option, even when an "interface" option is given also. - + -- Simon Kelley Fri, 12 Mar 2004 08:14:23 +0000 dnsmasq (2.4-2) unstable; urgency=low * Fixed "bind-interfaces" option (closes: #237543). - + -- Simon Kelley Fri, 12 Mar 2004 07:30:25 +0000 dnsmasq (2.4-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Thurs, 11 Mar 2004 07:59:55 +0000 dnsmasq (2.3-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Tues, 03 Feb 2004 20:33:10 +0000 dnsmasq (2.2-1) unstable; urgency=low @@ -1171,13 +1253,13 @@ dnsmasq (2.2-1) unstable; urgency=low dnsmasq (2.1-1) unstable; urgency=low * New upstream. - * Allow addresses in /etc/hosts to be used for + * Allow addresses in /etc/hosts to be used for DHCP leases (closes: #229681) * Fix lease time processing. (closes: #229682) (closes: #229687) * Fix example conf file. (closes: #229683) (closes: #229701) * Allow address 0.0.0.0 to mean "self" in dhcp-option. (closes: #229685) - * Cope with ENODEV return from bind of - IPv6 server socket (closes: #229607) + * Cope with ENODEV return from bind of + IPv6 server socket (closes: #229607) * Document the strict-order option in dnsmasq.conf (closes: #229272) * Fix local-only domain setting. (closes: #229846) * Updates Debian readme to mention resolvconf and point at the @@ -1187,14 +1269,14 @@ dnsmasq (2.1-1) unstable; urgency=low dnsmasq (2.0-1) unstable; urgency=low - * New upstream: This removes the ability to read the - the leases file of ISC DHCP and replaces it with a built-in - DHCP server. Apologies in advance for breaking backwards + * New upstream: This removes the ability to read the + the leases file of ISC DHCP and replaces it with a built-in + DHCP server. Apologies in advance for breaking backwards compatibility, but this replaces a bit of a hack (the ISC stuff) with a nicely engineered and much more appropriate solution. Wearing my upstream-maintainer hat, I want to lose the hack now, rather than have to support it into Sarge. - * New upstream closes some bugs since they become + * New upstream closes some bugs since they become irrelevant. (closes: #197295) * Ensure that /var/run and /var/lib/misc exist. * Remove sed dependency, which was a mistake. @@ -1203,21 +1285,21 @@ dnsmasq (2.0-1) unstable; urgency=low -- Simon Kelley Sun, 16 Jan 2004 19:35:49 +0000 dnsmasq (1.18-2) unstable; urgency=low - + * Fixed manpage typo (closes: #220961) * Added dependency for sed. (closes: #222401) - * Check for complete resolvconf installation before + * Check for complete resolvconf installation before calling it. (closes: #223442) * Added Links section to doc.html - + -- Simon Kelley Sat, 27 Dec 2003 20:21:15 +0000 - + dnsmasq (1.18-1) unstable; urgency=low * New upstream which does round-robin. (closes: #215460) * Removed conflicts with other dns servers since it is now - possible to control exactly where dnsmasq listens on multi-homed - hosts, making co-existence with another nameserver + possible to control exactly where dnsmasq listens on multi-homed + hosts, making co-existence with another nameserver a viable proposition. (closes #176163) * New upstream allows _ in hostnames and check for illegal names in /etc/hosts. (closes: #218842) @@ -1231,39 +1313,39 @@ dnsmasq (1.17-1) unstable; urgency=high -- Simon Kelley Wed, 8 Oct 2003 14:38:29 +0000 dnsmasq (1.16-1) unstable; urgency=low - + * New upstream. * Renamed Debian README to the standard README.Debian. (closes: #211577) * Updated the installed /etc/dnsmasq.conf to reflect new options. - + -- Simon Kelley Tues, 16 Sep 2003 23:18:59 +0000 dnsmasq (1.15-1) unstable; urgency=low - + * New upstream. - + -- Simon Kelley Tues, 16 Sep 2003 21:48:49 +0000 dnsmasq (1.14-1) unstable; urgency=low - + * New upstream. * Use invoke-rc.d in postinst and prerm scripts when available. * Stop dnsmasq later (at priority 85). (closes: #200625) * Updated /etc/resolvconf/update.d/dnsmasq. (closes: #202609) * Suggest resolvconf. (closes: #208093) - + -- Simon Kelley Tues, 2 Sep 2003 16:43:29 +0000 dnsmasq (1.13-4) unstable; urgency=high - - * Ignore failures in stopping existing dnsmasq + + * Ignore failures in stopping existing dnsmasq processes. (closes: #204127) (closes: #204129) * Added download source to copyright. (closes: #206647) - + -- Simon Kelley Tues, 2 Sep 2003 15:28:28 +0000 dnsmasq (1.13-3) unstable; urgency=low - + * Moved /etc/resolvconf/update.d/dnsmasq script into this package. * Don't call resolvconf from /etc/init.d/dnsmasq if dnsmasq fails to start. (Patch from Thomas Hood.) @@ -1271,7 +1353,7 @@ dnsmasq (1.13-3) unstable; urgency=low -- Simon Kelley Mon, 7 Jul 2003 20:55:29 +0000 dnsmasq (1.13-2) unstable; urgency=low - + * Added support for the resolvconf nameserver configuration package. -- Simon Kelley Sun, 22 Jun 2003 20:30:19 +0000 @@ -1292,19 +1374,19 @@ dnsmasq (1.12-1) unstable; urgency=low * Added examples of "local" and "address" options to dnsmasq.conf. * Remove /usr/doc symlink code. * Remove period from end of description field. - + -- Simon Kelley Sat, 8 Mar 2003 12:16:09 +0000 dnsmasq (1.11-2) unstable; urgency=low * Fixed thinko in example dnsmasq.conf. (closes: #180410) - + -- Simon Kelley Mon, 24 Feb 2003 20:06:19 +0000 dnsmasq (1.11-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Tues, 12 Jan 2003 22:25:17 -0100 dnsmasq (1.10-1) unstable; urgency=low @@ -1312,134 +1394,134 @@ dnsmasq (1.10-1) unstable; urgency=low * New upstream. * Force service to stop in postinst before restarting. I don't understand the circumstances under which it would still be running at - this point, but this is the correct fix anyway. (closes: #169718) - * Add /etc/dnsmasq.conf as a conffile and add a comment to - /etc/default/dnsmasq deprecating its use and recommending + this point, but this is the correct fix anyway. (closes: #169718) + * Add /etc/dnsmasq.conf as a conffile and add a comment to + /etc/default/dnsmasq deprecating its use and recommending /etc/dnsmasq.conf instead, since upstream now supports this. - + -- Simon Kelley Mon, 9 Oct 2002 19:05:34 -0100 dnsmasq (1.9-1) unstable; urgency=low * New upstream. - + -- Simon Kelley Mon, 23 Sept 2002 21:35:07 -0100 dnsmasq (1.8-1) unstable; urgency=low - + * New upstream. - + -- Simon Kelley Mon, 12 Aug 2002 21:56:17 -0100 dnsmasq (1.7-1) unstable; urgency=low - + * New upstream including better group-id manipulation. (closes: #152212) * Conflict with bind9 (closes: #151812) * Added more options to startup script. (closes: #148535) - + -- Simon Kelley Sun, 14 July 2002 20:23:14 -0100 dnsmasq (1.6-1) unstable; urgency=low - + * New upstream. * Fixed documentation typos. (closes: #144637) * Fixed failure to remove package if daemon not running. (closes: #147083) * Changed upload to tarball-and-diff. (closes: #144638) - + -- Simon Kelley Sun, 19 May 2002 22:30:17 -0100 dnsmasq (1.5-1) unstable; urgency=medium - + * New upstream (includes hotmail.com fix). * Fixed DHCP lease file bug. (closes: #143778) * Fixed failure of "reload" command in startup script (closes: #141021) * Allow more than one interface name in the DNSMASQ_INTERFACE variable. - + -- Simon Kelley Sun, 14 Apr 2002 16:39:13 -0100 - + dnsmasq (1.4-2) unstable; urgency=low - + * Fixed snafu in startup script (closes: #139760) - + -- Simon Kelley Sun, 24 Mar 2002 23:06:18 +0000 - + dnsmasq (1.4-1) unstable; urgency=low - + * New upstream - + -- Simon Kelley Thurs, 7 Mar 2002 21:02:05 +0000 - + dnsmasq (1.3-1) unstable; urgency=low - + * New upstream -- Simon Kelley Fri, 15 Feb 2002 20:45:01 +0000 - + dnsmasq (1.2-4) unstable; urgency=low - + * Updated standards-version. * More aggressive strip of binaries. * Added depends: netbase. * distribution->unstable for upload. * Updated readme.Debian since config in /etc/default/dnsmasq now. * Updated readme.Debian to reflect fact that this package is official now! - + -- Simon Kelley Fri, 15 Feb 2002 20:45:01 +0000 - + dnsmasq (1.2-3) stable; urgency=low - + * Added Suggests: and Conflicts: fields to control file. - + -- Simon Kelley Thurs, 14 Feb 2002 20:33:47 +0000 - + dnsmasq (1.2-2) stable; urgency=low - + * Many packaging fixes, to please lintian * Added extended description. * Fixed copyright file. * Compressed everything in /usr/share/doc/dnsmasq. * Added code to remove /usr/doc/dnsmasq to prerm script. * Moved configuration from /etc/init.d/dnsmasq to /etc/default/dnsmasq - + -- Simon Kelley Sat, 02 Feb 2002 18:54:37 +0000 - + dnsmasq (1.2-1) stable; urgency=low - + * New upstream * Added more options to startup script - + -- Simon Kelley Sat, 20 Dec 2001 21:15:07 +0000 dnsmasq (1.1-2) stable; urgency=low - + * New upstream * Strip binary * Moved manpage from section 1 to section 8 - + -- Simon Kelley Sat, 21 Oct 2001 17:32:04 -0100 dnsmasq (1.0-1) unstable; urgency=low - + * New upstream - + -- Simon Kelley Sat, 10 Oct 2001 15:52:06 -0100 - + dnsmasq (0.996-1) unstable; urgency=low - + * New upstream - + -- Simon Kelley Fri, 26 Oct 2001 10:32:06 -0100 dnsmasq (0.995-1) unstable; urgency=low - + * New upstream - + -- Simon Kelley Tue, 09 Oct 2001 16:39:07 -0100 dnsmasq (0.994-1) unstable; urgency=low - + * New upstream - + -- Simon Kelley Sat, 07 Oct 2001 15:45:04 -0100 dnsmasq (0.992-1) unstable; urgency=low @@ -1465,13 +1547,3 @@ dnsmasq (0.95-1) unstable; urgency=low * Initial Release. -- Simon Kelley Sat, 29 Aug 1998 20:27:27 -0400 - - - - - - - - - - diff --git a/debian/conffiles b/debian/conffiles deleted file mode 100644 index f7e9d66..0000000 --- a/debian/conffiles +++ /dev/null @@ -1,5 +0,0 @@ -/etc/init.d/dnsmasq -/etc/default/dnsmasq -/etc/dnsmasq.conf -/etc/resolvconf/update.d/dnsmasq -/etc/insserv.conf.d/dnsmasq diff --git a/debian/control b/debian/control index 563393a..27d5c8e 100644 --- a/debian/control +++ b/debian/control @@ -1,64 +1,66 @@ Source: dnsmasq Section: net Priority: optional -Build-depends: gettext, libnetfilter-conntrack-dev [linux-any], - libidn2-dev, libdbus-1-dev (>=0.61), libgmp-dev, +Build-Depends: dh-exec, gettext, libnetfilter-conntrack-dev [linux-any], + libidn2-dev, libdbus-1-dev (>=0.61), libgmp-dev, nettle-dev (>=2.4-3), libbsd-dev [kfreebsd-any], - liblua5.2-dev, dh-runit, debhelper-compat (= 10), + liblua5.4-dev, dh-runit, debhelper-compat (= 13), pkg-config, libnftables-dev Maintainer: Simon Kelley -Homepage: http://www.thekelleys.org.uk/dnsmasq/doc.html -Vcs-Git: http://thekelleys.org.uk/git/dnsmasq.git -Vcs-Browser: http://thekelleys.org.uk/gitweb/?p=dnsmasq.git -Standards-Version: 3.9.8 +Homepage: https://www.thekelleys.org.uk/dnsmasq/doc.html +Vcs-Git: https://thekelleys.org.uk/git/dnsmasq.git +Vcs-Browser: https://thekelleys.org.uk/gitweb/?p=dnsmasq.git +Standards-Version: 4.6.2 +Rules-Requires-Root: no Package: dnsmasq Architecture: all +Pre-Depends: ${misc:Pre-Depends} Depends: netbase, dnsmasq-base, - init-system-helpers (>= 1.18~), lsb-base (>= 3.0-6), ${misc:Depends} + ${misc:Depends} Suggests: resolvconf Breaks: ${runit:Breaks} Conflicts: resolvconf (<<1.15), ${runit:Conflicts} -Description: Small caching DNS proxy and DHCP/TFTP server +Description: Small caching DNS proxy and DHCP/TFTP server - system daemon Dnsmasq is a lightweight, easy to configure, DNS forwarder and DHCP - server. It is designed to provide DNS and optionally, DHCP, to a - small network. It can serve the names of local machines which are - not in the global DNS. The DHCP server integrates with the DNS + server. It is designed to provide DNS and optionally, DHCP, to a + small network. It can serve the names of local machines which are + not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or - in a central configuration file. Dnsmasq supports static and dynamic + in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP/TFTP for network booting of diskless machines. Package: dnsmasq-base Architecture: any -Depends: adduser, ${shlibs:Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} Breaks: dnsmasq (<< 2.63-1~) Replaces: dnsmasq (<< 2.63-1~), dnsmasq-base Recommends: dns-root-data Provides: dnsmasq-base Conflicts: dnsmasq-base-lua -Description: Small caching DNS proxy and DHCP/TFTP server +Description: Small caching DNS proxy and DHCP/TFTP server - executable This package contains the dnsmasq executable and documentation, but not the infrastructure required to run it as a system daemon. For that, install the dnsmasq package. Package: dnsmasq-base-lua Architecture: any -Depends: adduser, ${shlibs:Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} Breaks: dnsmasq (<< 2.63-1~) Replaces: dnsmasq (<< 2.63-1~), dnsmasq-base Recommends: dns-root-data Provides: dnsmasq-base Conflicts: dnsmasq-base -Description: Small caching DNS proxy and DHCP/TFTP server +Description: Small caching DNS proxy and DHCP/TFTP server - executable, Lua-enabled This package contains the dnsmasq executable and documentation, but not the infrastructure required to run it as a system daemon. For that, install the dnsmasq package. This package is an alternative - to dnsmasq-base which includes the LUA interpreter. - + to dnsmasq-base which includes the Lua interpreter. + Package: dnsmasq-utils Architecture: linux-any -Depends: ${shlibs:Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} Conflicts: dnsmasq (<<2.40) Description: Utilities for manipulating DHCP leases Small utilities to query a DHCP server's lease database and diff --git a/debian/copyright b/debian/copyright index 46d7bae..b76c73d 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,21 +1,54 @@ -dnsmasq is Copyright (c) 2000-2024 Simon Kelley +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: dnsmasq +Upstream-Contact: Simon Kelley +Source: https://thekelleys.org.uk/dnsmasq/ -It was downloaded from: http://www.thekelleys.org.uk/dnsmasq/ +Files: * +Copyright: 2000-2021 Simon Kelley +License: GPL-2 or GPL-3 - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 dated June, 1991, or - (at your option) version 3 dated 29 June, 2007. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +Files: debian/* +Copyright: 2004-2023 Simon Kelley + 2012 Lars Bahner + 2023 Sven Geuer +License: GPL-2 or GPL-3 -On Debian GNU/Linux systems, the text of the GNU general public license is -available in the file /usr/share/common-licenses/GPL-2 or -/usr/share/common-licenses/GPL-3 - -The Debian package of dnsmasq was created by Simon Kelley with assistance -from Lars Bahner. +License: GPL-2 + This program is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; + version 2 dated June, 1991. + . + This program is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more + details. + . + You should have received a copy of the GNU General Public + License along with this program. If not, see + . + . + On Debian systems, the full text of the GNU General Public + License can be found in the file + `/usr/share/common-licenses/GPL-2'. +License: GPL-3 + This program is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; + version 3 dated 29 June, 2007. + . + This program is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more + details. + . + You should have received a copy of the GNU General Public + License along with this program. If not, see + . + . + On Debian systems, the full text of the GNU General Public + License can be found in the file + `/usr/share/common-licenses/GPL-3'. diff --git a/debian/dnsmasq-base-lua.dirs b/debian/dnsmasq-base-lua.dirs new file mode 120000 index 0000000..33c2f2a --- /dev/null +++ b/debian/dnsmasq-base-lua.dirs @@ -0,0 +1 @@ +dnsmasq-base.dirs \ No newline at end of file diff --git a/debian/dnsmasq-base-lua.docs b/debian/dnsmasq-base-lua.docs new file mode 120000 index 0000000..f49576f --- /dev/null +++ b/debian/dnsmasq-base-lua.docs @@ -0,0 +1 @@ +dnsmasq-base.docs \ No newline at end of file diff --git a/debian/dnsmasq-base-lua.install b/debian/dnsmasq-base-lua.install new file mode 100755 index 0000000..2cd17ed --- /dev/null +++ b/debian/dnsmasq-base-lua.install @@ -0,0 +1,3 @@ +#!/usr/bin/dh-exec +debian/dbus.conf => /usr/share/dbus-1/system.d/dnsmasq.conf +trust-anchors.conf /usr/share/dnsmasq-base-lua diff --git a/debian/dnsmasq-base-lua.links b/debian/dnsmasq-base-lua.links new file mode 100644 index 0000000..bbdf270 --- /dev/null +++ b/debian/dnsmasq-base-lua.links @@ -0,0 +1,2 @@ +usr/share/dnsmasq-base-lua usr/share/dnsmasq-base +usr/share/doc/dnsmasq-base-lua usr/share/doc/dnsmasq-base diff --git a/debian/dnsmasq-base-lua.maintscript b/debian/dnsmasq-base-lua.maintscript new file mode 100644 index 0000000..45c4013 --- /dev/null +++ b/debian/dnsmasq-base-lua.maintscript @@ -0,0 +1,9 @@ +# With the use of debhelper /usr/share/doc/dnsmasq-base-lua has become a +# directory as required in +# https://www.debian.org/doc/debian-policy/ch-docs.html#additional-documentation +# thus /usr/share/doc/dnsmasq-base will be a link from now onwards. +symlink_to_dir /usr/share/doc/dnsmasq-base-lua /usr/share/doc/dnsmasq-base 2.89-1.1~ dnsmasq-base-lua +dir_to_symlink /usr/share/doc/dnsmasq-base /usr/share/doc/dnsmasq-base-lua 2.89-1.1~ dnsmasq-base-lua +# Due to lintian warning dbus-policy-in-etc this file has been moved to +# /usr/share/dbus-1/system.d/dnsmasq.conf and thus is not a conffile any more. +rm_conffile /etc/dbus-1/system.d/dnsmasq.conf 2.89-1.1~ dnsmasq-base-lua diff --git a/debian/dnsmasq-base-lua.postinst b/debian/dnsmasq-base-lua.postinst new file mode 120000 index 0000000..20bc4e0 --- /dev/null +++ b/debian/dnsmasq-base-lua.postinst @@ -0,0 +1 @@ +dnsmasq-base.postinst \ No newline at end of file diff --git a/debian/dnsmasq-base-lua.postrm b/debian/dnsmasq-base-lua.postrm new file mode 120000 index 0000000..ecdb249 --- /dev/null +++ b/debian/dnsmasq-base-lua.postrm @@ -0,0 +1 @@ +dnsmasq-base.postrm \ No newline at end of file diff --git a/debian/dnsmasq-base.conffiles b/debian/dnsmasq-base.conffiles deleted file mode 100644 index 2f19194..0000000 --- a/debian/dnsmasq-base.conffiles +++ /dev/null @@ -1 +0,0 @@ -/etc/dbus-1/system.d/dnsmasq.conf diff --git a/debian/dnsmasq-base.dirs b/debian/dnsmasq-base.dirs new file mode 100644 index 0000000..7c97fa3 --- /dev/null +++ b/debian/dnsmasq-base.dirs @@ -0,0 +1 @@ +/var/lib/misc diff --git a/debian/dnsmasq-base.docs b/debian/dnsmasq-base.docs new file mode 100644 index 0000000..aa7a5c4 --- /dev/null +++ b/debian/dnsmasq-base.docs @@ -0,0 +1,8 @@ +doc.html +setup.html +dnsmasq.conf.example +FAQ +CHANGELOG.archive +dbus/DBus-interface +debian/systemd_howto +debian/readme diff --git a/debian/dnsmasq-base.install b/debian/dnsmasq-base.install new file mode 100755 index 0000000..a84ae88 --- /dev/null +++ b/debian/dnsmasq-base.install @@ -0,0 +1,3 @@ +#!/usr/bin/dh-exec +debian/dbus.conf => /usr/share/dbus-1/system.d/dnsmasq.conf +trust-anchors.conf /usr/share/dnsmasq-base diff --git a/debian/dnsmasq-base.maintscript b/debian/dnsmasq-base.maintscript new file mode 100644 index 0000000..cefb5ed --- /dev/null +++ b/debian/dnsmasq-base.maintscript @@ -0,0 +1,3 @@ +# Due to lintian warning dbus-policy-in-etc this file has been moved to +# /usr/share/dbus-1/system.d/dnsmasq.conf and thus is not a conffile any more. +rm_conffile /etc/dbus-1/system.d/dnsmasq.conf 2.89-1.1~ dnsmasq-base diff --git a/debian/dnsmasq-base.postinst b/debian/dnsmasq-base.postinst index 50b148e..e992a36 100644 --- a/debian/dnsmasq-base.postinst +++ b/debian/dnsmasq-base.postinst @@ -2,13 +2,16 @@ set -e # Create the dnsmasq user in dnsmasq-base, so that Dbus doesn't complain. - -# create a user to run as (code stolen from dovecot-common) + if [ "$1" = "configure" ]; then + # Create the user to run as. if [ -z "`id -u dnsmasq 2> /dev/null`" ]; then - adduser --system --home /var/lib/misc --gecos "dnsmasq" \ - --no-create-home --disabled-password \ - --quiet dnsmasq || true + useradd --system \ + --gid nogroup \ + --comment dnsmasq \ + --home-dir /var/lib/misc --no-create-home \ + --shell /usr/sbin/nologin \ + dnsmasq fi # Make the directory where we keep the pid file - this @@ -16,9 +19,12 @@ if [ "$1" = "configure" ]; then # This is only actually used by the dnsmasq binary package, not # dnsmasq-base, but it's much easier to create it here so that # we don't have synchronisation issues with the creation of the - # dnsmasq user. + # dnsmasq user. if [ ! -d /run/dnsmasq ]; then mkdir /run/dnsmasq chown dnsmasq:nogroup /run/dnsmasq fi fi + +#DEBHELPER# + diff --git a/debian/dnsmasq-base.postrm b/debian/dnsmasq-base.postrm index 98b10a4..c5ad3ad 100644 --- a/debian/dnsmasq-base.postrm +++ b/debian/dnsmasq-base.postrm @@ -2,10 +2,9 @@ set -e if [ purge = "$1" ]; then - if [ -x "$(command -v deluser)" ]; then - deluser --quiet --system dnsmasq > /dev/null || true - else - echo >&2 "not removing dnsmasq system account because deluser command was not found" - fi + userdel dnsmasq rm -rf /run/dnsmasq fi + +#DEBHELPER# + diff --git a/debian/dnsmasq-utils.install b/debian/dnsmasq-utils.install new file mode 100644 index 0000000..0d0a2b2 --- /dev/null +++ b/debian/dnsmasq-utils.install @@ -0,0 +1,3 @@ +dhcp_lease_time /usr/bin +dhcp_release /usr/bin +dhcp_release6 /usr/bin diff --git a/debian/dnsmasq-utils.manpages b/debian/dnsmasq-utils.manpages new file mode 100644 index 0000000..fde5ff0 --- /dev/null +++ b/debian/dnsmasq-utils.manpages @@ -0,0 +1,3 @@ +dhcp_lease_time.1 +dhcp_release.1 +dhcp_release6.1 diff --git a/debian/default b/debian/dnsmasq.default similarity index 90% rename from debian/default rename to debian/dnsmasq.default index 5386693..daa4201 100644 --- a/debian/default +++ b/debian/dnsmasq.default @@ -16,10 +16,10 @@ #DOMAIN_SUFFIX=`dnsdomainname` #DNSMASQ_OPTS="--conf-file=/etc/dnsmasq.alt" -# Whether or not to run the dnsmasq daemon; set to 0 to disable. -# Note that this is only valid when using SYSV init. For systemd, -# use "systemctl disable dnsmasq" -ENABLED=1 +# The dnsmasq daemon is run by default conforming to the Debian Policy. +# To disable the service, +# for SYSV init, use "update-rc.d dnsmasq disable", +# for systemd, use "systemctl disable dnsmasq". # By default search this drop directory for configuration options. # Libvirt leaves a file here to make the system dnsmasq play nice. diff --git a/debian/dnsmasq.init b/debian/dnsmasq.init new file mode 100644 index 0000000..2c4303c --- /dev/null +++ b/debian/dnsmasq.init @@ -0,0 +1,170 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: dnsmasq +# Required-Start: $network $remote_fs $syslog +# Required-Stop: $network $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: DHCP and DNS server +### END INIT INFO + +# Don't exit on error status +set +e + +# The following test ensures the dnsmasq service is not started, when the +# package 'dnsmasq' is removed but not purged, even if the dnsmasq-base +# package is still in place. +if [ -r /usr/share/dnsmasq/init-system-common ]; then + # 'dnsmasq' is installed: source initial code used also with systemd. + . /usr/share/dnsmasq/init-system-common +else + # 'dnsmasq' is removed but not purged, or damaged: do nothing. + exit 0 +fi + +# Double-check 'dnsmasq-base' or 'dnsmasq-base-lua' is installed. +test -x ${DAEMON} || exit 0 + +# Source the SysV init-functions which should always be available. +. /lib/lsb/init-functions || exit 0 + +start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + + # /run may be volatile, so we need to ensure that + # /run/dnsmasq exists here as well as in postinst + if [ ! -d /run/dnsmasq ]; then + mkdir /run/dnsmasq || { [ -d /run/dnsmasq ] || return 2 ; } + chown dnsmasq:nogroup /run/dnsmasq || return 2 + fi + [ -x /sbin/restorecon ] && /sbin/restorecon /run/dnsmasq + + start-stop-daemon --start --quiet --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --exec ${DAEMON} --test > /dev/null || return 1 + start-stop-daemon --start --quiet --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --exec ${DAEMON} -- \ + -x /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid \ + ${MAILHOSTNAME:+ -m ${MAILHOSTNAME}} \ + ${MAILTARGET:+ -t ${MAILTARGET}} \ + ${DNSMASQ_USER:+ -u ${DNSMASQ_USER}} \ + ${DNSMASQ_INTERFACES:+ ${DNSMASQ_INTERFACES}} \ + ${DHCP_LEASE:+ -l ${DHCP_LEASE}} \ + ${DOMAIN_SUFFIX:+ -s ${DOMAIN_SUFFIX}} \ + ${RESOLV_CONF:+ -r ${RESOLV_CONF}} \ + ${CACHESIZE:+ -c ${CACHESIZE}} \ + ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} \ + ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} \ + || return 2 +} + +stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --name ${NAME} +} + +status() +{ + # Return + # 0 if daemon is running + # 1 if daemon is dead and pid file exists + # 3 if daemon is not running + # 4 if daemon status is unknown + start-stop-daemon --start --quiet --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --exec ${DAEMON} --test > /dev/null + case "${?}" in + 0) [ -e "/run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid" ] && return 1 ; return 3 ;; + 1) return 0 ;; + *) return 4 ;; + esac +} + +case "${1}" in + start) + log_daemon_msg "Starting ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" + start + case "${?}" in + 0) + log_end_msg 0 + start_resolvconf + exit 0 + ;; + 1) + log_success_msg "(already running)" + exit 0 + ;; + *) + log_end_msg 1 + exit 1 + ;; + esac + ;; + stop) + stop_resolvconf + log_daemon_msg "Stopping ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" + stop + RETVAL="${?}" + case "${RETVAL}" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_warning_msg "(not running)" ; exit 0 ;; + *) log_end_msg 1; exit 1 ;; + esac + ;; + restart|force-reload) + checkconfig + if [ ${?} -ne 0 ]; then + NAME="configuration syntax check" + RETVAL="2" + else + stop_resolvconf + stop + RETVAL="${?}" + fi + log_daemon_msg "Restarting ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" + case "${RETVAL}" in + 0|1) + sleep 2 + start + case "${?}" in + 0) + log_end_msg 0 + start_resolvconf + exit 0 + ;; + *) + log_end_msg 1 + exit 1 + ;; + esac + ;; + *) + log_end_msg 1 + exit 1 + ;; + esac + ;; + status) + log_daemon_msg "Checking ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" + status + case "${?}" in + 0) log_success_msg "(running)" ; exit 0 ;; + 1) log_success_msg "(dead, pid file exists)" ; exit 1 ;; + 3) log_success_msg "(not running)" ; exit 3 ;; + *) log_success_msg "(unknown)" ; exit 4 ;; + esac + ;; + dump-stats) + kill -s USR1 `cat /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid` + ;; + *) + echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload|dump-stats|status}" >&2 + exit 3 + ;; +esac + +exit 0 diff --git a/debian/dnsmasq.install b/debian/dnsmasq.install new file mode 100755 index 0000000..6671afe --- /dev/null +++ b/debian/dnsmasq.install @@ -0,0 +1,9 @@ +#!/usr/bin/dh-exec +debian/resolvconf => /etc/resolvconf/update.d/dnsmasq +debian/resolvconf-package => /usr/lib/resolvconf/dpkg-event.d/dnsmasq +debian/init-system-common => /usr/share/dnsmasq/init-system-common +debian/systemd-helper => /usr/share/dnsmasq/systemd-helper +dnsmasq.conf.example => /etc/dnsmasq.conf +debian/readme.dnsmasq.d => /etc/dnsmasq.d/README +debian/tmpfiles.conf => /usr/lib/tmpfiles.d/dnsmasq.conf +debian/insserv => /etc/insserv.conf.d/dnsmasq diff --git a/debian/dnsmasq.links b/debian/dnsmasq.links new file mode 100644 index 0000000..973aa6c --- /dev/null +++ b/debian/dnsmasq.links @@ -0,0 +1 @@ +usr/share/dnsmasq-base/trust-anchors.conf usr/share/dnsmasq/trust-anchors.conf diff --git a/debian/dnsmasq.maintscript b/debian/dnsmasq.maintscript new file mode 100644 index 0000000..4db5ff4 --- /dev/null +++ b/debian/dnsmasq.maintscript @@ -0,0 +1,2 @@ +# /usr/share/doc/dnsmasq was a symlink in versions < 2.81-1 (see #985282) +symlink_to_dir /usr/share/doc/dnsmasq dnsmasq-base 2.84-1.2~ dnsmasq diff --git a/debian/dnsmasq.runscript/run b/debian/dnsmasq.runscript/run index 1a43393..28a4281 100644 --- a/debian/dnsmasq.runscript/run +++ b/debian/dnsmasq.runscript/run @@ -15,14 +15,14 @@ then fi # This tells dnsmasq to ignore DNS requests that don't come from a local network. -# It's automatically ignored if --interface --except-interface, --listen-address +# It's automatically ignored if --interface --except-interface, --listen-address # or --auth-server exist in the configuration, so for most installations, it will # have no effect, but for otherwise-unconfigured installations, it stops dnsmasq # from being vulnerable to DNS-reflection attacks. DNSMASQ_OPTS="${DNSMASQ_OPTS:-} --local-service" -# If the dns-root-data package is installed, then the trust anchors will be +# If the dns-root-data package is installed, then the trust anchors will be # available in $ROOT_DS, in BIND zone-file format. Reformat as dnsmasq # --trust-anchor options. diff --git a/debian/systemd.service b/debian/dnsmasq.service similarity index 52% rename from debian/systemd.service rename to debian/dnsmasq.service index b769c4e..6910ca9 100644 --- a/debian/systemd.service +++ b/debian/dnsmasq.service @@ -10,19 +10,19 @@ Type=forking PIDFile=/run/dnsmasq/dnsmasq.pid # Test the config file and refuse starting if it is not valid. -ExecStartPre=/etc/init.d/dnsmasq checkconfig +ExecStartPre=/usr/share/dnsmasq/systemd-helper checkconfig -# We run dnsmasq via the /etc/init.d/dnsmasq script which acts as a -# wrapper picking up extra configuration files and then execs dnsmasq -# itself, when called with the "systemd-exec" function. -ExecStart=/etc/init.d/dnsmasq systemd-exec +# We run dnsmasq via the /usr/share/dnsmasq/systemd-helper script which acts +# as a wrapper picking up extra configuration files and then execs dnsmasq +# itself, when called with the "exec" function. +ExecStart=/usr/share/dnsmasq/systemd-helper exec -# The systemd-*-resolvconf functions configure (and deconfigure) +# The *-resolvconf functions configure (and deconfigure) # resolvconf to work with the dnsmasq DNS server. They're called like # this to get correct error handling (ie don't start-resolvconf if the # dnsmasq daemon fails to start). -ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf -ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf +ExecStartPost=/usr/share/dnsmasq/systemd-helper start-resolvconf +ExecStop=/usr/share/dnsmasq/systemd-helper stop-resolvconf ExecReload=/bin/kill -HUP $MAINPID diff --git a/debian/systemd@.service b/debian/dnsmasq@.service similarity index 51% rename from debian/systemd@.service rename to debian/dnsmasq@.service index 16ca86e..b266c6d 100644 --- a/debian/systemd@.service +++ b/debian/dnsmasq@.service @@ -10,19 +10,19 @@ Type=forking PIDFile=/run/dnsmasq/dnsmasq.%i.pid # Test the config file and refuse starting if it is not valid. -ExecStartPre=/etc/init.d/dnsmasq checkconfig "%i" +ExecStartPre=/usr/share/dnsmasq/systemd-helper checkconfig "%i" -# We run dnsmasq via the /etc/init.d/dnsmasq script which acts as a -# wrapper picking up extra configuration files and then execs dnsmasq -# itself, when called with the "systemd-exec" function. -ExecStart=/etc/init.d/dnsmasq systemd-exec "%i" +# We run dnsmasq via the /usr/share/dnsmasq/systemd-helper script which acts +# as a wrapper picking up extra configuration files and then execs dnsmasq +# itself, when called with the "exec" function. +ExecStart=/usr/share/dnsmasq/systemd-helper exec "%i" -# The systemd-*-resolvconf functions configure (and deconfigure) +# The *-resolvconf functions configure (and deconfigure) # resolvconf to work with the dnsmasq DNS server. They're called like # this to get correct error handling (ie don't start-resolvconf if the # dnsmasq daemon fails to start). -ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf "%i" -ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf "%i" +ExecStartPost=/usr/share/dnsmasq/systemd-helper start-resolvconf "%i" +ExecStop=/usr/share/dnsmasq/systemd-helper stop-resolvconf "%i" ExecReload=/bin/kill -HUP $MAINPID diff --git a/debian/init b/debian/init deleted file mode 100644 index 79344a3..0000000 --- a/debian/init +++ /dev/null @@ -1,325 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: dnsmasq -# Required-Start: $network $remote_fs $syslog -# Required-Stop: $network $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Description: DHCP and DNS server -### END INIT INFO - -# Don't exit on error status -set +e - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/sbin/dnsmasq -NAME=dnsmasq -DESC="DNS forwarder and DHCP server" -INSTANCE="${2}" - -# Most configuration options in /etc/default/dnsmasq are deprecated -# but still honoured. -ENABLED=1 -if [ -r /etc/default/${NAME}${INSTANCE:+.${INSTANCE}} ]; then - . /etc/default/${NAME}${INSTANCE:+.${INSTANCE}} -fi - -# Get the system locale, so that messages are in the correct language, and the -# charset for IDN is correct -if [ -r /etc/default/locale ]; then - . /etc/default/locale - export LANG -fi - -# The following test ensures the dnsmasq service is not started, when the -# package 'dnsmasq' is removed but not purged, even if the dnsmasq-base -# package is still in place. -test -e /usr/share/dnsmasq/installed-marker || exit 0 - -test -x ${DAEMON} || exit 0 - -# Provide skeleton LSB log functions for backports which don't have LSB functions. -if [ -f /lib/lsb/init-functions ]; then - . /lib/lsb/init-functions -else - log_warning_msg () { - echo "${@}." - } - - log_success_msg () { - echo "${@}." - } - - log_daemon_msg () { - echo -n "${1}: ${2}" - } - - log_end_msg () { - if [ "${1}" -eq 0 ]; then - echo "." - elif [ "${1}" -eq 255 ]; then - /bin/echo -e " (warning)." - else - /bin/echo -e " failed!" - fi - } -fi - -# RESOLV_CONF: -# If the resolvconf package is installed then use the resolv conf file -# that it provides as the default. Otherwise use /etc/resolv.conf as -# the default. -# -# If IGNORE_RESOLVCONF is set in /etc/default/dnsmasq or an explicit -# filename is set there then this inhibits the use of the resolvconf-provided -# information. -# -# Note that if the resolvconf package is installed it is not possible to -# override it just by configuration in /etc/dnsmasq.conf, it is necessary -# to set IGNORE_RESOLVCONF=yes in /etc/default/dnsmasq. - -if [ ! "${RESOLV_CONF}" ] && - [ "${IGNORE_RESOLVCONF}" != "yes" ] && - [ -x /sbin/resolvconf ] -then - RESOLV_CONF=/run/dnsmasq/resolv.conf -fi - -for INTERFACE in ${DNSMASQ_INTERFACE}; do - DNSMASQ_INTERFACES="${DNSMASQ_INTERFACES} -i ${INTERFACE}" -done - -for INTERFACE in ${DNSMASQ_EXCEPT}; do - DNSMASQ_INTERFACES="${DNSMASQ_INTERFACES} -I ${INTERFACE}" -done - -if [ ! "${DNSMASQ_USER}" ]; then - DNSMASQ_USER="dnsmasq" -fi - -# This tells dnsmasq to ignore DNS requests that don't come from a local network. -# It's automatically ignored if --interface --except-interface, --listen-address -# or --auth-server exist in the configuration, so for most installations, it will -# have no effect, but for otherwise-unconfigured installations, it stops dnsmasq -# from being vulnerable to DNS-reflection attacks. - -DNSMASQ_OPTS="${DNSMASQ_OPTS} --local-service" - -# If the dns-root-data package is installed, then the trust anchors will be -# available in ROOT_DS, in BIND zone-file format. Reformat as dnsmasq -# --trust-anchor options. - -ROOT_DS="/usr/share/dns/root.ds" - -if [ -f ${ROOT_DS} ]; then - DNSMASQ_OPTS="$DNSMASQ_OPTS `env LC_ALL=C sed -rne "s/^([.a-zA-Z0-9]+)([[:space:]]+[0-9]+)*([[:space:]]+IN)*[[:space:]]+DS[[:space:]]+/--trust-anchor=\1,/;s/[[:space:]]+/,/gp" $ROOT_DS | tr '\n' ' '`" -fi - -start() -{ - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - - # /run may be volatile, so we need to ensure that - # /run/dnsmasq exists here as well as in postinst - if [ ! -d /run/dnsmasq ]; then - mkdir /run/dnsmasq || { [ -d /run/dnsmasq ] || return 2 ; } - chown dnsmasq:nogroup /run/dnsmasq || return 2 - fi - [ -x /sbin/restorecon ] && /sbin/restorecon /run/dnsmasq - - start-stop-daemon --start --quiet --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --exec ${DAEMON} --test > /dev/null || return 1 - start-stop-daemon --start --quiet --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --exec ${DAEMON} -- \ - -x /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid \ - ${MAILHOSTNAME:+ -m ${MAILHOSTNAME}} \ - ${MAILTARGET:+ -t ${MAILTARGET}} \ - ${DNSMASQ_USER:+ -u ${DNSMASQ_USER}} \ - ${DNSMASQ_INTERFACES:+ ${DNSMASQ_INTERFACES}} \ - ${DHCP_LEASE:+ -l ${DHCP_LEASE}} \ - ${DOMAIN_SUFFIX:+ -s ${DOMAIN_SUFFIX}} \ - ${RESOLV_CONF:+ -r ${RESOLV_CONF}} \ - ${CACHESIZE:+ -c ${CACHESIZE}} \ - ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} \ - ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} \ - || return 2 -} - -start_resolvconf() -{ -# If interface "lo" is explicitly disabled in /etc/default/dnsmasq -# Then dnsmasq won't be providing local DNS, so don't add it to -# the resolvconf server set. - for interface in ${DNSMASQ_EXCEPT}; do - [ ${interface} = lo ] && return - done - - # Also skip this if DNS functionality is disabled in /etc/dnsmasq.conf - if grep -qs '^port=0' /etc/dnsmasq.conf; then - return - fi - - if [ -x /sbin/resolvconf ] ; then - echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.${NAME}${INSTANCE:+.${INSTANCE}} - fi - return 0 -} - -stop() -{ - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --name ${NAME} -} - -stop_resolvconf() -{ - if [ -x /sbin/resolvconf ] ; then - /sbin/resolvconf -d lo.${NAME}${INSTANCE:+.${INSTANCE}} - fi - return 0 -} - -status() -{ - # Return - # 0 if daemon is running - # 1 if daemon is dead and pid file exists - # 3 if daemon is not running - # 4 if daemon status is unknown - start-stop-daemon --start --quiet --pidfile /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid --exec ${DAEMON} --test > /dev/null - case "${?}" in - 0) [ -e "/run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid" ] && return 1 ; return 3 ;; - 1) return 0 ;; - *) return 4 ;; - esac -} - -case "${1}" in - start) - test "${ENABLED}" != "0" || exit 0 - log_daemon_msg "Starting ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" - start - case "${?}" in - 0) - log_end_msg 0 - start_resolvconf - exit 0 - ;; - 1) - log_success_msg "(already running)" - exit 0 - ;; - *) - log_end_msg 1 - exit 1 - ;; - esac - ;; - stop) - stop_resolvconf - if [ "${ENABLED}" != "0" ]; then - log_daemon_msg "Stopping ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" - fi - stop - RETVAL="${?}" - if [ "${ENABLED}" = "0" ]; then - case "${RETVAL}" in - 0) log_daemon_msg "Stopping ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}"; log_end_msg 0 ;; - esac - exit 0 - fi - case "${RETVAL}" in - 0) log_end_msg 0 ; exit 0 ;; - 1) log_warning_msg "(not running)" ; exit 0 ;; - *) log_end_msg 1; exit 1 ;; - esac - ;; - checkconfig) - ${DAEMON} --test ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} >/dev/null 2>&1 - RETVAL="${?}" - exit ${RETVAL} - ;; - restart|force-reload) - test "${ENABLED}" != "0" || exit 1 - ${DAEMON} --test ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} >/dev/null 2>&1 - if [ ${?} -ne 0 ]; then - NAME="configuration syntax check" - RETVAL="2" - else - stop_resolvconf - stop - RETVAL="${?}" - fi - log_daemon_msg "Restarting ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" - case "${RETVAL}" in - 0|1) - sleep 2 - start - case "${?}" in - 0) - log_end_msg 0 - start_resolvconf - exit 0 - ;; - *) - log_end_msg 1 - exit 1 - ;; - esac - ;; - *) - log_end_msg 1 - exit 1 - ;; - esac - ;; - status) - log_daemon_msg "Checking ${DESC}" "${NAME}${INSTANCE:+.${INSTANCE}}" - status - case "${?}" in - 0) log_success_msg "(running)" ; exit 0 ;; - 1) log_success_msg "(dead, pid file exists)" ; exit 1 ;; - 3) log_success_msg "(not running)" ; exit 3 ;; - *) log_success_msg "(unknown)" ; exit 4 ;; - esac - ;; - dump-stats) - kill -s USR1 `cat /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid` - ;; - systemd-start-resolvconf) - start_resolvconf - ;; - systemd-stop-resolvconf) - stop_resolvconf - ;; - systemd-exec) - # /run may be volatile, so we need to ensure that - # /run/dnsmasq exists here as well as in postinst - if [ ! -d /run/dnsmasq ]; then - mkdir /run/dnsmasq || { [ -d /run/dnsmasq ] || return 2 ; } - chown dnsmasq:nogroup /run/dnsmasq || return 2 - fi - exec ${DAEMON} -x /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid \ - ${MAILHOSTNAME:+ -m ${MAILHOSTNAME}} \ - ${MAILTARGET:+ -t ${MAILTARGET}} \ - ${DNSMASQ_USER:+ -u ${DNSMASQ_USER}} \ - ${DNSMASQ_INTERFACES:+ ${DNSMASQ_INTERFACES}} \ - ${DHCP_LEASE:+ -l ${DHCP_LEASE}} \ - ${DOMAIN_SUFFIX:+ -s ${DOMAIN_SUFFIX}} \ - ${RESOLV_CONF:+ -r ${RESOLV_CONF}} \ - ${CACHESIZE:+ -c ${CACHESIZE}} \ - ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} \ - ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} - ;; - *) - echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload|dump-stats|status}" >&2 - exit 3 - ;; -esac - -exit 0 diff --git a/debian/init-system-common b/debian/init-system-common new file mode 100644 index 0000000..7d6b081 --- /dev/null +++ b/debian/init-system-common @@ -0,0 +1,102 @@ +# -*- shell-script -*- +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/dnsmasq +NAME=dnsmasq +DESC="DNS forwarder and DHCP server" +INSTANCE="${2}" + +# Most configuration options in /etc/default/dnsmasq are deprecated +# but still honoured. +if [ -r /etc/default/${NAME}${INSTANCE:+.${INSTANCE}} ]; then + . /etc/default/${NAME}${INSTANCE:+.${INSTANCE}} +fi + +# Get the system locale, so that messages are in the correct language, and the +# charset for IDN is correct +if [ -r /etc/default/locale ]; then + . /etc/default/locale + export LANG +fi + +# RESOLV_CONF: +# If the resolvconf package is installed then use the resolv conf file +# that it provides as the default. Otherwise use /etc/resolv.conf as +# the default. +# +# If IGNORE_RESOLVCONF is set in /etc/default/dnsmasq or an explicit +# filename is set there then this inhibits the use of the resolvconf-provided +# information. +# +# Note that if the resolvconf package is installed it is not possible to +# override it just by configuration in /etc/dnsmasq.conf, it is necessary +# to set IGNORE_RESOLVCONF=yes in /etc/default/dnsmasq. + +if [ ! "${RESOLV_CONF}" ] && + [ "${IGNORE_RESOLVCONF}" != "yes" ] && + [ -x /sbin/resolvconf ] +then + RESOLV_CONF=/run/dnsmasq/resolv.conf +fi + +for INTERFACE in ${DNSMASQ_INTERFACE}; do + DNSMASQ_INTERFACES="${DNSMASQ_INTERFACES} -i ${INTERFACE}" +done + +for INTERFACE in ${DNSMASQ_EXCEPT}; do + DNSMASQ_INTERFACES="${DNSMASQ_INTERFACES} -I ${INTERFACE}" +done + +if [ ! "${DNSMASQ_USER}" ]; then + DNSMASQ_USER="dnsmasq" +fi + +# This tells dnsmasq to ignore DNS requests that don't come from a local network. +# It's automatically ignored if --interface --except-interface, --listen-address +# or --auth-server exist in the configuration, so for most installations, it will +# have no effect, but for otherwise-unconfigured installations, it stops dnsmasq +# from being vulnerable to DNS-reflection attacks. + +DNSMASQ_OPTS="${DNSMASQ_OPTS} --local-service" + +# If the dns-root-data package is installed, then the trust anchors will be +# available in ROOT_DS, in BIND zone-file format. Reformat as dnsmasq +# --trust-anchor options. + +ROOT_DS="/usr/share/dns/root.ds" + +if [ -f ${ROOT_DS} ]; then + DNSMASQ_OPTS="$DNSMASQ_OPTS `env LC_ALL=C sed -rne "s/^([.a-zA-Z0-9]+)([[:space:]]+[0-9]+)*([[:space:]]+IN)*[[:space:]]+DS[[:space:]]+/--trust-anchor=\1,/;s/[[:space:]]+/,/gp" $ROOT_DS | tr '\n' ' '`" +fi + +checkconfig() +{ + ${DAEMON} --test ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} >/dev/null 2>&1 +} + +start_resolvconf() +{ +# If interface "lo" is explicitly disabled in /etc/default/dnsmasq +# Then dnsmasq won't be providing local DNS, so don't add it to +# the resolvconf server set. + for interface in ${DNSMASQ_EXCEPT}; do + [ ${interface} = lo ] && return + done + + # Also skip this if DNS functionality is disabled in /etc/dnsmasq.conf + if grep -qs '^port=0' /etc/dnsmasq.conf; then + return + fi + + if [ -x /sbin/resolvconf ] ; then + echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.${NAME}${INSTANCE:+.${INSTANCE}} + fi + return 0 +} + +stop_resolvconf() +{ + if [ -x /sbin/resolvconf ] ; then + /sbin/resolvconf -d lo.${NAME}${INSTANCE:+.${INSTANCE}} + fi + return 0 +} diff --git a/debian/installed-marker b/debian/installed-marker deleted file mode 100644 index 8579a95..0000000 --- a/debian/installed-marker +++ /dev/null @@ -1,2 +0,0 @@ -# This file indicates dnsmasq (and not just dnsmasq-base) is installed. -# It is an implementation detail of the dnsmasq init script. diff --git a/debian/lintian-override b/debian/lintian-override deleted file mode 100644 index 913cba2..0000000 --- a/debian/lintian-override +++ /dev/null @@ -1,3 +0,0 @@ -# dnsmasq-base and dnsmasq-base-lua are mutually exclusive and both -# provide /usr/share/doc/dnsmasq-base -dnsmasq-base-lua binary: usr-share-doc-symlink-without-dependency dnsmasq-base diff --git a/debian/patches/bump-lua-version.patch b/debian/patches/bump-lua-version.patch new file mode 100644 index 0000000..aa91f2d --- /dev/null +++ b/debian/patches/bump-lua-version.patch @@ -0,0 +1,17 @@ +Description: Bump Lua version to 5.4 +Forwarded: no +Author: Sven Geuer +Last-Update: 2024-01-12 +--- a/Makefile ++++ b/Makefile +@@ -60,8 +60,8 @@ + idn2_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LIBIDN2 $(PKG_CONFIG) --libs libidn2` + ct_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_CONNTRACK $(PKG_CONFIG) --cflags libnetfilter_conntrack` + ct_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_CONNTRACK $(PKG_CONFIG) --libs libnetfilter_conntrack` +-lua_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --cflags lua5.2` +-lua_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --libs lua5.2` ++lua_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --cflags lua5.4` ++lua_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --libs lua5.4` + nettle_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CONFIG) --cflags 'nettle hogweed' \ + HAVE_CRYPTOHASH $(PKG_CONFIG) --cflags nettle \ + HAVE_NETTLEHASH $(PKG_CONFIG) --cflags nettle` diff --git a/debian/patches/eliminate-privacy-breaches.patch b/debian/patches/eliminate-privacy-breaches.patch new file mode 100644 index 0000000..91e34fa --- /dev/null +++ b/debian/patches/eliminate-privacy-breaches.patch @@ -0,0 +1,40 @@ +Description: Remove or replace privacy breaching logos and forms + Lintian complains about these by issuing the tags privacy-breach-logo and + privacy-breach-donation. +Forwarded: not-needed +Author: Sven Geuer +Last-Update: 2023-11-18 + +--- a/doc.html ++++ b/doc.html +@@ -1,14 +1,11 @@ + + + Dnsmasq - network services for small networks. +- + + + + +- + +- +

Dnsmasq

+ Dnsmasq provides network infrastructure for small networks: DNS, DHCP, router advertisement and network boot. It is designed to be + lightweight and have a small footprint, suitable for resource constrained routers and firewalls. It has also been widely used +@@ -88,14 +85,6 @@ + Dnsmasq is mainly written and maintained by Simon Kelley. For most of its life, dnsmasq has been a spare-time project. + These days I'm working on it as my main activity. + I don't have an employer or anyone who pays me regularly to work on dnsmasq. If you'd like to make +-a contribution towards my expenses, please use the donation button below. +-
+- +- +- +- +-
+- +- ++a contribution towards my expenses, please use the donation button at the project's home page. + + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..56747f6 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,2 @@ +bump-lua-version.patch +eliminate-privacy-breaches.patch diff --git a/debian/postinst b/debian/postinst deleted file mode 100644 index 8c93160..0000000 --- a/debian/postinst +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -set -e - -# /usr/share/doc/dnsmasq was a symlink in versions < 2.81-1 (see #985282) -dpkg-maintscript-helper symlink_to_dir /usr/share/doc/dnsmasq dnsmasq-base 2.84-1.2~ dnsmasq -- "$@" - -# Code copied from dh_systemd_enable ---------------------- -# This will only remove masks created by d-s-h on package removal. -deb-systemd-helper unmask dnsmasq.service >/dev/null || true - -# was-enabled defaults to true, so new installations run enable. -if deb-systemd-helper --quiet was-enabled dnsmasq.service; then - # Enables the unit on first installation, creates new - # symlinks on upgrades if the unit file has changed. - deb-systemd-helper enable dnsmasq.service >/dev/null || true -else - # Update the statefile to add new symlinks (if any), which need to be - # cleaned up on purge. Also remove old symlinks. - deb-systemd-helper update-state dnsmasq.service >/dev/null || true -fi -# End code copied from dh_systemd_enable ------------------ - -if [ -x /etc/init.d/dnsmasq ]; then - update-rc.d dnsmasq defaults 15 85 >/dev/null - - if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then - if [ -e /run/dnsmasq/dnsmasq.pid ]; then - ACTION=restart - else - ACTION=start - fi - - if [ -x /usr/sbin/invoke-rc.d ] ; then - invoke-rc.d dnsmasq $ACTION || true - else - /etc/init.d/dnsmasq $ACTION || true - fi - fi -fi - - diff --git a/debian/postrm b/debian/postrm deleted file mode 100644 index 69d6de1..0000000 --- a/debian/postrm +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -set -e - -# /usr/share/doc/dnsmasq was a symlink in versions < 2.81-1 (see #985282) -dpkg-maintscript-helper symlink_to_dir /usr/share/doc/dnsmasq dnsmasq-base 2.84-1.2~ dnsmasq -- "$@" - -if [ purge = "$1" ]; then - update-rc.d dnsmasq remove >/dev/null -fi - -# Code copied from dh_systemd_enable ---------------------- -if [ "$1" = "remove" ]; then - if [ -x "/usr/bin/deb-systemd-helper" ]; then - deb-systemd-helper mask dnsmasq.service >/dev/null - fi -fi - -if [ "$1" = "purge" ]; then - if [ -x "/usr/bin/deb-systemd-helper" ]; then - deb-systemd-helper purge dnsmasq.service >/dev/null - deb-systemd-helper unmask dnsmasq.service >/dev/null - fi -fi -# End code copied from dh_systemd_enable ------------------ - diff --git a/debian/preinst b/debian/preinst deleted file mode 100644 index 7493043..0000000 --- a/debian/preinst +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -set -e - -# /usr/share/doc/dnsmasq was a symlink in versions < 2.81-1 (see #985282) -dpkg-maintscript-helper symlink_to_dir /usr/share/doc/dnsmasq dnsmasq-base 2.84-1.2~ dnsmasq -- "$@" diff --git a/debian/prerm b/debian/prerm deleted file mode 100644 index f809b68..0000000 --- a/debian/prerm +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -set -e - -if [ "$1" = "remove" ]; then - if [ -x /usr/sbin/invoke-rc.d ] ; then - invoke-rc.d dnsmasq stop || true - else - /etc/init.d/dnsmasq stop || true - fi -fi - -exit 0 - - diff --git a/debian/readme b/debian/readme index 6120ff7..660cf67 100644 --- a/debian/readme +++ b/debian/readme @@ -4,13 +4,13 @@ Notes on configuring dnsmasq as packaged for Debian. commented; see also the dnsmasq.8 man page for explanation of the options. The file /etc/default/dnsmasq also exists but it shouldn't need to be touched in most cases. To set up DHCP - options you might need to refer to a copy of RFC 2132. This is + options you might need to refer to a copy of RFC 2132. This is available on Debian systems in the package doc-rfc-std as the file /usr/share/doc/RFC/draft-standard/rfc2132.txt.gz . (2) Installing the dnsmasq package also creates the directory /etc/dnsmasq.d which is searched by dnsmasq for configuration file - fragments. This behaviour can be disabled by editing + fragments. This behaviour can be disabled by editing /etc/default/dnsmasq. (3) If the Debian resolvconf package is installed then, regardless @@ -30,25 +30,25 @@ Notes on configuring dnsmasq as packaged for Debian. generated file /etc/ppp/resolv.conf. You should list 127.0.0.1 as the first nameserver address in /etc/resolv.conf. -(6) In the absence of resolvconf, dns-nameservers lines in +(6) In the absence of resolvconf, dns-nameservers lines in /etc/network/interfaces are ignored. If you do not use resolvconf, list 127.0.0.1 as the first nameserver address in /etc/resolv.conf and configure your nameservers using "server=" lines in /etc/dnsmasq.conf. (7) If you run multiple DNS servers on a single machine, each - listening on a different interface, then it is necessary to use - the bind-interfaces option by uncommenting "bind-interfaces" in - /etc/dnsmasq.conf. This option stops dnsmasq from binding the + listening on a different interface, then it is necessary to use + the bind-interfaces option by uncommenting "bind-interfaces" in + /etc/dnsmasq.conf. This option stops dnsmasq from binding the wildcard address and allows servers listening on port 53 on - interfaces not in use by dnsmasq to work. The Debian + interfaces not in use by dnsmasq to work. The Debian libvirt package will add a configuration file in /etc/dnsmasq.d which does this so that the "system" dnsmasq and "private" dnsmasq instances started by libvirt do not clash. (8) The following options are supported in DEB_BUILD_OPTIONS noopt : compile without optimisation. - nostrip : don't remove symbols from binary. + nostrip : don't remove symbols from binary. nodocs : omit documentation. notftp : omit TFTP support. nodhcp : omit DHCP support. @@ -58,7 +58,7 @@ Notes on configuring dnsmasq as packaged for Debian. in Lua. noipv6 : omit IPv6 support. nodbus : omit DBus support. - noconntrack : omit connection tracking support. + noconntrack : omit connection tracking support. noipset : omit IPset support. nonftset : omit nftset support. nortc : compile alternate mode suitable for systems without an RTC. @@ -67,7 +67,7 @@ Notes on configuring dnsmasq as packaged for Debian. combined with noi18n to be effective. gitversion : set the version of the produced packages from the git-derived versioning information on the source, - rather than the debian changelog. + rather than the debian changelog. (9) Dnsmasq comes as three packages - dnsmasq-utils, dnsmasq-base and dnsmasq. Dnsmasq-base provides the dnsmasq executable and @@ -76,5 +76,5 @@ Notes on configuring dnsmasq as packaged for Debian. infrastructure. This file assumes that both are installed. It is possible to install only dnsmasq-base and use dnsmasq as a non-"system" daemon. Libvirt, for instance, does this. - Dnsmasq-utils provides the utilities dhcp_release and + Dnsmasq-utils provides the utilities dhcp_release and dhcp_lease_time. diff --git a/debian/resolvconf b/debian/resolvconf old mode 100644 new mode 100755 index 4418eab..f6d5d67 --- a/debian/resolvconf +++ b/debian/resolvconf @@ -48,7 +48,7 @@ RSLVCNFFILES="" for F in $(/lib/resolvconf/list-records --after "lo.$MY_NAME_FOR_RESOLVCONF") ; do case "$F" in "lo.$MY_NAME_FOR_RESOLVCONF") - # Omit own record + # Omit own record ;; lo.*) # Include no more records after one for a local nameserver diff --git a/debian/resolvconf-package b/debian/resolvconf-package old mode 100644 new mode 100755 diff --git a/debian/rules b/debian/rules index 2354ea9..8865317 100755 --- a/debian/rules +++ b/debian/rules @@ -1,309 +1,127 @@ #!/usr/bin/make -f -# debian/rules file - for dnsmasq. -# Copyright 2001-2020 by Simon Kelley -# Based on the sample in the debian hello package which carries the following: -# Copyright 1994,1995 by Ian Jackson. -# I hereby give you perpetual unlimited permission to copy, -# modify and relicense this file, provided that you do not remove -# my name from the file itself. (I assert my moral right of -# paternity under the Copyright, Designs and Patents Act 1988.) -# This file may have to be extensively modified +# -*- makefile -*- -package=dnsmasq-base +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 -dpkg_buildflags := DEB_BUILD_MAINT_OPTIONS="hardening=+all,+pie,+bindnow" dpkg-buildflags +# Make sure lintian does not complain about missing hardenings. +export DEB_BUILD_MAINT_OPTIONS = hardening=+all -CFLAGS = $(shell $(dpkg_buildflags) --get CFLAGS) -CFLAGS += $(shell $(dpkg_buildflags) --get CPPFLAGS) -CFLAGS += -Wall -W +include /usr/share/dpkg/architecture.mk -LDFLAGS = $(shell $(dpkg_buildflags) --get LDFLAGS) - -DEB_COPTS = $(COPTS) - -TARGET = install-i18n - -DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) -DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) -BUILD_DATE := $(shell dpkg-parsechangelog --show-field Date) - -ifeq ($(origin CC),default) - CC = $(DEB_HOST_GNU_TYPE)-gcc -endif - -# Support non-cross-builds on systems without gnu-triplet-binaries for pkg-config. -ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) - PKG_CONFIG=pkg-config -else - PKG_CONFIG=$(DEB_HOST_GNU_TYPE)-pkg-config -endif - -# Force package version based on git tags. -ifneq (,$(filter gitversion,$(DEB_BUILD_OPTIONS))) - PACKAGE_VERSION = $(shell bld/get-version `pwd` | sed 's/test/~&/; s/[a-z]/~&/; s/-/./g; s/$$/-1/; s/^/-v/';) -endif +PREFIX = /usr +# Upstream does not handle CPPFLAGS, so we add it to CFLAGS here. +CFLAGS += $(CPPFLAGS) +COPTS = ifeq (,$(filter nodbus,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DHAVE_DBUS + COPTS += -DHAVE_DBUS endif ifeq (,$(filter noidn, $(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DHAVE_LIBIDN2 + COPTS += -DHAVE_LIBIDN2 endif ifeq (,$(filter nonftset, $(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DHAVE_NFTSET + COPTS += -DHAVE_NFTSET endif ifeq (,$(filter noconntrack,$(DEB_BUILD_OPTIONS))) ifeq ($(DEB_HOST_ARCH_OS),linux) - DEB_COPTS += -DHAVE_CONNTRACK + COPTS += -DHAVE_CONNTRACK endif endif ifneq (,$(filter noipset,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DNO_IPSET + COPTS += -DNO_IPSET endif ifneq (,$(filter nodhcp6,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DNO_DHCP6 + COPTS += -DNO_DHCP6 endif ifneq (,$(filter noipv6,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DNO_IPV6 + COPTS += -DNO_IPV6 endif ifneq (,$(filter notftp,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DNO_TFTP + COPTS += -DNO_TFTP endif ifneq (,$(filter nodhcp,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DNO_DHCP + COPTS += -DNO_DHCP endif ifneq (,$(filter noscript,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DNO_SCRIPT + COPTS += -DNO_SCRIPT endif ifneq (,$(filter nortc,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DHAVE_BROKEN_RTC -endif - -ifneq (,$(filter noi18n,$(DEB_BUILD_OPTIONS))) - TARGET = install -endif - -ifneq (,$(filter uselua,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DHAVE_LUASCRIPT + COPTS += -DHAVE_BROKEN_RTC endif ifeq (,$(filter nodnssec,$(DEB_BUILD_OPTIONS))) - DEB_COPTS += -DHAVE_DNSSEC + COPTS += -DHAVE_DNSSEC endif -ifeq ($(DEB_HOST_ARCH_OS),kfreebsd) - # For strlcpy in FreeBSD - LIBS += $(shell ${PKG_CONFIG} --libs libbsd-overlay) - CFLAGS += $(shell ${PKG_CONFIG} --cflags libbsd-overlay) -endif -define build_tree - rm -rf $1 - install -m 755 \ - -d $1/DEBIAN \ - -d $1/etc/dbus-1/system.d \ - -d $1/usr/share/doc/$(package) \ - -d $1/usr/share/doc/$(package)/examples \ - -d $1/usr/share/$(package) \ - -d $1/var/lib/misc - -endef - -define add_docs -# Need to remove paypal links in Debian Package for policy reasons. - sed -e /\Donations/Q -e /icon.png/d doc.html -e /favicon.ico/d >$1/usr/share/doc/$(package)/doc.html - echo "" >>$1/usr/share/doc/$(package)/doc.html - install -m 644 setup.html $1/usr/share/doc/$(package)/. - install -m 644 dnsmasq.conf.example $1/usr/share/doc/$(package)/examples/. - install -m 644 FAQ $1/usr/share/doc/$(package)/. - gzip -9n $1/usr/share/doc/$(package)/FAQ - install -m 644 CHANGELOG $1/usr/share/doc/$(package)/changelog - gzip -9n $1/usr/share/doc/$(package)/changelog - install -m 644 CHANGELOG.archive $1/usr/share/doc/$(package)/changelog.archive - gzip -9n $1/usr/share/doc/$(package)/changelog.archive - install -m 644 dbus/DBus-interface $1/usr/share/doc/$(package)/. - gzip -9n $1/usr/share/doc/$(package)/DBus-interface - install -m 644 debian/systemd_howto $1/usr/share/doc/$(package)/. - gzip -9n $1/usr/share/doc/$(package)/systemd_howto - gzip -9n $1/usr/share/man/man8/dnsmasq.8 - for f in $1/usr/share/man/*; do \ - if [ -f $$f/man8/dnsmasq.8 ]; then \ - gzip -9n $$f/man8/dnsmasq.8 ; \ - fi \ - done -endef - -define add_files - install -m 644 trust-anchors.conf $1/usr/share/$(package)/. - install -m 644 debian/dnsmasq-base.conffiles $1/DEBIAN/conffiles - install -m 755 debian/dnsmasq-base.postinst $1/DEBIAN/postinst - install -m 755 debian/dnsmasq-base.postrm $1/DEBIAN/postrm - install -m 644 debian/changelog $1/usr/share/doc/$(package)/changelog.Debian - gzip -9n $1/usr/share/doc/$(package)/changelog.Debian - install -m 644 debian/readme $1/usr/share/doc/$(package)/README.Debian - install -m 644 debian/copyright $1/usr/share/doc/$(package)/copyright - install -m 644 debian/dbus.conf $1/etc/dbus-1/system.d/dnsmasq.conf -endef - -clean: - $(checkdir) - make BUILDDIR=debian/build/no-lua clean - make BUILDDIR=debian/build/lua clean - make -C contrib/lease-tools clean - rm -rf debian/build debian/trees debian/*~ debian/files debian/substvars debian/utils-substvars - -binary-indep: checkroot - $(checkdir) - rm -rf debian/trees/daemon - install -m 755 \ - -d debian/trees/daemon/DEBIAN \ - -d debian/trees/daemon/usr/share/doc/dnsmasq \ - -d debian/trees/daemon/etc/init.d \ - -d debian/trees/daemon/etc/dnsmasq.d \ - -d debian/trees/daemon/etc/resolvconf/update.d \ - -d debian/trees/daemon/usr/lib/resolvconf/dpkg-event.d \ - -d debian/trees/daemon/usr/share/dnsmasq \ - -d debian/trees/daemon/usr/share/doc/dnsmasq \ - -d debian/trees/daemon/etc/default \ - -d debian/trees/daemon/lib/systemd/system \ - -d debian/trees/daemon/usr/lib/tmpfiles.d \ - -d debian/trees/daemon/etc/insserv.conf.d - install -m 644 debian/conffiles debian/trees/daemon/DEBIAN - install -m 755 debian/postinst debian/postrm debian/preinst debian/prerm debian/trees/daemon/DEBIAN - if ! dpkg-vendor --derives-from Ubuntu; then \ - rm -f debian/dnsmasq.postinst.debhelper debian/dnsmasq.postrm.debhelper; \ - dh_runit -pdnsmasq -Pdebian/trees/daemon; \ - cat debian/dnsmasq.postinst.debhelper >> debian/trees/daemon/DEBIAN/postinst; \ - cat debian/dnsmasq.postrm.debhelper >> debian/trees/daemon/DEBIAN/postrm; \ - cd debian/trees/daemon && find etc/sv -type f -printf '/%p\n' >>DEBIAN/conffiles; \ +%: + # Ubuntu and derivates do not support runit, see + # https://bugs.debian.org/960401 for details. + if dpkg-vendor --derives-from Ubuntu; then \ + dh $@; \ + else \ + dh $@ --with runit; \ fi - install -m 755 debian/init debian/trees/daemon/etc/init.d/dnsmasq - install -m 755 debian/resolvconf debian/trees/daemon/etc/resolvconf/update.d/dnsmasq - install -m 755 debian/resolvconf-package debian/trees/daemon/usr/lib/resolvconf/dpkg-event.d/dnsmasq - install -m 644 debian/installed-marker debian/trees/daemon/usr/share/dnsmasq - install -m 644 debian/default debian/trees/daemon/etc/default/dnsmasq - install -m 644 dnsmasq.conf.example debian/trees/daemon/etc/dnsmasq.conf - install -m 644 debian/readme.dnsmasq.d debian/trees/daemon/etc/dnsmasq.d/README - install -m 644 debian/systemd.service debian/trees/daemon/lib/systemd/system/dnsmasq.service - install -m 644 debian/systemd@.service debian/trees/daemon/lib/systemd/system/dnsmasq@.service - install -m 644 debian/tmpfiles.conf debian/trees/daemon/usr/lib/tmpfiles.d/dnsmasq.conf - install -m 644 debian/insserv debian/trees/daemon/etc/insserv.conf.d/dnsmasq - install -m 644 debian/copyright debian/trees/daemon/usr/share/doc/dnsmasq/copyright - install -m 644 debian/changelog debian/trees/daemon/usr/share/doc/dnsmasq/changelog.Debian - gzip -9n debian/trees/daemon/usr/share/doc/dnsmasq/changelog.Debian - cd debian/trees/daemon && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums - dpkg-gencontrol $(PACKAGE_VERSION) -Tdebian/dnsmasq.substvars -pdnsmasq -Pdebian/trees/daemon - find debian/trees/daemon -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)' - chown -R root.root debian/trees/daemon - chmod -R g-ws debian/trees/daemon - dpkg --build debian/trees/daemon .. -binary-arch: checkroot - $(call build_tree,debian/trees/base) - make $(TARGET) BUILDDIR=debian/build/no-lua PREFIX=/usr DESTDIR=`pwd`/debian/trees/base CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="$(DEB_COPTS)" CC=$(CC) PKG_CONFIG=$(PKG_CONFIG) LIBS="$(LIBS)" +# Upstream builds and installs in one go, so do we. +override_dh_auto_build: + +override_dh_auto_install: + dh_auto_build -p dnsmasq-base --no-parallel -- install-i18n \ + BUILDDIR=debian/auto-build/dnsmasq-base \ + DESTDIR=$(CURDIR)/debian/dnsmasq-base \ + PREFIX=$(PREFIX) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + COPTS="$(COPTS)" + dh_auto_build -p dnsmasq-base-lua --no-parallel -- install-i18n \ + BUILDDIR=debian/auto-build/dnsmasq-base-lua \ + DESTDIR=$(CURDIR)/debian/dnsmasq-base-lua \ + PREFIX=$(PREFIX) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + COPTS="$(COPTS) -DHAVE_LUASCRIPT" + dh_auto_build -p dnsmasq-utils -D contrib/lease-tools + +override_dh_auto_clean: + dh_auto_clean -p dnsmasq-base -- \ + BUILDDIR=debian/auto-build/dnsmasq-base + dh_auto_clean -p dnsmasq-base-lua -- \ + BUILDDIR=debian/auto-build/dnsmasq-base-lua + rm -rf debian/auto-build + dh_auto_clean -p dnsmasq-utils -D contrib/lease-tools + +override_dh_install: + dh_install -p dnsmasq-utils --sourcedir=contrib/lease-tools + dh_install --remaining-packages + +# If 'nodoc' is absent from DEB_BUILD_OPTIONS, Correct name or location of +# some doc files. +# We would prefer do this via dh-exec if it would support dh_installdocs. ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS))) - $(call add_docs,debian/trees/base) -else - rm -rf debian/trees/base/usr/share/man -endif - $(call add_files,debian/trees/base) -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/base/usr/sbin/dnsmasq -endif - cd debian/trees/base && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums - dpkg-shlibdeps --warnings=1 debian/trees/base/usr/sbin/dnsmasq - dpkg-gencontrol $(PACKAGE_VERSION) -pdnsmasq-base -Pdebian/trees/base - find debian/trees/base -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)' - chown -R root.root debian/trees/base - chmod -R g-ws debian/trees/base - dpkg --build debian/trees/base .. - - $(call build_tree,debian/trees/lua-base) - make $(TARGET) BUILDDIR=debian/build/lua PREFIX=/usr DESTDIR=`pwd`/debian/trees/lua-base CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="-DHAVE_LUASCRIPT $(DEB_COPTS)" CC=$(CC) PKG_CONFIG=$(PKG_CONFIG) LIBS="$(LIBS)" -ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS))) - $(call add_docs,debian/trees/lua-base) -else - rm -rf debian/trees/lua-base/usr/share/man -endif - $(call add_files,debian/trees/lua-base) - install -m 755 -d debian/trees/lua-base/usr/share/lintian/overrides - install -m 644 debian/lintian-override debian/trees/lua-base/usr/share/lintian/overrides/dnsmasq-base-lua -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/lua-base/usr/sbin/dnsmasq -endif - ln -s $(package) debian/trees/lua-base/usr/share/doc/dnsmasq-base-lua - cd debian/trees/lua-base && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums - dpkg-shlibdeps --warnings=1 debian/trees/lua-base/usr/sbin/dnsmasq - dpkg-gencontrol $(PACKAGE_VERSION) -pdnsmasq-base-lua -Pdebian/trees/lua-base - find debian/trees/lua-base -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)' - chown -R root.root debian/trees/lua-base - chmod -R g-ws debian/trees/lua-base - dpkg --build debian/trees/lua-base .. - - -ifeq ($(DEB_HOST_ARCH_OS),linux) - rm -rf debian/trees/utils - install -m 755 -d debian/trees/utils/DEBIAN \ - -d debian/trees/utils/usr/bin \ - -d debian/trees/utils/usr/share/doc/dnsmasq-utils -ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS))) - install -m 755 -d debian/trees/utils/usr/share/man/man1 -endif - make -C contrib/lease-tools PREFIX=/usr DESTDIR=`pwd`/debian/trees/utils CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="$(DEB_COPTS)" CC=$(CC) PKG_CONFIG=$(PKG_CONFIG) LIBS="$(LIBS)" - install -m 755 contrib/lease-tools/dhcp_release debian/trees/utils/usr/bin/dhcp_release - install -m 755 contrib/lease-tools/dhcp_release6 debian/trees/utils/usr/bin/dhcp_release6 - install -m 755 contrib/lease-tools/dhcp_lease_time debian/trees/utils/usr/bin/dhcp_lease_time -ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS))) - install -m 644 contrib/lease-tools/dhcp_release.1 debian/trees/utils/usr/share/man/man1/dhcp_release.1 - gzip -9n debian/trees/utils/usr/share/man/man1/dhcp_release.1 - install -m 644 contrib/lease-tools/dhcp_release6.1 debian/trees/utils/usr/share/man/man1/dhcp_release6.1 - gzip -9n debian/trees/utils/usr/share/man/man1/dhcp_release6.1 - install -m 644 contrib/lease-tools/dhcp_lease_time.1 debian/trees/utils/usr/share/man/man1/dhcp_lease_time.1 - gzip -9n debian/trees/utils/usr/share/man/man1/dhcp_lease_time.1 -endif - install -m 644 debian/copyright debian/trees/utils/usr/share/doc/dnsmasq-utils/copyright - install -m 644 debian/changelog debian/trees/utils/usr/share/doc/dnsmasq-utils/changelog.Debian - gzip -9n debian/trees/utils/usr/share/doc/dnsmasq-utils/changelog.Debian -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/utils/usr/bin/dhcp_release - $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/utils/usr/bin/dhcp_release6 - $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/utils/usr/bin/dhcp_lease_time -endif - cd debian/trees/utils && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums - dpkg-shlibdeps -Tdebian/utils-substvars debian/trees/utils/usr/bin/dhcp_release debian/trees/utils/usr/bin/dhcp_release6 debian/trees/utils/usr/bin/dhcp_lease_time - dpkg-gencontrol $(PACKAGE_VERSION) -Tdebian/utils-substvars -pdnsmasq-utils -Pdebian/trees/utils - find debian/trees/utils -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)' - chown -R root.root debian/trees/utils - chmod -R g-ws debian/trees/utils - dpkg --build debian/trees/utils .. +execute_after_dh_installdocs: + for d in $(CURDIR)/debian/dnsmasq-base*/usr/share/doc/dnsmasq-base*; do \ + cd $$d; \ + mv readme README.Debian; \ + mv CHANGELOG.archive changelog.archive; \ + mkdir examples; \ + mv dnsmasq.conf.example examples/; \ + done endif -define checkdir - test -f Makefile -a -f debian/rules -endef - -# Below here is fairly generic really - -binary: binary-arch binary-indep - -build: -build-arch: -build-indep: - -checkroot: - test root = "`whoami`" - -.PHONY: binary binary-arch binary-indep clean checkroot - - +# If 'nodoc' is present in DEB_BUILD_OPTIONS, drop the man pages already +# installed by the upstream build script. Then, let dh_installman do what +# else needs doing. +override_dh_installman: +ifneq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS))) + rm -rf debian/dnsmasq-base*/usr/share/man +endif + dh_installman -p dnsmasq-utils --sourcedir=contrib/lease-tools + dh_installman --remaining-packages diff --git a/debian/source/format b/debian/source/format index d3827e7..163aaf8 100644 --- a/debian/source/format +++ b/debian/source/format @@ -1 +1 @@ -1.0 +3.0 (quilt) diff --git a/debian/systemd-helper b/debian/systemd-helper new file mode 100755 index 0000000..c4f52e2 --- /dev/null +++ b/debian/systemd-helper @@ -0,0 +1,34 @@ +#!/bin/sh + +. /usr/share/dnsmasq/init-system-common + +case "$1" in + checkconfig) + checkconfig + ;; + start-resolvconf) + start_resolvconf + ;; + stop-resolvconf) + stop_resolvconf + ;; + exec) + # /run may be volatile, so we need to ensure that + # /run/dnsmasq exists here as well as in postinst + if [ ! -d /run/dnsmasq ]; then + mkdir /run/dnsmasq || { [ -d /run/dnsmasq ] || exit 2 ; } + chown dnsmasq:nogroup /run/dnsmasq || exit 2 + fi + exec ${DAEMON} -x /run/dnsmasq/${NAME}${INSTANCE:+.${INSTANCE}}.pid \ + ${MAILHOSTNAME:+ -m ${MAILHOSTNAME}} \ + ${MAILTARGET:+ -t ${MAILTARGET}} \ + ${DNSMASQ_USER:+ -u ${DNSMASQ_USER}} \ + ${DNSMASQ_INTERFACES:+ ${DNSMASQ_INTERFACES}} \ + ${DHCP_LEASE:+ -l ${DHCP_LEASE}} \ + ${DOMAIN_SUFFIX:+ -s ${DOMAIN_SUFFIX}} \ + ${RESOLV_CONF:+ -r ${RESOLV_CONF}} \ + ${CACHESIZE:+ -c ${CACHESIZE}} \ + ${CONFIG_DIR:+ -7 ${CONFIG_DIR}} \ + ${DNSMASQ_OPTS:+ ${DNSMASQ_OPTS}} + ;; +esac diff --git a/debian/tests/compile-time-options b/debian/tests/compile-time-options new file mode 100755 index 0000000..494d9ca --- /dev/null +++ b/debian/tests/compile-time-options @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +. debian/tests/functions + +check_compile_time_options diff --git a/debian/tests/compile-time-options+lua b/debian/tests/compile-time-options+lua new file mode 100755 index 0000000..0d8f1a4 --- /dev/null +++ b/debian/tests/compile-time-options+lua @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +. debian/tests/functions + +check_compile_time_options +lua diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..cb156f7 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,39 @@ +Tests: compile-time-options +Depends: dnsmasq, + dnsmasq-base, +Restrictions: needs-root, + isolation-container, + +Tests: compile-time-options+lua +Depends: dnsmasq, + dnsmasq-base-lua, +Restrictions: needs-root, + isolation-container, + +Tests: get-address+query-dns+check-utils +Depends: bind9, + bind9-dnsutils, + dnsmasq, + dnsmasq-base, + dnsmasq-utils, +Restrictions: needs-root, + allow-stderr, + isolation-container, + +Tests: get-address+query-dns+lua+alt +Depends: bind9, + bind9-dnsutils, + dnsmasq, + dnsmasq-base-lua, +Restrictions: needs-root, + allow-stderr, + isolation-container, + +Tests: get-address+query-dns+sysv+alt +Depends: bind9, + bind9-dnsutils, + dnsmasq, + dnsmasq-base, +Restrictions: needs-root, + allow-stderr, + isolation-container, diff --git a/debian/tests/functions b/debian/tests/functions new file mode 100644 index 0000000..8823948 --- /dev/null +++ b/debian/tests/functions @@ -0,0 +1,151 @@ +# -*- shell-script -*- + +FUNCTIONS_DIR="debian/tests/functions.d" + +match_or_exit () { + file_to_match="$1" + pattern_file="$2" + + while read line_to_match <&3 && read pattern_line <&4 ; do + if [ "${line_to_match##$pattern_line}" ]; then + echo '!!! MISMATCH !!!' >&2 + echo "Line: ${line_to_match}" >&2 + echo "Pattern: ${pattern_line}" >&2 + exit 1 + fi; + done 3<"${file_to_match}" 4<"${pattern_file}" +} + +linecount () { + wc -l $1 | cut -d' ' -f1 +} + +error_exit () { + echo "ERROR: $1" + exit 1 +} + +stop_dnsmasq_bind_networking () { + systemctl stop dnsmasq.service + systemctl stop named.service + systemctl stop networking.service +} + +configure_and_start_networking () { + #Add interfaces needed for the test + cat ${FUNCTIONS_DIR}/add-to.interfaces >> /etc/network/interfaces + systemctl start networking.service +} + +configure_and_start_bind () { + cp ${FUNCTIONS_DIR}/db.autopkg.test /etc/bind/ + cat ${FUNCTIONS_DIR}/add-to.named.conf.local >> /etc/bind/named.conf.local + cp ${FUNCTIONS_DIR}/named.conf.options /etc/bind/named.conf.options + systemctl start named.service +} + +configure_and_start_dnsmasq () { + alt_mode=0 + lua_mode=0 + sysv_mode=0 + service='dnsmasq.service' + sysv_param2='' + conf_dir='/etc/dnsmasq.d' + + while [ -n "$1" ]; do + case "$1" in + alt|lua|sysv) eval ${1}_mode=1 ;; + *) error_exit "configure_and_start_dnsmasq(): invalid flag '$1'" + esac + shift + done + + if [ ${alt_mode} -eq 1 ]; then + cp ${FUNCTIONS_DIR}/dnsmasq.alt-autopkgtest.default /etc/default/dnsmasq.alt + cp /etc/dnsmasq.conf /etc/dnsmasq.alt.conf + mkdir /etc/dnsmasq.alt.d + service='dnsmasq@alt.service' + sysv_param2='alt' + conf_dir='/etc/dnsmasq.alt.d' + fi + + cp ${FUNCTIONS_DIR}/dnsmasq-autopkgtest.conf "${conf_dir}" + + if [ ${lua_mode} -eq 1 ]; then + mkdir -p /usr/local/share/dnsmasq + cp ${FUNCTIONS_DIR}/log.lua /usr/local/share/dnsmasq/ + echo "dhcp-luascript=/usr/local/share/dnsmasq/log.lua\n" \ + >>"${conf_dir}"/dnsmasq-autopkgtest.conf + fi + + if [ ${sysv_mode} -eq 1 ]; then + SYSTEMCTL_SKIP_REDIRECT=1 /etc/init.d/dnsmasq start "${sysv_param2}" + else + systemctl enable "${service}" + systemctl start "${service}" + fi +} + +check_compile_time_options () { + journalctl -b -u dnsmasq + echo ~~~ Check compile time options... + journalctl -b -u dnsmasq -g '[a-z]+: ' --output cat >options.msg + cat options.msg + match_or_exit options.msg ${FUNCTIONS_DIR}/options${1}.patterns +} + +get_address_on_veth1_and_check_the_result () { + echo ~~~ Get an address on veth1 and check the result... + ip netns exec clientnet ifup veth1 + ip netns exec clientnet ip addr show dev veth1 >ip-addr.out 2>&1 + cat ip-addr.out + match_or_exit ip-addr.out ${FUNCTIONS_DIR}/ip-addr.patterns +} + +query_test_zone_records_and_check_the_result () { + echo ~~~ Query some test zone records and check the result... + ip netns exec clientnet dig +short SOA autopkg.test >dig.out 2>&1 + ip netns exec clientnet dig +short NS autopkg.test >>dig.out 2>&1 + ip netns exec clientnet dig +short A ns.autopkg.test >>dig.out 2>&1 + ip netns exec clientnet dig +short A dhcp3.autopkg.test >>dig.out 2>&1 + cat dig.out + if [ `linecount dig.out` -ne `linecount ${FUNCTIONS_DIR}/dig.patterns` ] ; then + error_exit 'empty or unexpected output' + fi + match_or_exit dig.out ${FUNCTIONS_DIR}/dig.patterns +} + +check_utils () { + #Test dhcp_lease_time and dhcp_release + leases_file='/var/lib/misc/dnsmasq.leases' + client_ip_address=`cut -d' ' -f3 $leases_file` + client_mac_address=`cut -d' ' -f2 $leases_file` + echo ~~~ Test dhcp_lease_time... + if ! dhcp_lease_time $client_ip_address; then + error_exit "'dhcp_lease_time $client_ip_address' failed with return code $?" + else + #Add \n to dhcp_lease_time's output + echo '' + fi + echo ~~~ Test dhcp_release... + cat $leases_file + if ! dhcp_release veth0 $client_ip_address 1-$client_mac_address; then + error_exit "'dhcp_release veth0 $client_ip_address 1-$client_mac_address' failed with return code $?0" + fi + if [ -n "`cat $leases_file`" ]; then + cat $leases_file + error_exit "$leases_file is not empty" + fi +} + +check_lua_log () { + log_file='/var/log/dnsmasq-lua.log' + echo ~~~ Check log file generated by lua script + ls -l ${log_file} + if [ -s ${log_file} ]; then + cat ${log_file} + match_or_exit ${log_file} ${FUNCTIONS_DIR}/log.patterns + else + error_exit "${log_file} is empty" + fi +} diff --git a/debian/tests/functions.d/add-to.interfaces b/debian/tests/functions.d/add-to.interfaces new file mode 100644 index 0000000..f1d6b08 --- /dev/null +++ b/debian/tests/functions.d/add-to.interfaces @@ -0,0 +1,18 @@ + +auto dummy0 +iface dummy0 inet static + pre-up ip link add dummy0 type dummy + address 192.168.141.1 + netmask 255.255.255.248 + post-down ip link del dummy0 + +auto veth0 +iface veth0 inet static + pre-up ip netns add clientnet + pre-up ip link add veth0 type veth peer veth1 netns clientnet + address 192.168.142.1 + netmask 255.255.255.248 + post-down ip link del veth0 + post-down ip netns del clientnet + +iface veth1 inet dhcp diff --git a/debian/tests/functions.d/add-to.named.conf.local b/debian/tests/functions.d/add-to.named.conf.local new file mode 100644 index 0000000..c83bf83 --- /dev/null +++ b/debian/tests/functions.d/add-to.named.conf.local @@ -0,0 +1,2 @@ +zone "autopkg.test" { type master; file "/etc/bind/db.autopkg.test"; }; + diff --git a/debian/tests/functions.d/db.autopkg.test b/debian/tests/functions.d/db.autopkg.test new file mode 100644 index 0000000..e5a0682 --- /dev/null +++ b/debian/tests/functions.d/db.autopkg.test @@ -0,0 +1,18 @@ +$TTL 604800 +@ IN SOA ns.autopkg.test. hostmaster.autopkg.test. ( + 2 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 300 ) ; Negative Cache TTL +; +@ IN NS ns +ns IN A 192.168.141.1 +host IN A 192.168.142.1 +dhcp0 IN A 192.168.142.2 +dhcp1 IN A 192.168.142.3 +dhcp2 IN A 192.168.142.4 +dhcp3 IN A 192.168.142.5 +dhcp4 IN A 192.168.142.6 +brdcst IN A 192.168.142.7 + diff --git a/debian/tests/functions.d/dig.patterns b/debian/tests/functions.d/dig.patterns new file mode 100644 index 0000000..9ecd865 --- /dev/null +++ b/debian/tests/functions.d/dig.patterns @@ -0,0 +1,4 @@ +ns.autopkg.test. hostmaster.autopkg.test. 2 604800 86400 2419200 300 +ns.autopkg.test. +192.168.141.1 +192.168.142.5 diff --git a/debian/tests/functions.d/dnsmasq-autopkgtest.conf b/debian/tests/functions.d/dnsmasq-autopkgtest.conf new file mode 100644 index 0000000..316778d --- /dev/null +++ b/debian/tests/functions.d/dnsmasq-autopkgtest.conf @@ -0,0 +1,6 @@ +no-resolv +server=/autopkg.test/192.168.141.1 +listen-address=192.168.142.1,127.0.0.1 +bind-interfaces +dhcp-range=192.168.142.2,192.168.142.6 +dhcp-authoritative diff --git a/debian/tests/functions.d/dnsmasq.alt-autopkgtest.default b/debian/tests/functions.d/dnsmasq.alt-autopkgtest.default new file mode 100644 index 0000000..cb2c3df --- /dev/null +++ b/debian/tests/functions.d/dnsmasq.alt-autopkgtest.default @@ -0,0 +1,42 @@ +# This file has six functions: +# 1) to completely disable starting this dnsmasq instance +# 2) to set DOMAIN_SUFFIX by running `dnsdomainname` +# 3) to select an alternative config file +# by setting DNSMASQ_OPTS to --conf-file= +# 4) to tell dnsmasq to read the files in /etc/dnsmasq.d for +# more configuration variables. +# 5) to stop the resolvconf package from controlling dnsmasq's +# idea of which upstream nameservers to use. +# 6) to avoid using this dnsmasq instance as the system's default resolver +# by setting DNSMASQ_EXCEPT="lo" +# For upgraders from very old versions, all the shell variables set +# here in previous versions are still honored by the init script +# so if you just keep your old version of this file nothing will break. + +#DOMAIN_SUFFIX=`dnsdomainname` +DNSMASQ_OPTS="--conf-file=/etc/dnsmasq.alt.conf" + +# The dnsmasq daemon is run by default conforming to the Debian Policy. +# To disable the service, +# for SYSV init, use "update-rc.d dnsmasq disable", +# for systemd, use "systemctl disable dnsmasq". + +# By default search this drop directory for configuration options. +# Libvirt leaves a file here to make the system dnsmasq play nice. +# Comment out this line if you don't want this. The dpkg-* are file +# endings which cause dnsmasq to skip that file. This avoids pulling +# in backups made by dpkg. +CONFIG_DIR=/etc/dnsmasq.alt.d,.dpkg-dist,.dpkg-old,.dpkg-new + +# If the resolvconf package is installed, dnsmasq will use its output +# rather than the contents of /etc/resolv.conf to find upstream +# nameservers. Uncommenting this line inhibits this behaviour. +# Note that including a "resolv-file=" line in +# /etc/dnsmasq.conf is not enough to override resolvconf if it is +# installed: the line below must be uncommented. +#IGNORE_RESOLVCONF=yes + +# If the resolvconf package is installed, dnsmasq will tell resolvconf +# to use dnsmasq under 127.0.0.1 as the system's default resolver. +# Uncommenting this line inhibits this behaviour. +#DNSMASQ_EXCEPT="lo" diff --git a/debian/tests/functions.d/ip-addr.patterns b/debian/tests/functions.d/ip-addr.patterns new file mode 100644 index 0000000..599bf63 --- /dev/null +++ b/debian/tests/functions.d/ip-addr.patterns @@ -0,0 +1,6 @@ +?: veth1@if?: mtu 1500 qdisc noqueue state UP group default qlen 1000 + link/ether ??:??:??:??:??:?? brd ff:ff:ff:ff:ff:ff link-netnsid 0 + inet 192.168.142.?/29 brd 192.168.142.7 scope global dynamic veth1 + valid_lft 3[56][0-9][0-9]sec preferred_lft 3[56][0-9][0-9]sec + inet6 fe80::*:*:*:*/64 scope link* + valid_lft forever preferred_lft forever diff --git a/debian/tests/functions.d/log.lua b/debian/tests/functions.d/log.lua new file mode 100644 index 0000000..f9a1b30 --- /dev/null +++ b/debian/tests/functions.d/log.lua @@ -0,0 +1,40 @@ +-- Lua script logging calls from dnsmasq + +-- Open the log file in append mode +logfile = assert(io.open("/var/log/dnsmasq-lua.log", "a")) + +-- Prepend date and time to a string and write the result to the log file +function __log(str) + logfile:write(os.date("!%FT%TZ ")..str.."\n") +end + +-- flush the log file +function __flush_log() + logfile:flush() +end + +-- Log a call to init() +function init() + __log("initialising") + __flush_log() +end + +-- Log a call to shutdown() +function shutdown() + __log("shutting down") + __flush_log() +end + +-- Log a call to lease() including all arguments +function lease(operation, params) + local lines = {} + __log(operation.." lease") + for key,value in pairs(params) do + table.insert(lines, key..": "..value) + end + table.sort(lines) + for index,line in ipairs(lines) do + __log("\t"..line) + end + __flush_log() +end diff --git a/debian/tests/functions.d/log.patterns b/debian/tests/functions.d/log.patterns new file mode 100644 index 0000000..969c392 --- /dev/null +++ b/debian/tests/functions.d/log.patterns @@ -0,0 +1,10 @@ +????-??-??T??:??:??Z initialising +????-??-??T??:??:??Z add lease +????-??-??T??:??:??Z client_id: ??:??:??:??:??:??:??:??:??:??:??:??:??:??:??:??:??:??:?? +????-??-??T??:??:??Z data_missing: 1.0 +????-??-??T??:??:??Z hostname: ?* +????-??-??T??:??:??Z interface: veth0 +????-??-??T??:??:??Z ip_address: 192.168.142.[2-6] +????-??-??T??:??:??Z lease_expires: [1-9]* +????-??-??T??:??:??Z mac_address: ??:??:??:??:??:?? +????-??-??T??:??:??Z time_remaining: 3600.0 diff --git a/debian/tests/functions.d/named.conf.options b/debian/tests/functions.d/named.conf.options new file mode 100644 index 0000000..3780469 --- /dev/null +++ b/debian/tests/functions.d/named.conf.options @@ -0,0 +1,6 @@ +options { + directory "/var/cache/bind"; + listen-on { 192.168.141.1; }; + recursion no; +}; + diff --git a/debian/tests/functions.d/options+lua.patterns b/debian/tests/functions.d/options+lua.patterns new file mode 100644 index 0000000..3149025 --- /dev/null +++ b/debian/tests/functions.d/options+lua.patterns @@ -0,0 +1 @@ +*: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC loop-detect inotify dumpfile diff --git a/debian/tests/functions.d/options.patterns b/debian/tests/functions.d/options.patterns new file mode 100644 index 0000000..9bc41de --- /dev/null +++ b/debian/tests/functions.d/options.patterns @@ -0,0 +1 @@ +*: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC loop-detect inotify dumpfile diff --git a/debian/tests/get-address+query-dns+check-utils b/debian/tests/get-address+query-dns+check-utils new file mode 100755 index 0000000..ac75208 --- /dev/null +++ b/debian/tests/get-address+query-dns+check-utils @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +. debian/tests/functions + +stop_dnsmasq_bind_networking +configure_and_start_networking +configure_and_start_bind +configure_and_start_dnsmasq + +get_address_on_veth1_and_check_the_result + +query_test_zone_records_and_check_the_result + +check_utils + +#Done +echo Looks good. diff --git a/debian/tests/get-address+query-dns+lua+alt b/debian/tests/get-address+query-dns+lua+alt new file mode 100755 index 0000000..dc92391 --- /dev/null +++ b/debian/tests/get-address+query-dns+lua+alt @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +. debian/tests/functions + +stop_dnsmasq_bind_networking +configure_and_start_networking +configure_and_start_bind +configure_and_start_dnsmasq lua alt + +get_address_on_veth1_and_check_the_result + +query_test_zone_records_and_check_the_result + +check_lua_log + +#Done +echo Looks good. diff --git a/debian/tests/get-address+query-dns+sysv+alt b/debian/tests/get-address+query-dns+sysv+alt new file mode 100755 index 0000000..46d5ae5 --- /dev/null +++ b/debian/tests/get-address+query-dns+sysv+alt @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +. debian/tests/functions + +stop_dnsmasq_bind_networking +configure_and_start_networking +configure_and_start_bind +configure_and_start_dnsmasq sysv alt + +get_address_on_veth1_and_check_the_result + +query_test_zone_records_and_check_the_result + +#Done +echo Looks good. +SYSTEMCTL_SKIP_REDIRECT=1 /etc/init.d/dnsmasq stop alt diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..c3993ad --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,9 @@ +Cite-As: dnsmasq +Contact: simon@thekelleys.org.uk +Security-Contact: https://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss +Repository: https://thekelleys.org.uk/git/dnsmasq.git +Repository-Browse: https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=summary +Changelog: https://thekelleys.org.uk/dnsmasq/CHANGELOG +Documentation: https://thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html +FAQ: https://thekelleys.org.uk/dnsmasq/docs/FAQ +Bug-Submit: https://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc new file mode 100644 index 0000000..1dd07e0 --- /dev/null +++ b/debian/upstream/signing-key.asc @@ -0,0 +1,63 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFMbjUMBEACsU1Xk8+uu/EsGVJTh9Tn31C2e0ycd0voBVT7cTdtXpzeiNR+o +/zUAi95ds7FiecpZJp1nRO4vNzvaaAPZhFsFVLzZYyIVABgTXsskT88xbZvzb4W5 +KKRWVhoTQxVDgj1+dXLUXULTB6rg02WEhqnix/qf/zFdM9I4/3pRHJn9k+3XKygR +on+nYtljfn3AKBelCo1y28istC6wCncoH11b/qdQtlfxVXaJY4HF27V0MqFFmDMg +cuhOHR7DnhymeDh7GmLfTHJ4LUFG+TecqCjiYhyWcuv2wuSb0EPXUKHJQVViQ8qg +KyPm1ly6uFP0CYdVavO7/oJwKFBIChECrj7BQ4GsImMHeuSzfWno7qy6Fxoxx2+g +0F9cdXWvcxFDGPQsL5vXp8KYNwBrzmijRzQ2ZAnrbG+ilFCkJCbxXcrhzpd4tKwE +0dgcyPL1Ma/lrznhL4ZuOzjVMgLNne7WiPpBNRqI1GoT0pUn6as4pU3En8B+K7zy +MLVfHvI1+iH45fP5bZwYSbXCa85v4+xqljYrzs9giaROEsXe/tsXvuc6JPCcmJXk +CUO3c3QVxqDFt9OYuTHIR8hqehDPLgFgzKqVuoAwMkhTf/zZNGlsy4jvKXQNcZ50 +uD4mWO3e+gykNW/OH+88IoCR0rgjQ6trMLOceZFnrtvxwRL//lMndGCTYQARAQAB +tB1TaW1vbiBLZWxsZXkgPHNya0BkZWJpYW4ub3JnPokCNwQTAQgAIQUCUyDDdAIb +AwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRAVzdpq4ZE1oqFGD/9LkbZFigc1 +jbZ5zIbmGkGvfniWp1mJhEcpgKNfb2MMiu1lKULccIvfVyIY5WDrrpoPnHLnhYA9 +OXHcwVADGBayoVOQgIePrMV0V24uYjUh9+9zGRwQrCLo0rl/l07GKH0S1dxDUeyh +JRYZGYEqW2+3XDJqIbfsDzSmPNCyjVvqSvkkt0YyuNbH0+cVEoJ1Q2HmfEhvgd4L +lHZDyhMVqKlKmlnCa8DmhwK+EyzJgLKITqjxBO3NOqPmYZlp8irLXyHAH1sDafaB +wRjV9cNX2TLTwn3wDdUmoAwMz1jopi/61A0kEglENYaa+NH/UnqfWOo7riXuZNwG +VP/F/KlMV+JdXMY34fcSIQMWk9cpxzhpuOJjwhoK7g/yq8q9578QXv4VR6ndH+Le +HDRrm2Ftnih/Ut8unqqDteMJnd3YxSK3Ep78WgVBL9y2Qo3CyKY6VSXlshWZokwy +rwVS8uLqIGAUzLwsKTYi1nmsDb7mQZqUbPBxYN2mrroD7Pr1/XAV8oNxw6l84nzf +zObEKvNZLFtWctNpFJXhWhtm/AeQBdkYKcMyTrwQt9Q0XMYKUGE05U+oAdtTvgCR +JLltqzmt5yMpTPncNmXVoA5YvEVdCU6/Gxpn3Aea8ckBmIqxxQY1QFdEr2nvxPNA +SbkvHDNDr9XUlKQDqjherurKBIBEiKCMnLQmU2ltb24gS2VsbGV5IDxzaW1vbkB0 +aGVrZWxsZXlzLm9yZy51az6JAjoEEwEIACQCGwMFCwkIBwMFFQoJCAsFFgIDAQAC +HgECF4AFAlMgw44CGQEACgkQFc3aauGRNaLaZg/+PR41J3P7omGv6XD+TiAXfJQo +R5RfzQoeLNUQEnir/XBulg45203cYHEurchEhSTn2f4WVtFgxJrgId7XGYdf8oIZ +IjBd82fpwdMwhbfcv/6iqzWL0+2vaPmBqE7iwDTatI888q5TyXppGe8L5/VjX0aB +vmVIPyEE9BFQas+vv5byUkU542FxPApGsv0W0P1pKabLl0F7ItPFPuaD0+K1kwBr +WbuGhBKMV9jGHB4qdX/21FBczgAf3J9yJ22vm6orCwwhptxde+DSn7vqZNjDtHGr +kUWDzKAQBy1g4BmTl6IoVgYKZXAVBGMtYUjS+80VV+QE9meVqmtX1aJJEnf0/BRd +v9CeD46hZArwXwi/AWFs300pEfzwcC+9T5xc3jlSdYdWxeQDV7XwK2VCOhxjFqTm ++ehP2Gh14Wfpc34jN9jMJ3OowxzN5iZxGYzkHLFhM+0IKEeWEjxRWOoJgV5PmNvG +7IBbzt8O9xo550h7JmXZVsfSpkFpzJPy0Puz1JeyH/niCeDwKkhEHXQTk/4O+EOD +RxruJbwIYGeO2lNfPn2Hcb1aHvSclx7GGOYDzI4jN0UcYroJpvHZU+0X2ClpCTAW +5IshgHkOkdUQ1c7S+5zPTeLbW+pxTlbWClA0NYMbSn68//i/DMstyBEwtTWYJLmg +5V3HWzRd/6BwKZfDSuu5Ag0EUyDDoQEQAMfQfa2tw3+OJFGMQEzLJSoXYN8/HnZE +gKNlcMuYzhheQLgu/MfcQJ7mnCIdn6xdPaalfLmYx63tM47/NGEM1+MSEvovPiRG +0OLxzSgwei9DiGeNEgsPTLXSZ5EVSXCM1+e9mT1ExT9aGLNnpCd6kIyWIcKCVMot ++XC70R9prWLeyKSh0FAZ0Pwv9i23osJVGOtJjND+WZ0uCeN29ocfN0b64yF4nPRc +9IbcmYIDgNU3RybK2Z/dupbthTisRjHRI3iX3/tiymXF3J0sSvsCluWIJWmyltS3 +Xyk/wfKVJz6OouiJjTj5utXVnCGptCDw+DCcj89vx1N0+0Dhm1cQcNZvXjMbVDTs +uU+eVpJbxU6y8N+nXpAXjEw4jMi3zNpqKtkyv2YpoqY5HhGLybgrY0zwSQOyMNf9 +lZ5J7znq5gEmiMXnG9OPEw7PPSvm6QfbHPY/jAOgxsu7Fme7k303D5KkyGkkbzQi +YyEtMZvbOMH/uECi2uHGB72qiGpEYjMtHhihaRCBl+0bY8sH83He690qNQHSdStj +aKXcecduE/v5iO0mOYIHdsEHhKlWsE1GXXVLofBr68UBhYV6/AGXko4Pr+dXLzau +N4kALDx6WltFu3qUvoD+uEoLq7IXULMo5Pyd7bO4qGQMKykaXTb5o6dqdu4GzWIU +w1fr9kLEmo29ABEBAAGJAh8EGAEIAAkFAlMgw6ECGwwACgkQFc3aauGRNaIjqA/+ +PXuaM6JHuudLycmB0iKAwyB5csOFGpF3b9FgMR68TC4jzi5J5hJZASl0cO/e0ytQ +srDUBbH74y+WaA4ldwBVYr0j/2hqzIjrnGMtgWeHFPLV3sKw8DGuNx1/cOoljJXz +i1WWSHIwDvaj3uZ9CwHt+4/abR7kdvMcnFhQVA4zuzZWFqpp+CDkkJNVwB9zxtAQ +wGTGF4cQ0IvTkhCo6DQhZZVTeyn+nBKxzzWijniWc0LyRsum03MxZ6E7UVIInCTj +dXTalnO8wColwIx5FV4nTMxdsKKgnIXmLexBdd03bW9TkowWf2C2XfDN+pDS8X3M +zO6zAyogqJhAiBFjnRzkOw0cw1VTL00o8uiWdMeu7OKOKeQbUilMAn4MweKB57mc +582kjeGmwdZgWFA4BJ2eiH7HwjxiynwMdZwQEBdOTNLbggHk3/mScF8U1KcJhjAF +f7Ne+Z0feG/8GgKl5aj3ucl821+dfpzB79lLo+kmd1qkDyDiUR5yN6P8l8k6IAUJ +z2KUe0BjtO6VFFw0xni05dkrXdfo7IO79ictHmEn+g3QO8ZLUGRwdtZ1cMhTkm7F +hH8Bdby0y4SoqluvHbri++cC91i1I3a92kHi/8O45rnLhVt+sOfxY1QnSIYh5OFw +GMqMCNDTEL7ESiFaFhSXkmzzVntlyvOBMlgz3IGh2hA= +=otES +-----END PGP PUBLIC KEY BLOCK----- diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..f1165fe --- /dev/null +++ b/debian/watch @@ -0,0 +1,5 @@ +version=4 +opts=\ +pgpmode=auto \ +https://thekelleys.org.uk/dnsmasq/ \ +dnsmasq-([\d.]+)@ARCHIVE_EXT@