blob: 7bfabf96ed1c19351918404876bbe4e7581274b4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#!/bin/bash
# update dns records of
# pool.mirror.archlinux32.org = CNAME pool32.ddns.eckner.net
# either called with 1 argument (the ip to check and add) or without
# arguments (all known mirrors will be checked in parallel)
set -e
if [ $# -eq 1 ]; then
if [ "${1%.*}" != "$1" ]; then
ipver='A'
lft=''
rt=''
elif [ "${1%:*}" != "$1" ]; then
ipver='AAAA'
lft='['
rt=']'
else
exit
fi
if [ "$(curl \
-w '%{http_code}' \
-L \
-o /dev/null \
--connect-timeout 10 \
--resolve "pool.mirror.archlinux32.org:80:${lft}$1${rt}" \
-s 'http://pool.mirror.archlinux32.org/i686/')" != '200' ]; then
exit
fi
printf '%s %s\n' "${ipver}" "$1"
exit
fi
{
for type in 'A' 'AAAA'; do
printf '%s\n' \
'zone ddns.eckner.net.' \
'prereq yxrrset pool32.ddns.eckner.net IN '"${type}" \
'update delete pool32.ddns.eckner.net IN '"${type}" \
'send'
done
printf 'zone ddns.eckner.net.\n'
curl -s 'https://packages.archlinux32.org/mirrors/status.php?tsv' | \
{
read -r headers
url_column=$(
printf '%s\n' "${headers}" | \
tr '\t' '\n' | \
grep -nxF 'url' | \
cut -d: -f1
)
recently_active_column=$(
printf '%s\n' "${headers}" | \
tr '\t' '\n' | \
grep -nxF 'recently_active' | \
cut -d: -f1
)
awk '{
print $'"${recently_active_column}"' "\t" $'"${url_column}"'
}'
} | \
sed -n '
s/^1\t//
T
\|//mirror\.archlinux32\.org/|d
s|[^:]\+://||
T
s|/.*$||
p
' | \
sort -u | \
parallel -j0 getent ahosts | \
sed -n '
s/\s\+STREAM\(\s.*\)\?$//
T
p
' | \
sort -u | \
parallel -j0 "$0" | \
sed '
s/^/update add pool32.ddns.eckner.net. 3600 IN /
'
printf '%s\n' \
'send'
} | \
nsupdate -l
exit 0
|