mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-04-20 01:26:38 +02:00
45 lines
1.1 KiB
Bash
Executable file
45 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
set -eu
|
|
|
|
BASE_URL='https://www.internic.net/domain'
|
|
destdir=${DNS_ROOT_HINTS_DIR:-"/usr/share/dns-root-hints"}
|
|
|
|
if ! [ -w "$destdir" ]; then
|
|
echo 'Needs to run as root.' >&2
|
|
exit 1
|
|
fi
|
|
|
|
tmpdir=$(mktemp -d)
|
|
|
|
cleanup() {
|
|
rm "$tmpdir"/* 2>/dev/null || true
|
|
rmdir "$tmpdir" || true
|
|
}
|
|
trap cleanup EXIT HUP INT TERM
|
|
|
|
for f in named.root named.root.sig; do
|
|
curl -sLR "$BASE_URL/$f" -o "$tmpdir/$f"
|
|
done
|
|
|
|
read_version() {
|
|
sed -En 's/.*related version of root zone:\s*([0-9]{10}).*/\1/p' "$1"
|
|
}
|
|
# compare new and current versions
|
|
new_ver=$(read_version "$tmpdir"/named.root)
|
|
cur_ver=$(read_version "$destdir"/named.root)
|
|
|
|
echo "Version $cur_ver <- Installed"
|
|
echo "Version $new_ver <- Downloaded"
|
|
|
|
# update to new version if needed
|
|
if [ "$new_ver" != "$cur_ver" ]; then
|
|
gpgv --keyring "$destdir"/verisign-grs-nstld-key.gpg \
|
|
"$tmpdir"/named.root.sig "$tmpdir"/named.root || exit 10
|
|
|
|
mv "$tmpdir"/named.root "$destdir"/named.root
|
|
mv "$tmpdir"/named.root.sig "$destdir"/named.root.sig
|
|
|
|
printf '\nZone file updated.\n\n'
|
|
else
|
|
printf '\nZone file already up-to-date.\n\n'
|
|
fi
|