|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
# http://pi-hole.net
|
|
|
|
|
# Compiles a list of ad-serving domains by downloading them from multiple sources
|
|
|
|
|
# Compiles a list of ad-serving domains by downloading them from multiple sources
|
|
|
|
|
|
|
|
|
|
# This script should only be run after you have a static IP address set on the Pi
|
|
|
|
|
piholeIP=$(hostname -I)
|
|
|
|
@ -8,7 +8,7 @@ piholeIP=$(hostname -I)
|
|
|
|
|
# Ad-list sources--one per line in single quotes
|
|
|
|
|
sources=('https://adaway.org/hosts.txt'
|
|
|
|
|
'http://adblock.gjtech.net/?format=unix-hosts'
|
|
|
|
|
'http://adblock.mahakala.is/'
|
|
|
|
|
#'http://adblock.mahakala.is/'
|
|
|
|
|
'http://hosts-file.net/.%5Cad_servers.txt'
|
|
|
|
|
'http://www.malwaredomainlist.com/hostslist/hosts.txt'
|
|
|
|
|
'http://pgl.yoyo.org/adservers/serverlist.php?'
|
|
|
|
@ -19,9 +19,6 @@ sources=('https://adaway.org/hosts.txt'
|
|
|
|
|
adList=/etc/pihole/gravity.list
|
|
|
|
|
origin=/etc/pihole
|
|
|
|
|
piholeDir=/etc/pihole
|
|
|
|
|
if [[ -f $piholeDir/pihole.conf ]];then
|
|
|
|
|
. $piholeDir/pihole.conf
|
|
|
|
|
fi
|
|
|
|
|
justDomainsExtension=domains
|
|
|
|
|
matter=pihole.0.matter.txt
|
|
|
|
|
andLight=pihole.1.andLight.txt
|
|
|
|
@ -30,10 +27,14 @@ eventHorizon=pihole.3.eventHorizon.txt
|
|
|
|
|
accretionDisc=pihole.4.accretionDisc.txt
|
|
|
|
|
eyeOfTheNeedle=pihole.5.wormhole.txt
|
|
|
|
|
blacklist=$piholeDir/blacklist.txt
|
|
|
|
|
latentBlacklist=$origin/latentBlacklist.txt
|
|
|
|
|
whitelist=$piholeDir/whitelist.txt
|
|
|
|
|
latentWhitelist=$origin/latentWhitelist.txt
|
|
|
|
|
|
|
|
|
|
# After setting defaults, check if there's local overrides
|
|
|
|
|
if [[ -r $piholeDir/pihole.conf ]];then
|
|
|
|
|
echo "** Local calibration requested..."
|
|
|
|
|
. $piholeDir/pihole.conf
|
|
|
|
|
fi
|
|
|
|
|
echo "** Neutrino emissions detected..."
|
|
|
|
|
|
|
|
|
|
# Create the pihole resource directory if it doesn't exist. Future files will be stored here
|
|
|
|
@ -50,23 +51,23 @@ do
|
|
|
|
|
url=${sources[$i]}
|
|
|
|
|
# Get just the domain from the URL
|
|
|
|
|
domain=$(echo "$url" | cut -d'/' -f3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Save the file as list.#.domain
|
|
|
|
|
saveLocation=$origin/list.$i.$domain.$justDomainsExtension
|
|
|
|
|
|
|
|
|
|
agent="Mozilla/10.0"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo -n "Getting $domain list... "
|
|
|
|
|
|
|
|
|
|
# Use a case statement to download lists that need special cURL commands
|
|
|
|
|
# Use a case statement to download lists that need special cURL commands
|
|
|
|
|
# to complete properly and reset the user agent when required
|
|
|
|
|
case "$domain" in
|
|
|
|
|
"adblock.mahakala.is")
|
|
|
|
|
"adblock.mahakala.is")
|
|
|
|
|
agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0'
|
|
|
|
|
cmd="curl -e http://forum.xda-developers.com/"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
"pgl.yoyo.org")
|
|
|
|
|
|
|
|
|
|
"pgl.yoyo.org")
|
|
|
|
|
cmd="curl -d mimetype=plaintext -d hostformat=hosts"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
@ -77,14 +78,14 @@ do
|
|
|
|
|
# tmp file, so we don't have to store the (long!) lists in RAM
|
|
|
|
|
patternBuffer=`mktemp`
|
|
|
|
|
heisenbergCompensator=""
|
|
|
|
|
if [ -r $saveLocation ]; then
|
|
|
|
|
if [ -r $saveLocation ]; then
|
|
|
|
|
heisenbergCompensator="-z $saveLocation"
|
|
|
|
|
fi
|
|
|
|
|
CMD="$cmd -s $heisenbergCompensator -A '$agent' $url > $patternBuffer"
|
|
|
|
|
echo "** Engaging pattern transference..."
|
|
|
|
|
$cmd -s $heisenbergCompensator -A "$agent" $url > $patternBuffer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [[ -s "$patternBuffer" ]];then
|
|
|
|
|
# Remove comments and print only the domain name
|
|
|
|
|
# Most of the lists downloaded are already in hosts file format but the spacing/formating is not contigious
|
|
|
|
@ -116,11 +117,11 @@ fi
|
|
|
|
|
function gravity_advanced() {
|
|
|
|
|
|
|
|
|
|
numberOf=$(wc -l < $origin/$andLight)
|
|
|
|
|
echo "** $numberOf domains being pulled in by gravity..."
|
|
|
|
|
echo "** $numberOf domains being pulled in by gravity..."
|
|
|
|
|
|
|
|
|
|
# Remove carriage returns and preceding whitespace
|
|
|
|
|
# not really needed anymore?
|
|
|
|
|
cp $origin/$andLight $origin/$supernova
|
|
|
|
|
cp $origin/$andLight $origin/$supernova
|
|
|
|
|
|
|
|
|
|
# Sort and remove duplicates
|
|
|
|
|
sort -u $origin/$supernova > $origin/$eventHorizon
|
|
|
|
@ -135,13 +136,13 @@ function gravity_advanced() {
|
|
|
|
|
sudo cp $origin/$accretionDisc $adList
|
|
|
|
|
kill -HUP $(pidof dnsmasq)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Whitelist (if applicable) then remove duplicates and format for dnsmasq
|
|
|
|
|
if [[ -r $whitelist ]];then
|
|
|
|
|
# Remove whitelist entries
|
|
|
|
|
numberOf=$(cat $whitelist | sed '/^\s*$/d' | wc -l)
|
|
|
|
|
plural=; [[ "$numberOf" != "1" ]] && plural=s
|
|
|
|
|
echo "** Whitelisting $numberOf $whitelist domain${plural}..."
|
|
|
|
|
echo "** Whitelisting $numberOf domain${plural}..."
|
|
|
|
|
|
|
|
|
|
# Append a "$" to the end, prepend a "^" to the beginning, and
|
|
|
|
|
# replace "." with "\." of each line to turn each entry into a
|
|
|
|
|