Optional: Use 3rd Party Adserver List
yoyo.org
There is a list of known zones that serve ads available from yoyo.org („yoyo Internet Services“). This can easily be transformed into my format for zones.adblock:
~# curl http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml |
while read zone ; do
echo "zone \"$zone\" IN { type master; notify no; file \"/etc/bind/db.adblock\"; };"
done >> /etc/bind/zones.adblock
~# rndc reload
easyList
The following, more complex approach assumes that a line such as the following has been included for example in /etc/bind/zones.adblock:
include "/etc/bind/zones.adblock.easyList";
The following script will fetch the most recent list of reported ad-servers from „easyList“, converts it into the zone configuration format used in this document and rebuilds the file /etc/bind/zones.adblock.easyList:
#!/bin/sh
url="https://hg.adblockplus.org/easylist/raw-file/tip/easylist/easylist_adservers.txt"
config="/etc/bind/zones.adblock.easyList"
# clear previous content
echo -n > "$config"
curl $url | while read line ; do
# strip prefix, paths and qualifiers
zone=$(echo $line | sed 's/^||//;s/[\^\/].*//' )
# skip entries starting with "!" (comments)
if echo $zone | grep '^\!' > /dev/null ; then
echo "INFO: skipped non-zone \"$zone\"." >&2
# stripped of paths, qualifiers, zone can appear more than once
elif ! fgrep "zone \"$zone\"" "$config" > /dev/null ; then
echo "zone \"$zone\" IN { type master; notify no; file \"/etc/bind/db.adblock\"; };" \
>> "$config"
fi
done
rndc reload