-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
update.sh
executable file
·126 lines (99 loc) · 2.65 KB
/
update.sh
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/sh -e
__domain()
{
registered='-'
registrant='-'
country='-'
nserver='-'
whois="$( whois "$1" || true )"
if [ -n "$whois" ]
then
get_registered="$( echo "$whois" | sed -nr 's/^registered:\s+([0-9-]{10})\s.+/\1/p' )"
if [ -n "$get_registered" ]
then
registered="$get_registered"
fi
get_registrant="$( echo "$whois" | sed -nr 's/^org\sid:\s+([a-z0-9]+)/\1/pI' | sed -e 's/\(.*\)/\L\1/' )"
if [ -n "$get_registrant" ]
then
registrant="$get_registrant"
fi
get_country="$( echo "$whois" | sed -nr 's/^country:\s+([a-z]+)/\1/pI' | sed -e 's/\(.*\)/\L\1/' )"
if [ -n "$get_country" ]
then
country="$get_country"
fi
fi
get_nserver="$( dig +short soa "$1" | awk '{print $1}' | sed 's/\.$//' | sed -e 's/\(.*\)/\L\1/' )"
if [ -n "$get_nserver" ]
then
if get_psl="$( echo "$get_nserver" | psl -b --print-reg-domain )"
then
nserver="$get_psl"
else
nserver="$get_nserver"
fi
fi
echo "$1 $registered $registrant $country $nserver"
}
domains_in_zone="$( dig +noidnout ee axfr @zone.internet.ee \
| grep -Po '^(.+\..+)(?=\.\s+[0-9]+\s+IN\s+NS\s+)' \
| sort -u )"
if [ "$( echo "$domains_in_zone" | grep -Evc '^$' )" -lt 130000 ]
then
echo 'borked zone transfer?' >&2
exit 1
fi
add_domains="$( echo "$domains_in_zone" | comm -13 list - )"
remove_domains="$( echo "$domains_in_zone" | comm -13 - list )"
if [ -z "$add_domains" ] && [ -z "$remove_domains" ]
then
exit 0
fi
if [ -n "$add_domains" ]
then
echo "$add_domains" | while read -r l
do
echo "$l" >> list
__domain "$l" >> info
done
sort -o list list
sort -o info info
added_count="$( echo "$add_domains" | grep -Evc '^$' )"
fi
if [ -n "$remove_domains" ]
then
echo "$remove_domains" | while read -r l
do
sed -i "/^$l\$/d" list
sed -i "/^$l\s/d" info
done
removed_count="$( echo "$remove_domains" | grep -Evc '^$' )"
fi
if [ -n "$added_count" ]
then
printf '%s added' "$added_count"
fi
if [ -n "$removed_count" ]
then
if [ -n "$added_count" ]
then
printf ', '
fi
printf '%s removed' "$removed_count"
fi
if [ -n "$added_count" ] || [ -n "$removed_count" ]
then
printf '\n\n'
fi
if [ -n "$add_domains" ]
then
printf '%s\n' "$( echo "$add_domains" | sed 's/^/+/' )"
fi
if [ -n "$remove_domains" ]
then
printf '%s\n' "$( echo "$remove_domains" | sed 's/^/-/' )"
fi
cat > README.md << EOF
**$( grep -Ec '.*' list )** active domains as of **$( date -u '+%F %R' ) UTC**.
EOF