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).
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