File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 7676 done
7777} &
7878
79- # disallow traffic from Google Cloud
79+ # disallow traffic from bots
8080{
81- [ ! -f /var/tmp/google-cloud-ipv4.txt ] || [ ! -f /var/tmp/google-cloud-ipv6.txt ] && update-google-ips.sh || :
81+ [ ! -f /var/tmp/google-googlebot-ipv4.txt ] || [ ! -f /var/tmp/google-googlebot-ipv6.txt ] || [ ! -f /var/tmp/google- cloud-ipv4.txt ] || [ ! -f /var/tmp/google-cloud-ipv6.txt ] && update-google-ips.sh || :
8282
83- for i in $( cat /var/tmp/google-cloud-ipv4.txt) ; do
83+ for i in $( cat /var/tmp/google-googlebot-ipv4.txt /var/tmp/google- cloud-ipv4.txt /var/tmp/bots- * -ipv4.txt) ; do
8484 iptables -A INPUT -s " $i " -j DROP
8585 done
8686
87- for i in $( cat /var/tmp/google-cloud-ipv6.txt) ; do
87+ for i in $( cat /var/tmp/google-googlebot-ipv6.txt /var/tmp/google- cloud-ipv6.txt /var/tmp/bots- * -ipv6.txt) ; do
8888 ip6tables -A INPUT -s " $i " -j DROP
8989 done
9090} &
Original file line number Diff line number Diff line change @@ -5,9 +5,10 @@ reload_rules=0
55update-banlist-dns.sh &
66
77update-allowlist-ips.sh && logger ' updated allowlist IPs' && reload_rules=1
8+ update-bot-ips.sh && logger ' updated bot IPs' && reload_rules=1
9+ update-cloudflare-ips.sh && logger ' updated Cloudflare IPs' && reload_rules=1
810update-google-ips.sh && logger ' updated Google IPs' && reload_rules=1
9- update-cloudflare-ips.sh && logger ' received new Cloudflare IPs' && reload_rules=1
1011
11- [ " $reload_rules " = 1 ] && /etc/init.d/local restart | logger
12+ [ " $reload_rules " = 1 ] && /etc/init.d/local --verbose restart | logger
1213
1314wait
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+
3+ PATH_PREFIX=" /var/tmp/bots"
4+ PREFIX=" https://raw.githubusercontent.com/lord-alfred/ipranges/main"
5+ IPV4=( amazon bing duckassistbot duckduckbot facebook microsoft openai perplexity pingdom statuscake twitter )
6+ IPV6=( amazon facebook microsoft pingdom twitter )
7+
8+ path () {
9+ version=" $1 "
10+ target=" $2 "
11+ echo " ${PATH_PREFIX} -${target} -ipv${version} .txt"
12+ }
13+
14+ load () {
15+ for target in " ${IPV4[@]} " ; do
16+ cat $( path 4 " ${target} " ) 2>> /dev/null
17+ done
18+
19+ for target in " ${IPV6[@]} " ; do
20+ cat $( path 6 " ${target} " ) 2>> /dev/null
21+ done
22+ }
23+
24+ sum () {
25+ load | sha256sum
26+ }
27+
28+ get () {
29+ url=" $1 "
30+ sudo -u nobody wget --timeout=30 --tries=10 -qO - " ${url} "
31+ echo
32+ }
33+
34+ write () {
35+ version=" $1 "
36+ cidr=" $2 "
37+ target=" $3 "
38+ output=$( path " ${version} " " ${target} " )
39+ temp=" ${output} .tmp"
40+ grepcidr -e " ${cidr} " | \
41+ sort -u > " ${temp} "
42+ [ " $( stat --format=' %s' ${temp} ) " -gt 1 ] && mv " ${temp} " " ${output} "
43+ }
44+
45+ download () {
46+ for target in " ${IPV4[@]} " ; do
47+ get " ${PREFIX} /${target} /ipv4_merged.txt" | write 4 ' 0.0.0.0/0' " ${target} "
48+ done
49+
50+ for target in " ${IPV6[@]} " ; do
51+ get " ${PREFIX} /${target} /ipv6_merged.txt" | write 6 ' ::/0' " ${target} "
52+ done
53+ }
54+
55+ before=$( sum)
56+ download
57+ after=$( sum)
58+ [ " ${before} " != " ${after} " ] && exit 0 || exit 1
Original file line number Diff line number Diff line change @@ -14,12 +14,20 @@ sum() {
1414 load | sha256sum
1515}
1616
17+ get () {
18+ url=" $1 "
19+ sudo -u nobody wget --timeout=30 --tries=10 -qO - " ${url} "
20+ echo
21+ }
22+
1723download () {
1824 version=" $1 "
1925 cidr=" $2 "
2026 output=" ${PATH_PREFIX}${version} .txt"
2127 temp=" ${output} .tmp"
22- sudo -u nobody wget --timeout=30 --tries=10 -qO - " https://www.cloudflare.com/ips-v${version} " | grepcidr -e " ${cidr} " | sort -u > " ${temp} "
28+ ( get " https://www.cloudflare.com/ips-v${version} " ; get " https://raw.githubusercontent.com/lord-alfred/ipranges/main/cloudflare/ipv${version} _merged.txt" ) | \
29+ grepcidr -e " ${cidr} " | \
30+ sort -u > " ${temp} "
2331 [ " $( stat --format=' %s' ${temp} ) " -gt 1 ] && mv " ${temp} " " ${output} "
2432}
2533
Original file line number Diff line number Diff line change 33# https://cloud.google.com/compute/docs/faq#find_ip_range
44
55PATH_PREFIX=" /var/tmp/google"
6+ PREFIX=" https://raw.githubusercontent.com/lord-alfred/ipranges/main"
67
7- load () {
8- cat ${PATH_PREFIX} * ipv{4,6}.txt 2>> /dev/null
8+ sum () {
9+ cat ${PATH_PREFIX} * ipv{4,6}.txt 2>> /dev/null | sha256sum
910}
1011
11- sum () {
12- load | sha256sum
12+ parse () {
13+ version=" $1 "
14+ jq --raw-output --monochrome-output " .prefixes[] | .ipv${version} Prefix" | grep -v ' null'
1315}
1416
1517write () {
@@ -18,23 +20,31 @@ write() {
1820 target=" $3 "
1921 output=" ${PATH_PREFIX} -${target} -ipv${version} .txt"
2022 temp=" ${output} .tmp"
21- cat | \
22- jq --raw-output --monochrome-output " .prefixes[] | .ipv${version} Prefix" | \
23- grep -v ' null' | \
24- grepcidr -e " ${cidr} " | \
25- sort -u > " ${temp} "
23+ grepcidr -e " ${cidr} " | sort -u > " ${temp} "
2624 [ " $( stat --format=' %s' ${temp} ) " -gt 1 ] && mv " ${temp} " " ${output} "
2725}
2826
27+ get () {
28+ url=" $1 "
29+ sudo -u nobody wget --timeout=30 --tries=10 -qO - " ${url} "
30+ echo
31+ }
32+
2933download () {
3034 target=" $1 "
31- ips=$( sudo -u nobody wget --timeout=30 --tries=10 -qO - " https://www.gstatic.com/ipranges/${target} .json" )
32- write 4 ' 0.0.0.0/0' " ${target} " <<< " ${ips}"
33- write 6 ' ::/0' " ${target} " <<< " ${ips}"
35+ ips=$( get " https://www.gstatic.com/ipranges/${target} .json" )
36+ parse 4 <<< " ${ips}" | write 4 ' 0.0.0.0/0' " ${target} "
37+ parse 6 <<< " ${ips}" | write 6 ' ::/0' " ${target} "
38+ }
39+
40+ download_googlebot () {
41+ get " ${PREFIX} /googlebot/ipv4_merged.txt" | write 4 ' 0.0.0.0/0' ' googlebot'
42+ get " ${PREFIX} /googlebot/ipv6_merged.txt" | write 6 ' ::/0' ' googlebot'
3443}
3544
3645before=$( sum)
3746download ' cloud'
3847download ' goog'
48+ download_googlebot
3949after=$( sum)
4050[ " ${before} " != " ${after} " ] && exit 0 || exit 1
You can’t perform that action at this time.
0 commit comments