summaryrefslogtreecommitdiff
path: root/bin/update_hosts
blob: 8d148a6e077f41a5440d65766a0d8a0b984087c7 (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
#!/bin/sh -e

# Update /etc/hosts with a well curated blacklist of malware, ads, porn, etc.
# Custom hosts are preserved.


[ "$USER" = root ] || exec sudo "$0" "$@"

echo "Check from https://github.com/StevenBlack/hosts"
lsd=$(curl -s "https://api.github.com/repos/StevenBlack/hosts/commits?path=hosts&page=1&per_page=1"| jq -r '.[0].commit.committer.date')
echo "last source update: $(date -j -f "%FT%TZ" "$lsd")" 
echo "last local  update: $(date -r /etc/hosts)"
if [ $(date -j -f "%FT%TZ" "$lsd" +%s) -lt $(date -r /etc/hosts +%s) ]; then
	echo "Nothing to do"
	exit
fi

cd /etc
cp -p hosts hosts.old
hosts=$(awk '/^# Custom host /, /^# End of custom host /' hosts.old)
curl -s  https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts |
awk 'BEGIN { hosts = ARGV[1]; ARGV[1] = "" }
/^# Custom host / { print hosts; next }
/^# End of custom host / { next }
{print}' "$hosts" > hosts.new
mv hosts.new hosts
[ "$(uname -s)" != Darwin ] || dscacheutil -flushcache
diff -u /etc/hosts.old /etc/hosts | diffstat