summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@open-infrastructure.net>2021-09-12 09:30:45 +0000
committerDaniel Baumann <daniel.baumann@open-infrastructure.net>2021-09-12 11:50:21 +0000
commit2f10c858ea8bc579414b3a8d8b6eced4a94a5114 (patch)
tree0eac44ac3959c2f136a88189d898d7b28dead958
parentAdding ddns-client manpage. (diff)
downloadnetwork-tools-2f10c858ea8bc579414b3a8d8b6eced4a94a5114.tar.xz
network-tools-2f10c858ea8bc579414b3a8d8b6eced4a94a5114.zip
Adding debian packaging.
Signed-off-by: Daniel Baumann <daniel.baumann@open-infrastructure.net>
-rw-r--r--debian/changelog5
-rw-r--r--debian/control25
-rw-r--r--debian/copyright25
-rw-r--r--debian/open-infrastructure-ddns-client.config50
-rwxr-xr-xdebian/open-infrastructure-ddns-client.postinst146
-rwxr-xr-xdebian/open-infrastructure-ddns-client.postrm23
-rw-r--r--debian/open-infrastructure-ddns-client.templates47
-rwxr-xr-xdebian/rules21
-rw-r--r--debian/source/format1
-rw-r--r--debian/upstream/signing-key.asc64
-rw-r--r--debian/watch3
11 files changed, 410 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..98d36880
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+open-infrastructure-network-tools (20210912-0.1) sid; urgency=medium
+
+ * Initial upload to sid (Closes: #nnnnnn).
+
+ -- Daniel Baumann <daniel.baumann@progress-linux.org> Sun, 12 Sep 2021 11:23:03 +0200
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..8c5761b5
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,25 @@
+Source: open-infrastructure-network-tools
+Section: admin
+Priority: optional
+Maintainer: Daniel Baumann <daniel.baumann@progress-linux.org>
+Build-Depends:
+ debhelper-compat (= 13),
+ python3-docutils,
+Rules-Requires-Root: no
+Standards-Version: 4.6.0
+Homepage: https://open-infrastructure.net/software/network-tools
+Vcs-Browser: https://git.progress-linux.org/users/daniel.baumann/debian/packages/open-infrastructure-network-tools
+Vcs-Git: https://git.progress-linux.org/users/daniel.baumann/debian/packages/open-infrastructure-network-tools
+
+Package: open-infrastructure-ddns-client
+Section: admin
+Architecture: all
+Depends:
+ jq,
+ knot-dnsutils | bind9-dnsutils,
+ wget | curl,
+ ${misc:Depends},
+Provides:
+ ddns-client,
+Description: Dynamic DDNS client
+ This package contains additional a Dynamic DDNS client.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000..210bce8c
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,25 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: network-tools
+Upstream-Contact: Open Infrastructure <software@lists.open-infrastructure.net>
+Source: https://git.open-infrastructure.net/software/network-tools
+
+Files: *
+Copyright: 2014-2021 Daniel Baumann <daniel.baumann@open-infrastructure.net>
+License: GPL-3+
+
+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, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ 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 <https://www.gnu.org/licenses/>.
+ .
+ The full text of the GNU General Public License version 3
+ can be found in the file /usr/share/common-licenses/GPL-3.
diff --git a/debian/open-infrastructure-ddns-client.config b/debian/open-infrastructure-ddns-client.config
new file mode 100644
index 00000000..0c97be57
--- /dev/null
+++ b/debian/open-infrastructure-ddns-client.config
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+CONFFILE="/etc/network-tools/config/ddns-client.conf"
+
+if [ -e "${CONFFILE}" ]
+then
+ . ${CONFFILE} || true
+
+ db_set open-infrastructure-ddns-client/nameservers "${NAMESERVERS}"
+ db_fset open-infrastructure-ddns-client/nameservers seen false || true
+ db_go
+
+ db_set open-infrastructure-ddns-client/zone "${ZONE}"
+ db_fset open-infrastructure-ddns-client/zone seen false || true
+ db_go
+
+ db_set open-infrastructure-ddns-client/record "${RECORD}"
+ db_fset open-infrastructure-ddns-client/record seen false || true
+ db_go
+
+ db_set open-infrastructure-ddns-client/ttl "${TTL}"
+ db_fset open-infrastructure-ddns-client/ttl seen false || true
+ db_go
+fi
+
+db_settitle open-infrastructure-ddns-client/title
+db_input low open-infrastructure-ddns-client/nameservers "${NAMESERVERS}" || true
+db_go
+
+db_settitle open-infrastructure-ddns-client/title
+db_input low open-infrastructure-ddns-client/zone "${ZONE}" || true
+db_go
+
+db_settitle open-infrastructure-ddns-client/title
+db_input low open-infrastructure-ddns-client/record "${RECORD}" || true
+db_go
+
+db_settitle open-infrastructure-ddns-client/title
+db_input low open-infrastructure-ddns-client/ttl "${TTL}" || true
+db_go
+
+db_settitle open-infrastructure-ddns-client/title
+db_input low open-infrastructure-ddns-client/tsig "${TSIG}" || true
+db_go
+
+db_stop
diff --git a/debian/open-infrastructure-ddns-client.postinst b/debian/open-infrastructure-ddns-client.postinst
new file mode 100755
index 00000000..afbda6c8
--- /dev/null
+++ b/debian/open-infrastructure-ddns-client.postinst
@@ -0,0 +1,146 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+CONFFILE="/etc/network-tools/config/ddns-client.conf"
+
+case "${1}" in
+ configure)
+ db_get open-infrastructure-ddns-client/nameservers
+ NAMESERVERS="${RET}" # string
+
+ db_get open-infrastructure-ddns-client/zone
+ ZONE="${RET}" # string
+
+ db_get open-infrastructure-ddns-client/record
+ RECORD="${RET}" # string
+
+ db_get open-infrastructure-ddns-client/ttl
+ TTL="${RET:-60}" # string (w/o empty)
+
+ db_get open-infrastructure-ddns-client/tsig
+ TSIG="${RET}" # string (w/ empty)
+
+ db_stop
+
+ if [ ! -e "${CONFFILE}" ]
+ then
+ mkdir -p /etc/network-tools/config
+
+cat > "${CONFFILE}" << EOF
+# /etc/network-tools/config/ddns-client.conf
+
+NAMESERVERS="${NAMESERVERS}"
+ZONE="${ZONE}"
+RECORD="${RECORD}"
+TTL="${TTL}"
+TSIG_KEYFILE=""
+EOF
+
+ fi
+
+ cp -a -f "${CONFFILE}" "${CONFFILE}.tmp"
+
+ # If the admin deleted or commented some variables but then set
+ # them via debconf, (re-)add them to the config file.
+
+ test -z "${NAMESERVERS}" || \
+ grep -Eq '^ *NAMESERVERS=' "${CONFFILE}" || \
+ echo "NAMESERVERS=" >> "${CONFFILE}"
+
+ test -z "${ZONE}" || \
+ grep -Eq '^ *ZONE=' "${CONFFILE}" || \
+ echo "ZONE=" >> "${CONFFILE}"
+
+ test -z "${RECORD}" || \
+ grep -Eq '^ *RECORD=' "${CONFFILE}" || \
+ echo "RECORD=" >> "${CONFFILE}"
+
+ test -z "${TTL}" || \
+ grep -Eq '^ *TTL=' "${CONFFILE}" || \
+ echo "TTL=" >> "${CONFFILE}"
+
+ sed -e "s|^ *NAMESERVERS=.*|NAMESERVERS=\"${NAMESERVERS}\"|" \
+ -e "s|^ *ZONE=.*|ZONE=\"${ZONE}\"|" \
+ -e "s|^ *RECORD=.*|RECORD=\"${RECORD}\"|" \
+ -e "s|^ *TTL=.*|TTL=\"${TTL}\"|" \
+ < "${CONFFILE}" > "${CONFFILE}.tmp"
+
+ mv -f "${CONFFILE}.tmp" "${CONFFILE}"
+
+ if [ -n "${TSIG}" ]
+ then
+ case "${TSIG}" in
+ http*)
+ # tsig is a URL
+ if command -v wget "${TSIG}" -O /dev/null > /dev/null 2>&1
+ then
+ rm -f /etc/network-tools/tsig.key
+
+ wget "${TSIG}" -O /etc/network-tools/tsig.key
+ chmod 0600 /etc/network-tools/tsig.key
+
+ TSIG_FILE="/etc/network-tools/tsig.key"
+ elif command -v curl "${TSIG}" -o /dev/null > /dev/null 2>&1
+ then
+ rm -f /etc/network-tools/tsig.key
+
+ curl "${TSIG}" -o /etc/network-tools/tsig.key
+ chmod 0600 /etc/network-tools/tsig.key
+
+ TSIG_FILE="/etc/network-tools/tsig.key"
+ fi
+ ;;
+
+ *:*)
+ # tsig is a string
+ echo "${TSIG}" > /etc/network-tools/tsig.key
+ chmod 0600 /etc/network-tools/tsig.key
+
+ TSIG_FILE="/etc/network-tools/tsig.key"
+ ;;
+
+ */*)
+ # tsig is a path
+ TSIG_FILE="${TSIG}"
+ ;;
+
+ *)
+ echo "'${TSIG}' is neither a valid tsig, nor a path or URL to an existing file - ignoring"
+ ;;
+ esac
+ fi
+
+ if [ -n "${TSIG_FILE}" ]
+ then
+ cp -a -f "${CONFFILE}" "${CONFFILE}.tmp"
+
+ # If the admin deleted or commented some variables but then set
+ # them via debconf, (re-)add them to the config file.
+
+ test -z "${TSIG_FILE}" || \
+ grep -Eq '^ *TSIG_KEYFILE=' "${CONFFILE}" || \
+ echo "TSIG_KEYFILE=" >> "${CONFFILE}"
+
+ sed -e "s|^ *TSIG_KEYFILE=.*|TSIG_KEYFILE=\"${TSIG_FILE}\"|" \
+ < "${CONFFILE}" > "${CONFFILE}.tmp"
+
+ mv -f "${CONFFILE}.tmp" "${CONFFILE}"
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/open-infrastructure-ddns-client.postrm b/debian/open-infrastructure-ddns-client.postrm
new file mode 100755
index 00000000..309a3c8f
--- /dev/null
+++ b/debian/open-infrastructure-ddns-client.postrm
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+case "${1}" in
+ purge)
+ rm -rf /etc/network-tools
+ rm -rf /var/log/network-tools
+ ;;
+
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/open-infrastructure-ddns-client.templates b/debian/open-infrastructure-ddns-client.templates
new file mode 100644
index 00000000..7f4d9376
--- /dev/null
+++ b/debian/open-infrastructure-ddns-client.templates
@@ -0,0 +1,47 @@
+Template: open-infrastructure-ddns-client/title
+Type: title
+Description: ddns-client: Setup
+
+Template: open-infrastructure-ddns-client/nameservers
+Type: string
+Default:
+Description: DDNS nameservers:
+ Please enter (whitespace separated) the list of nameservers to send the
+ nsupdates to.
+ .
+ Example: ns1.example.org ns2.example.org
+
+Template: open-infrastructure-ddns-client/zone
+Type: string
+Default:
+Description: DDNS zone:
+ Please enter the zone you'd like to update.
+ .
+ Example: foo.example.org
+
+Template: open-infrastructure-ddns-client/record
+Type: string
+Default:
+Description: DDNS record:
+ Please enter the record you'd like to update, *without* the zone.
+ .
+ Example: bar
+
+Template: open-infrastructure-ddns-client/ttl
+Type: string
+Default: 60
+Description: DDNS TTL:
+ Please enter the default TTL (in seconds).
+ .
+ If unsure, use '60' (default).
+
+Template: open-infrastructure-ddns-client/tsig
+Type: string
+Default:
+Description: DDNS TSIG:
+ When using the ddns-client, a TSIG must be used to authenticate to the
+ nameservers.
+ .
+ Please enter either the path to the TSIG file or the TSIG string itself
+ (format as used by nsupdate -y in algorithm:name:base64), or the URL to
+ download it from.
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..331c58c8
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,21 @@
+#!/usr/bin/make -f
+
+PACKAGES := $(shell dh_listpackages | cut -d '-' -f 3-)
+
+%:
+ dh ${@}
+
+override_dh_auto_build:
+ # disabled
+
+override_dh_auto_clean:
+ for PACKAGE in $(PACKAGES); \
+ do \
+ $(MAKE) -C $${PACKAGE} clean; \
+ done
+
+override_dh_auto_install:
+ for PACKAGE in $(PACKAGES); \
+ do \
+ $(MAKE) -C $${PACKAGE} DESTDIR=$(CURDIR)/debian/open-infrastructure-$${PACKAGE} install; \
+ done
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..163aaf8d
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc
new file mode 100644
index 00000000..09df62b7
--- /dev/null
+++ b/debian/upstream/signing-key.asc
@@ -0,0 +1,64 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+cpQlFP9BkBNUyXjn218uHOJ20k5VgncS
+=0dto
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 00000000..6cfdd1d5
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=4
+opts="pgpmode=auto" \
+https://get.open-infrastructure.net/software/network-tools/upstream/network-tools-(.+)\.tar\.lz