diff options
Diffstat (limited to '')
-rw-r--r-- | debian/libnss-resolve.postinst | 55 |
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# |