about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2024-01-19 22:07:38 +0100
committerAlexander Barton <alex@barton.de>2024-01-20 16:43:54 +0100
commit47f9c6d0a0085da2fbcbdae0a9736b79a98cc527 (patch)
tree7b78e62494a00cababe3b6cdb1d80f7fa3976f2f
parentc65c3435e3107846a1995aea166e8241595fffa4 (diff)
downloadngircd-47f9c6d0a0085da2fbcbdae0a9736b79a98cc527.tar.gz
ngircd-47f9c6d0a0085da2fbcbdae0a9736b79a98cc527.zip
Update included Debian package configuration
- Rewrite using current dh_make.
- Standards-Version: 4.6.2.
- No longer build 3 different packages; only build "ngircd" which now
  includes support for IDENT, PAM (disabled in the ngircd.conf installed
  by the package), SSL (OpenSSL), ZLib and IPv6.
- Update package description accordingly.
- No longer install a SysV init file, only install ngircd.service unit.
-rw-r--r--Makefile.am4
-rw-r--r--contrib/Debian/.gitignore11
-rw-r--r--contrib/Debian/Makefile.am24
-rw-r--r--contrib/Debian/compat1
-rw-r--r--contrib/Debian/control103
-rw-r--r--contrib/Debian/copyright61
-rw-r--r--contrib/Debian/ngircd.default5
-rwxr-xr-xcontrib/Debian/ngircd.init176
-rw-r--r--contrib/Debian/ngircd.pam10
-rwxr-xr-xcontrib/Debian/ngircd.postinst21
-rwxr-xr-xcontrib/Debian/rules298
-rw-r--r--contrib/Debian/source/format2
-rw-r--r--contrib/Debian/watch10
13 files changed, 184 insertions, 542 deletions
diff --git a/Makefile.am b/Makefile.am
index 8e462bed..31affc24 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors
+# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 #
 # 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
@@ -36,7 +36,7 @@ rpm: distcheck
 
 deb:
 	[ -f debian/rules ] || ln -s contrib/Debian debian
-	dpkg-buildpackage -rfakeroot -i
+	dpkg-buildpackage --build=binary
 
 .PHONY: deb lint rpm srcdoc testsuite
 
diff --git a/contrib/Debian/.gitignore b/contrib/Debian/.gitignore
index 73c000d9..2b352d45 100644
--- a/contrib/Debian/.gitignore
+++ b/contrib/Debian/.gitignore
@@ -1,16 +1,7 @@
 *.log
 *.debhelper
 *.substvars
+debhelper-build-stamp
 files
 ngircd/
-ngircd-full/
 ngircd.service
-ngircd-full.default
-ngircd-full.init
-ngircd-full.postinst
-ngircd-full.service
-ngircd-full-dbg/
-ngircd-full-dbg.default
-ngircd-full-dbg.init
-ngircd-full-dbg.postinst
-ngircd-full-dbg.service
diff --git a/contrib/Debian/Makefile.am b/contrib/Debian/Makefile.am
index 2cd5277c..bbc715ff 100644
--- a/contrib/Debian/Makefile.am
+++ b/contrib/Debian/Makefile.am
@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2017 Alexander Barton (alex@barton.de) and Contributors
+# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
 #
 # 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
@@ -9,22 +9,22 @@
 # Please read the file COPYING, README and AUTHORS for more information.
 #
 
-EXTRA_DIST = rules changelog compat control copyright \
-	ngircd.init ngircd.default ngircd.pam ngircd.postinst \
+EXTRA_DIST = \
+	changelog \
+	control \
+	copyright \
+	ngircd.default \
+	ngircd.pam \
+	rules \
+	watch \
 	source/format
 
 maintainer-clean-local:
 	rm -f Makefile Makefile.in
 
 clean-local:
-	rm -f ngircd.postinst.debhelper ngircd.postrm.debhelper \
-	 ngircd.prerm.debhelper ngircd.substvars
-	rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \
-	 ngircd-full.prerm.debhelper ngircd-full.substvars
-	rm -f ngircd-full-dbg.postinst.debhelper \
-	 ngircd-full-dbg.postrm.debhelper ngircd-full-dbg.prerm.debhelper \
-	 ngircd-full-dbg.substvars
-	rm -rf ngircd ngircd-full ngircd-full-dbg
-	rm -f files
+	rm -f *.log *.debhelper *.substvars
+	rm -f debhelper-build-stamp files ngircd.service
+	rm -rf .debhelper/ ngircd/
 
 # -eof-
diff --git a/contrib/Debian/compat b/contrib/Debian/compat
deleted file mode 100644
index b1bd38b6..00000000
--- a/contrib/Debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-13
diff --git a/contrib/Debian/control b/contrib/Debian/control
index 35752192..c64b5cf7 100644
--- a/contrib/Debian/control
+++ b/contrib/Debian/control
@@ -2,77 +2,42 @@ Source: ngircd
 Section: net
 Priority: optional
 Maintainer: Alexander Barton <alex@barton.de>
-Build-Depends: debhelper (>> 13.0.0),
-    autotools-dev,
-    expect,
-    libident-dev,
-    libpam0g-dev,
-    libssl-dev,
-    libwrap0-dev,
-    libz-dev,
-    telnet | telnet-ssl,
-Standards-Version: 3.9.1
+Rules-Requires-Root: binary-targets
+Build-Depends: debhelper-compat (= 13),
+ expect,
+ libident-dev,
+ libpam0g-dev,
+ libssl-dev,
+ libz-dev,
+ openssl,
+ procps,
+ telnet | telnet-ssl,
+Standards-Version: 4.6.2
+Homepage: https://ngircd.barton.de
+Vcs-Browser: https://github.com/ngircd/ngircd
+Vcs-Git: https://github.com/ngircd/ngircd.git
 
 Package: ngircd
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Provides: ircd
-Description: lightweight Internet Relay Chat server
- ngIRCd is a free, portable and lightweight Internet Relay Chat server
- for small or private networks, developed under the GNU General Public
- License (GPL).
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+Conflicts:
+ ircd,
+Provides:
+ ircd,
+Description: lightweight Internet Relay Chat (IRC) server
+ ngIRCd is a free, portable and lightweight Internet Relay Chat (IRC) server
+ for small or private networks, developed under the terms of the GNU General
+ Public License (GPL).
  .
- The server is quite easy to configure, can handle dynamic IP addresses, and
- optionally supports IDENT, IPv6 connections, SSL-protected links, and PAM for
- user authentication as well as character set conversion for legacy clients. The
- server has been written from scratch and is not based on the "forefather", the
- daemon of IRCNet.
+ The server is quite easy to configure and runs as a single-node server or can
+ be part of a network of ngIRCd servers in a LAN or across the internet. It
+ optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
+ server-server links, the Pluggable Authentication Modules (PAM) system for
+ user authentication, IDENT requests, and character set conversion for legacy
+ clients.
  .
- This package contains the "standard distribution", including support for
- syslog logging and compressed server-links using zlib. Please have a look
- at the "ngircd-full" package if you need "more advanced" functionality like
- support for TCP wrappers, IDENT requests, the IPv6 protocol, PAM and
- SSL encrypted client and server links.
-
-Package: ngircd-full
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Provides: ircd
-Conflicts: ngircd, ngircd-dbg
-Description: lightweight Internet Relay Chat server
- ngIRCd is a free, portable and lightweight Internet Relay Chat server
- for small or private networks, developed under the GNU General Public
- License (GPL).
- .
- The server is quite easy to configure, can handle dynamic IP addresses, and
- optionally supports IDENT, IPv6 connections, SSL-protected links, and PAM for
- user authentication as well as character set conversion for legacy clients. The
- server has been written from scratch and is not based on the "forefather", the
- daemon of IRCNet.
- .
- In addition to the features of the "standard package", this package
- includes support for TCP wrappers, IDENT requests, the IPv6 protocol, PAM and
- SSL encrypted client and server links.
-
-Package: ngircd-full-dbg
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Provides: ircd
-Conflicts: ngircd, ngircd-full
-Description: lightweight Internet Relay Chat server
- ngIRCd is a free, portable and lightweight Internet Relay Chat server
- for small or private networks, developed under the GNU General Public
- License (GPL).
- .
- The server is quite easy to configure, can handle dynamic IP addresses, and
- optionally supports IDENT, IPv6 connections, SSL-protected links, and PAM for
- user authentication as well as character set conversion for legacy clients. The
- server has been written from scratch and is not based on the "forefather", the
- daemon of IRCNet.
- .
- In addition to the features of the "standard package", this package
- includes support for TCP wrappers, IDENT requests, the IPv6 protocol, PAM and
- SSL encrypted client and server links.
- .
- And in addition to the "full" variant, the binaries contained in this
- package are build with debug code and contain debug symbols.
+ The name ngIRCd stands for next-generation IRC daemon, which is a little bit
+ exaggerated: lightweight Internet Relay Chat server most probably would have
+ been a better name :-)
diff --git a/contrib/Debian/copyright b/contrib/Debian/copyright
index 3c92f7c4..f66d1fc4 100644
--- a/contrib/Debian/copyright
+++ b/contrib/Debian/copyright
@@ -1,13 +1,56 @@
-This package was debianized by Alexander Barton <alex@barton.de> on
-Tue, 20 May 2003 15:47:40 +0200.
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: https://ngircd.barton.de
+Upstream-Name: ngircd
+Upstream-Contact: ngIRCd Mailing List <ngircd@lists.barton.de>
 
-It was downloaded from ftp://Arthur.Ath.CX/pub/Users/alex/ngircd/
+Files:
+ *
+Copyright:
+ 2001-2024 Alexander Barton <alex@barton.de> and Contributors.
+License: GPL-2.0+
+Comment:
+ See /usr/share/doc/ngircd/AUTHORS for the full list of authors and contributors.
 
-Upstream Author: Alexander Barton <alex@barton.de>
+Files:
+ contrib/de.barton.ngircd.metainfo.xml
+Copyright:
+ 2001-2024 Alexander Barton <alex@barton.de> and Contributors.
+License: MIT
+Comment:
+ See /usr/share/doc/ngircd/AUTHORS for the full list of authors and contributors.
 
-This software is copyright (c) 1999-2003 by Alexander Barton.
+License: GPL-2.0+
+ This package 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; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package 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 <https://www.gnu.org/licenses/>
+Comment:
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
 
-You are free to distribute this software under the terms of the
-GNU General Public License.
-On Debian systems, the complete text of the GNU General Public
-License can be found in /usr/share/common-licenses/GPL file.
+License: MIT
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
diff --git a/contrib/Debian/ngircd.default b/contrib/Debian/ngircd.default
index add278f9..062d3766 100644
--- a/contrib/Debian/ngircd.default
+++ b/contrib/Debian/ngircd.default
@@ -1,10 +1,7 @@
 #
-# Defaults for ngIRCd start and stop script
+# Defaults for the ngIRCd daemon
 #
 
 # Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
 # possible options (default: empty).
-
 PARAMS=""
-
-# -eof-
diff --git a/contrib/Debian/ngircd.init b/contrib/Debian/ngircd.init
deleted file mode 100755
index 8127e8fd..00000000
--- a/contrib/Debian/ngircd.init
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/bin/sh
-#
-# ngIRCd start and stop script for Debian-based systems
-# Copyright 2008-2015 Alexander Barton <alex@barton.de>
-#
-
-### BEGIN INIT INFO
-# Provides:		ngircd
-# Required-Start:	$network $remote_fs
-# Required-Stop:	$network $remote_fs
-# Should-Start:		$syslog $named
-# Should-Stop:		$syslog
-# Default-Start:	2 3 4 5
-# Default-Stop:		0 1 6
-# Short-Description:	Next Generation IRC Server
-# Description:		IRC daemon written from scratch
-### END INIT INFO
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/sbin/ngircd
-NAME=ngIRCd
-DESC="IRC daemon"
-PARAMS=""
-STARTTIME=1
-DIETIME=10
-
-test -h "$0" && me=`readlink $0` || me="$0"
-BASENAME=`basename $me`
-
-test -r /etc/default/$BASENAME && . /etc/default/$BASENAME
-
-test -x $DAEMON || exit 5
-
-# LSB compatibility functions that become used if there is no local
-# include file available.
-log_daemon_msg() {
-	echo -n "$*"
-}
-log_end_msg() {
-	[ "$1" = "0" ] && echo "." || echo " failed!"
-}
-log_failure_msg() {
-	echo "$*"
-}
-log_warning_msg() {
-	log_failure_msg "$*"
-}
-
-# Include LSB functions, if available:
-test -r /lib/lsb/init-functions && . /lib/lsb/init-functions
-
-PIDFILE=`$DAEMON $PARAMS -t | tr -d ' ' | grep "^PidFile=" | cut -d'=' -f2`
-[ -n "$PIDFILE" ] || PIDFILE="/var/run/ircd/ngircd.pid"
-
-r=3
-
-Check_Config()
-{
-	# Make sure that the configuration of ngIRCd is valid:
-	$DAEMON $PARAMS --configtest >/dev/null 2>&1
-	[ $? -eq 0 ] && return 0
-	log_end_msg 1
-	log_failure_msg "Configuration of $NAME is not valid, won't (re)start!"
-	log_failure_msg "Run \"$DAEMON --configtest\" and fix it up ..."
-	exit 6
-}
-
-Prepare() {
-	# Make sure the PID file directory exists and is writable:
-	user=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerUID="|cut -d'=' -f2`
-	group=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerGID="|cut -d'=' -f2`
-	piddir=`dirname "$PIDFILE"`
-	[ -d "$piddir" ] || mkdir -p "$piddir" 2>/dev/null
-	chown "$user:$group" "$piddir" 2>/dev/null
-	[ $? -eq 0 ] && return 0
-	log_end_msg 1
-	log_failure_msg "Failed to prepare '$piddir' for user '$user'!"
-	exit 1
-}
-
-Do_Start() {
-	if Do_Status; then
-		log_end_msg 0
-		log_warning_msg "$NAME seems to be already running, nothing to do."
-		exit 0
-	fi
-	rm -f "$PIDFILE"
-	start-stop-daemon --start \
-		--quiet --exec $DAEMON -- $PARAMS
-	sleep $STARTTIME
-	Do_Status || return 7
-	return 0
-}
-
-Do_Stop() {
-	if ! Do_Status; then
-		log_end_msg 0
-		log_warning_msg "$NAME seems not to be running, nothing to do."
-		exit 0
-	fi
-	Do_ForceStop
-	return $?
-}
-
-Do_ForceStop() {
-	[ -e $PIDFILE ] \
-		&& pidfile="--pidfile $PIDFILE" \
-		|| pidfile=""
-	start-stop-daemon --stop \
-		--quiet --oknodo --exec $DAEMON $pidfile
-	for i in `seq 1 $DIETIME`; do
-		Do_Status || return 0
-		sleep 1
-	done
-	return 1
-}
-
-Do_Reload() {
-	start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
-	return $?
-}
-
-Do_Status() {
-	[ -e $PIDFILE ] \
-		&& pidfile="--pidfile $PIDFILE" \
-		|| pidfile=""
-	start-stop-daemon --stop \
-		--quiet --signal 0 --exec $DAEMON $pidfile >/dev/null
-	return $?
-}
-
-case "$1" in
-  start)
-	log_daemon_msg "Starting $DESC" "$NAME"
-	Check_Config
-	Prepare
-	Do_Start; r=$?
-	log_end_msg $r
-	;;
-  stop)
-	log_daemon_msg "Stopping $DESC" "$NAME"
-	Do_Stop; r=$?
-	log_end_msg $r
-	;;
-  reload|force-reload)
-	log_daemon_msg "Reloading $DESC" "$NAME"
-	Check_Config
-	Do_Reload; r=$?
-	log_end_msg $r
-	;;
-  restart)
-	log_daemon_msg "Restarting $DESC" "$NAME"
-	Check_Config
-	Prepare
-	Do_ForceStop
-	Do_Start; r=$?
-	log_end_msg $r
-	;;
-  status)
-	log_daemon_msg "Checking for $DESC" "$NAME"
-	Do_Status; r=$?
-	log_end_msg $r
-	;;
-  test)
-	Check_Config
-	echo "Configuration of $DAEMON seems to be ok."; r=0
-	;;
-  *)
-	N=/etc/init.d/$NAME; r=2
-	echo "Usage: $N {start|stop|restart|reload|force-reload|status|test}" >&2
-	;;
-esac
-
-exit $r
-
-# -eof-
diff --git a/contrib/Debian/ngircd.pam b/contrib/Debian/ngircd.pam
index 4468e56d..9d2f6d51 100644
--- a/contrib/Debian/ngircd.pam
+++ b/contrib/Debian/ngircd.pam
@@ -1,4 +1,10 @@
 # /etc/pam.d/ngircd
 
-# allow all connections to ngIRCd
-auth required pam_permit.so
+# You have to adjust this configuration to your local setup and needs. Keep in
+# mind that all PAM modules are run with the privileges of the user account the
+# ngIRCd daemon runs as ("irc" by default, not root!), so you can't use PAM
+# modules requiring root privileges (like pam_unix, for example)!
+
+# Log and deny all connections to ngIRCd:
+auth required pam_warn.so
+auth required pam_deny.so
diff --git a/contrib/Debian/ngircd.postinst b/contrib/Debian/ngircd.postinst
deleted file mode 100755
index f6e3c4f7..00000000
--- a/contrib/Debian/ngircd.postinst
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Debian post-installation script
-#
-
-set -e
-
-case "$1" in
-	configure)
-		if [ -f /etc/ngircd/ngircd.conf ]; then
-			# make sure that the configuration file is not
-			# world-readable, it contains passwords!
-			chmod o= /etc/ngircd/ngircd.conf
-			chgrp irc /etc/ngircd/ngircd.conf
-		fi
-		;;
-esac
-
-#DEBHELPER#
-
-# -eof-
diff --git a/contrib/Debian/rules b/contrib/Debian/rules
index 9dce5f8a..4be91f36 100755
--- a/contrib/Debian/rules
+++ b/contrib/Debian/rules
@@ -1,237 +1,65 @@
 #!/usr/bin/make -f
-#
-# ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2016 Alexander Barton (alex@barton.de) and Contributors
-#
-# 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; either version 2 of the License, or
-# (at your option) any later version.
-# Please read the file COPYING, README and AUTHORS for more information.
-#
-# debian/rules for ngIRCd
-#
-# Based on the sample debian/rules that uses debhelper,
-# GNU copyright 1997 to 1999 by Joey Hess.
-#
 
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-CFLAGS = -Wall -g
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-	CFLAGS += -O0
-else
-	CFLAGS += -O2
-endif
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
-	INSTALL_PROGRAM += -s
-endif
-
-configure-ngircd: configure
-	dh_testdir
-
-	# configure "standard" variant:
-	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
-	  --prefix=/usr \
-	  --sysconfdir=/etc/ngircd \
-	  --mandir=\$${prefix}/share/man \
-	  --docdir=\$${prefix}/share/doc/ngircd \
-	  --with-syslog --with-zlib
-
-configure-ngircd-full: configure
-	dh_testdir
-
-	# configure "full" variant:
-	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
-	  --prefix=/usr \
-	  --sysconfdir=/etc/ngircd \
-	  --mandir=\$${prefix}/share/man \
-	  --docdir=\$${prefix}/share/doc/ngircd-full \
-	  --with-syslog --with-zlib \
-	  --with-openssl --with-iconv --with-ident --with-tcp-wrappers \
-	  --with-pam \
-	  --enable-ipv6
-
-configure-ngircd-full-dbg: configure
-	dh_testdir
-
-	# configure "full debug" variant:
-	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
-	  --prefix=/usr \
-	  --sysconfdir=/etc/ngircd \
-	  --mandir=\$${prefix}/share/man \
-	  --docdir=\$${prefix}/share/doc/ngircd-full-dbg \
-	  --enable-debug --enable-sniffer \
-	  --with-syslog --with-zlib \
-	  --with-openssl --with-iconv --with-ident --with-tcp-wrappers \
-	  --with-pam \
-	  --enable-ipv6
-
-build:
-	dh_prep
-
-build-ngircd: build-stamp-ngircd
-build-stamp-ngircd: configure-ngircd
-	dh_testdir
-	rm -f build-stamp-*
-
-	# Add here commands to compile the "standard" package:
-	$(MAKE)
-
-	touch build-stamp-ngircd
-
-build-ngircd-full: build-stamp-ngircd-full
-build-stamp-ngircd-full: configure-ngircd-full
-	dh_testdir
-	rm -f build-stamp-*
-
-	# Add here commands to compile the "full" package:
-	$(MAKE)
-
-	touch build-stamp-ngircd-full
-
-build-ngircd-full-dbg: build-stamp-ngircd-full-dbg
-build-stamp-ngircd-full-dbg: configure-ngircd-full-dbg
-	dh_testdir
-	rm -f build-stamp-*
-
-	# Add here commands to compile the "full debug" package:
-	$(MAKE)
-
-	touch build-stamp-ngircd-full
-
-clean:
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp*
-	rm -f $(CURDIR)/debian/ngircd.service
-	rm -f $(CURDIR)/debian/ngircd-full.default
-	rm -f $(CURDIR)/debian/ngircd-full.init
-	rm -f $(CURDIR)/debian/ngircd-full.postinst
-	rm -f $(CURDIR)/debian/ngircd-full.service
-	rm -f $(CURDIR)/debian/ngircd-full-dbg.default
-	rm -f $(CURDIR)/debian/ngircd-full-dbg.postinst
-	rm -f $(CURDIR)/debian/ngircd-full-dbg.init
-	rm -f $(CURDIR)/debian/ngircd-full-dbg.service
-
-	# Add here commands to clean up after the build process:
-	[ ! -f Makefile ] || $(MAKE) distclean
-
-ifneq "$(wildcard /usr/share/misc/config.sub)" ""
-	cp -f /usr/share/misc/config.sub config.sub
-endif
-ifneq "$(wildcard /usr/share/misc/config.guess)" ""
-	cp -f /usr/share/misc/config.guess config.guess
-endif
-	dh_clean
-
-install: install-ngircd install-ngircd-full install-ngircd-full-dbg
-
-install-ngircd: build-ngircd
-	dh_testdir
-	dh_testroot
-	dh_installdirs
-
-	# Add here commands to install the "standard" package into debian/ngircd:
-	$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd
-	rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/INSTALL*
-	rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING*
-	cat $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf | \
-	 sed -e "s|;ServerUID = 65534|ServerUID = irc|g" | \
-	 sed -e "s|;ServerGID = 65534|ServerGID = irc|g" | \
-	 sed -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /var/run/ircd/ngircd.pid|g" \
-	 >$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
-	touch $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
-
-install-ngircd-full: build-ngircd-full
-	dh_testdir
-	dh_testroot
-	dh_installdirs
-
-	# Add here commands to install the "full" package into debian/ngircd-full:
-	$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full
-	rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/INSTALL*
-	rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/COPYING*
-	cat $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/sample-ngircd.conf | \
-	 sed -e "s|;ServerUID = 65534|ServerUID = irc|g" | \
-	 sed -e "s|;ServerGID = 65534|ServerGID = irc|g" | \
-	 sed -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /var/run/ircd/ngircd.pid|g" \
-	 >$(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.conf
-	touch $(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.motd
-	mkdir -p $(CURDIR)/debian/ngircd-full/etc/pam.d
-	cp $(CURDIR)/debian/ngircd.pam $(CURDIR)/debian/ngircd-full/etc/pam.d/ngircd
-
-install-ngircd-full-dbg: build-ngircd-full-dbg
-	dh_testdir
-	dh_testroot
-	dh_installdirs
-
-	# Add here commands to install the "full" package into debian/ngircd-full:
-	$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full-dbg
-	rm $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/INSTALL*
-	rm $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/COPYING*
-	cat $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/sample-ngircd.conf | \
-	 sed -e "s|;ServerUID = 65534|ServerUID = irc|g" | \
-	 sed -e "s|;ServerGID = 65534|ServerGID = irc|g" | \
-	 sed -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /var/run/ircd/ngircd.pid|g" \
-	 >$(CURDIR)/debian/ngircd-full-dbg/etc/ngircd/ngircd.conf
-	touch $(CURDIR)/debian/ngircd-full-dbg/etc/ngircd/ngircd.motd
-	mkdir -p $(CURDIR)/debian/ngircd-full-dbg/etc/pam.d
-	cp $(CURDIR)/debian/ngircd.pam $(CURDIR)/debian/ngircd-full-dbg/etc/pam.d/ngircd
-
-# Build architecture-independent files here.
-binary-indep:
-	# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-	ln -s $(CURDIR)/contrib/ngircd.service \
-	 $(CURDIR)/debian/ngircd.service
-
-	ln -s $(CURDIR)/debian/ngircd.default \
-	 $(CURDIR)/debian/ngircd-full.default
-	ln -s $(CURDIR)/debian/ngircd.init \
-	 $(CURDIR)/debian/ngircd-full.init
-	ln -s $(CURDIR)/debian/ngircd.postinst \
-	 $(CURDIR)/debian/ngircd-full.postinst
-	cp $(CURDIR)/contrib/ngircd.service \
-	 $(CURDIR)/debian/ngircd-full.service
-	echo "Alias=ngircd.service" >>$(CURDIR)/debian/ngircd-full.service
-
-	ln -s $(CURDIR)/debian/ngircd.default \
-	 $(CURDIR)/debian/ngircd-full-dbg.default
-	ln -s $(CURDIR)/debian/ngircd.init \
-	 $(CURDIR)/debian/ngircd-full-dbg.init
-	ln -s $(CURDIR)/debian/ngircd.postinst \
-	 $(CURDIR)/debian/ngircd-full-dbg.postinst
-	cp $(CURDIR)/contrib/ngircd.service \
-	 $(CURDIR)/debian/ngircd-full-dbg.service
-	echo "Alias=ngircd.service" >>$(CURDIR)/debian/ngircd-full-dbg.service
-
-	dh_testdir
-	dh_testroot
-	dh_installchangelogs -a -A ChangeLog
-	dh_installdocs -a
-	dh_installsystemd -a
-	dh_installinit -a
-	dh_strip -a --no-package=ngircd-full-dbg
-	dh_compress -a -XCommands.txt
-	dh_fixperms -a
-	dh_installdeb -a
-	dh_shlibdeps -a
-	dh_gencontrol -a
-	dh_md5sums -a
-	dh_builddeb -a
-
-binary: binary-indep binary-arch
-
-.PHONY: build clean binary-indep binary-arch binary install
-
-# -eof-
+# See FEATURE AREAS in dpkg-buildflags(1).
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+%:
+	dh $@
+
+# Disable dh_autoreconf since we are using de-ANSI-fication which was removed
+# from automake a while ago. See <https://github.com/ngircd/ngircd/issues/261>.
+override_dh_autoreconf:
+
+override_dh_auto_configure:
+	dh_auto_configure -- \
+	    --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
+	    --prefix=/usr \
+	    --mandir=\$${prefix}/share/man \
+	    --sysconfdir=/etc/ngircd \
+	    --with-iconv \
+	    --with-ident \
+	    --with-openssl \
+	    --with-pam \
+	    --with-syslog \
+	    --with-zlib
+
+execute_before_dh_auto_install:
+	ln -fs $(CURDIR)/contrib/ngircd.service $(CURDIR)/debian/ngircd.service
+
+execute_after_dh_auto_install:
+#	Generate the default ngircd.conf:
+	install -o root -g irc -m 0640 -D /dev/null \
+	 $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
+	sed \
+	 -e "s|;ServerUID = 65534|ServerUID = irc|g" \
+	 -e "s|;ServerGID = 65534|ServerGID = irc|g" \
+	 -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /run/ircd/ngircd.pid|g" \
+	 -e "s|;PAM = yes|PAM = no|g" \
+	 $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf \
+	 >>$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
+
+#	Create drop-in configuration directory:
+	install -o root -g irc -m 0750 -d \
+	 $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf.d
+
+#	Install an empty MOTD file.
+	install -o root -g irc -m 0640 -D /dev/null \
+	 $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
+
+#	Install the logcheck(8) configuration.
+	install -o root -g root -m 0644 -D \
+	 $(CURDIR)/contrib/ngircd.logcheck \
+	 $(CURDIR)/debian/ngircd/etc/logcheck/ignore.d.paranoid/ngircd
+
+#	Make lintian happy :-)
+	rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING
+	mv $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/ChangeLog \
+	    $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/changelog
+
+override_dh_fixperms:
+#	Preserve the permissions of files installed in /etc/ngircd!
+	dh_fixperms -X/etc/ngircd
+
+override_dh_compress:
+#	The Commands.txt file is read by the daemon, don't compress it!
+	dh_compress -XCommands.txt
diff --git a/contrib/Debian/source/format b/contrib/Debian/source/format
index d3827e75..163aaf8d 100644
--- a/contrib/Debian/source/format
+++ b/contrib/Debian/source/format
@@ -1 +1 @@
-1.0
+3.0 (quilt)
diff --git a/contrib/Debian/watch b/contrib/Debian/watch
new file mode 100644
index 00000000..7943e691
--- /dev/null
+++ b/contrib/Debian/watch
@@ -0,0 +1,10 @@
+# Watch control file for uscan.
+# See uscan(1) for format.
+
+# Compulsory line, this is a version 4 file.
+version=4
+
+# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig.
+opts="pgpsigurlmangle=s%$%.sig%"
+
+https://arthur.barton.de/pub/@PACKAGE@/@PACKAGE@-([0-9\.]+)@ARCHIVE_EXT@