summaryrefslogtreecommitdiffstats
path: root/debian/libnss-resolve.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/libnss-resolve.postinst')
-rw-r--r--debian/libnss-resolve.postinst55
1 files changed, 55 insertions, 0 deletions
diff --git a/debian/libnss-resolve.postinst b/debian/libnss-resolve.postinst
new file mode 100644
index 0000000..21b19c8
--- /dev/null
+++ b/debian/libnss-resolve.postinst
@@ -0,0 +1,55 @@
+#!/bin/sh
+set -e
+
+# This code was taken from libnss-myhostname
+
+# try to insert resolve entries to the "hosts" line in /etc/nsswitch.conf to
+# automatically enable libnss-resolve support; do not change the
+# configuration if the "hosts" line already references some resolve lookups
+insert_nss_entry() {
+ echo "Checking NSS setup..."
+ # abort if /etc/nsswitch.conf does not exist
+ if ! [ -e /etc/nsswitch.conf ]; then
+ echo "Could not find /etc/nsswitch.conf."
+ return
+ fi
+ perl -i -pe '
+ sub insert {
+ my $line = shift;
+ # this also splits on tab
+ my @bits=split(" ", $line);
+ # do not break configuration if the "hosts" line already references
+ # resolve
+ if (grep { $_ eq "resolve"} @bits) {
+ return $line;
+ }
+ # add resolve before dns
+ return join " ", map {
+ $_ eq "dns" ? ("resolve [!UNAVAIL=return]", "$_") : $_
+ } @bits;
+ }
+ s/^(hosts:\s+)(.*)/$1.insert($2)/e;
+ ' /etc/nsswitch.conf
+}
+
+if [ "$1" = configure ] && [ -z "$2" ]; then
+ echo "First installation detected..."
+ # first install: setup the recommended configuration (unless
+ # nsswitch.conf already contains resolve entries)
+ insert_nss_entry
+ # ... and enable resolved
+ systemctl enable systemd-resolved.service
+ if [ -d /run/systemd/system ]; then
+ deb-systemd-invoke start systemd-resolved.service || true
+ fi
+fi
+
+# Fix nsswitch action on upgrades
+if [ "$1" = configure ] && dpkg --compare-versions "$2" lt-nl "231-10"; then
+ if ! grep -q '^hosts:.*resolve[[:space:]]*\[' /etc/nsswitch.conf; then
+ echo "Adjusting 'resolv' entry in /etc/nsswitch.conf.."
+ sed -i '/^hosts:/ { s/resolve/& [!UNAVAIL=return]/}' /etc/nsswitch.conf
+ fi
+fi
+
+#DEBHELPER#