mirror of
https://git.proxmox.com/git/systemd
synced 2026-01-16 10:42:15 +00:00
Only fall back to "dns" if nss-resolve is not installed (for the architecture of the calling program). Once it is, we never want to fall back to "dns" as that breaks enforcing DNSSEC verification and also pointlessly retries NXDOMAIN failures. LP: #1624071
56 lines
1.8 KiB
Bash
56 lines
1.8 KiB
Bash
#!/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#
|