- curl is not executed if last execution is newer than Last-modified in http request. (option -z)
- extraction of domain list from file 'hosts' standardized and shortened
- temporary files are not overwritten if not necessary.
- domains with no dots (i.e. localhost) removed automatically from list
- the code to reduce duplicates and create the output is now shorter
- "/etc/dnsmasq.d/adList.conf" is not overwritten and dnsmasq not restarted when is not necessary
what's new:
- sorting not necessary on every source, it's already executed at the end
- comments are allowed in blacklist and in whitelist. Everything following the symbol '#' is considered comment, even if it's not at the beginning of the line
- blank lines are allowed in blacklist and whitelist.
- tested this with awk (mac), mawk (raspbian) and also with gawk.
- bugfix
...
- subdomains removed from output when domain already exists
- output sorted in reverse order (right to left)
- filepaths defined at the top of the code.
- subdomains of items in whitelist/blacklist are whitelisted/blacklisted too
This fixes#6 by changing the location of the whitelist.txt file.
Instead of storing it in the current users home folder, it should be
created in /etc/pihole. The script will also create the directory if
it does not exist, but will not add a whitelist.txt by default. You
would still need to go back and manually add one. But this directory
will be used to store other support files as the script improves.
I also added sudo commands to the commands requiring elevation.
Finally, changed the comment to reflect a more accurate number of
domains getting blocked.
Just put a file named whitelist.txt in your home folder. This file
should contain one domain per line that needs to be whitelisted. If
the file does not exists, the script will continue as normal.
http://jacobsalmela.com/raspberry-pi-ad-blocker-advanced-setup/#comment-
1860675175
Thanks to napgravy for figuring this out. It seems the DOS-style
line-endings that prevented uniq from getting rid of them. This
reduces the ad domains from ~140,000 to around ~120,000 but it is much
more accurate.
In addition to the extra domains, there are numerous performance
improvements so the script runs faster. There were also some
extraneous domains that were either blank or had some special
characters that needed to be removed.
Since the ad lists are not under my control, the end of the script will
now tell you how many domains will be blocked. In case the sources it
pulls from ever update, you can run this script again and see the
difference.