I've made this script to automate blocking some deviant hosts on my router, and was curious if there's anything much else that can be done to make it quicker and more efficient.
Presently I'm restricted to using packages available on the Entware repository and the latest Busybox/ash shell environment. So, for example, I can't use commands like sort -S 25% --parallel=4 -u adblock.sources
(though awk/gawk is faster and more memory efficient anyway).
update_the_blacklist.sh
curl -GOs https://raw.githubusercontent.com/T145/packages/master/net/adblock/files/adblock.sources
for key in $(jq -r 'keys[]' adblock.sources); do
case $key in
gaming | osid_basic )
# Ignore these lists
;;
* )
url=$(jq -r ".$key.url" adblock.sources)
rule=$(jq -r ".$key.rule" adblock.sources)
case $url in
*.tar.gz )
curl -s $url | \
tar -xOzf - | \
gawk "$rule" | \
sed "s/\r//g" | \
sed 's/^/0.0.0.0 /' >> the_blacklist.temp.txt
;;
* )
curl -s $url | \
gawk "$rule" | \
sed "s/\r//g" | \
sed 's/^/0.0.0.0 /' >> the_blacklist.temp.txt
esac
unset url
unset rule
esac
done
# Filter duplicate hosts
gawk '!a[$0]++' the_blacklist.temp.txt > the_blacklist.txt
rm the_blacklist.temp.txt
rm adblock.sources