From 192c627e279cbe3a91b8e4d5f870f0f4e556c28a Mon Sep 17 00:00:00 2001 From: Tommy Huff Date: Wed, 5 Oct 2016 20:13:08 -0400 Subject: [PATCH] Make gravity / bblacklist / whitlist and make use of pihole.conf --- advanced/Scripts/blacklist.sh | 25 +++--------- advanced/Scripts/whitelist.sh | 28 ++++--------- gravity.sh | 74 +++++++++++++---------------------- pihole.conf | 23 +++++++++++ 4 files changed, 65 insertions(+), 85 deletions(-) create mode 100644 pihole.conf diff --git a/advanced/Scripts/blacklist.sh b/advanced/Scripts/blacklist.sh index a289a9a5..75daa8ec 100755 --- a/advanced/Scripts/blacklist.sh +++ b/advanced/Scripts/blacklist.sh @@ -45,22 +45,16 @@ if [[ $# = 0 ]]; then helpFunc fi -#globals -basename=pihole -piholeDir=/etc/${basename} -adList=${piholeDir}/gravity.list -blacklist=${piholeDir}/blacklist.txt -reload=true -addmode=true -force=false -verbose=true +# After setting defaults, check if there's local overrides +if [[ -r ../../pihole.conf ]];then + echo "::: Local calibration requested..." + source ../../pihole.conf +fi + domList=() domToRemoveList=() -piholeIPfile=/etc/pihole/piholeIP -piholeIPv6file=/etc/pihole/.useIPv6 - if [[ -f ${piholeIPfile} ]];then # If the file exists, it means it was exported from the installation script and we should use that value instead of detecting it in this script piholeIP=$(cat ${piholeIPfile}) @@ -74,13 +68,6 @@ fi modifyHost=false -# After setting defaults, check if there's local overrides -if [[ -r ${piholeDir}/pihole.conf ]];then - echo "::: Local calibration requested..." - . ${piholeDir}/pihole.conf -fi - - if [[ -f ${piholeIPv6file} ]];then # If the file exists, then the user previously chose to use IPv6 in the automated installer piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') diff --git a/advanced/Scripts/whitelist.sh b/advanced/Scripts/whitelist.sh index 75d62173..f065c7d5 100755 --- a/advanced/Scripts/whitelist.sh +++ b/advanced/Scripts/whitelist.sh @@ -45,22 +45,16 @@ if [[ $# = 0 ]]; then helpFunc fi -#globals -basename=pihole -piholeDir=/etc/${basename} -adList=${piholeDir}/gravity.list -whitelist=${piholeDir}/whitelist.txt -reload=true -addmode=true -force=false -verbose=true +# After setting defaults, check if there's local overrides +if [[ -r ../../pihole.conf ]];then + echo "::: Local calibration requested..." + source ../../pihole.conf +fi + domList=() domToRemoveList=() -piholeIPfile=/etc/pihole/piholeIP -piholeIPv6file=/etc/pihole/.useIPv6 - if [[ -f ${piholeIPfile} ]];then # If the file exists, it means it was exported from the installation script and we should use that value instead of detecting it in this script piholeIP=$(cat ${piholeIPfile}) @@ -74,12 +68,6 @@ fi modifyHost=false -# After setting defaults, check if there's local overrides -if [[ -r ${piholeDir}/pihole.conf ]];then - echo "::: Local calibration requested..." - . ${piholeDir}/pihole.conf -fi - if [[ -f ${piholeIPv6file} ]];then # If the file exists, then the user previously chose to use IPv6 in the automated installer piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') @@ -160,8 +148,8 @@ function ModifyHostFile(){ plural=; [[ "$numberOf" != "1" ]] && plural=s echo ":::" echo -n "::: Modifying HOSTS file to whitelist $numberOf domain${plural}..." - awk -F':' '{print $1}' ${whitelist} | while read -r line; do echo "$piholeIP $line"; done > /etc/pihole/whitelist.tmp - awk -F':' '{print $1}' ${whitelist} | while read -r line; do echo "$piholeIPv6 $line"; done >> /etc/pihole/whitelist.tmp + awk -F':' '{print $1}' ${whitelist} | while read -r line; do echo "$piholeIP $line"; done > ${piholeDir}/whitelist.tmp + awk -F':' '{print $1}' ${whitelist} | while read -r line; do echo "$piholeIPv6 $line"; done >> ${piholeDir}/whitelist.tmp echo "l" >> /etc/pihole/whitelist.tmp grep -F -x -v -f ${piholeDir}/whitelist.tmp ${adList} > ${piholeDir}/gravity.tmp rm ${adList} diff --git a/gravity.sh b/gravity.sh index 0b1622e0..7e3ae6ff 100755 --- a/gravity.sh +++ b/gravity.sh @@ -39,13 +39,6 @@ function helpFunc() exit 1 } -piholeIPfile=/etc/pihole/piholeIP -piholeIPv6file=/etc/pihole/.useIPv6 - -adListFile=/etc/pihole/adlists.list -adListDefault=/etc/pihole/adlists.default -whitelistScript=/opt/pihole/whitelist.sh -blacklistScript=/opt/pihole/blacklist.sh if [[ -f ${piholeIPfile} ]];then # If the file exists, it means it was exported from the installation script and we should use that value instead of detecting it in this script @@ -63,25 +56,10 @@ if [[ -f ${piholeIPv6file} ]];then piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') fi -# Variables for various stages of downloading and formatting the list -## Nate 3/26/2016 - Commented unused variables -basename=pihole -piholeDir=/etc/${basename} -adList=${piholeDir}/gravity.list -#blacklist=$piholeDir/blacklist.txt -#whitelist=$piholeDir/whitelist.txt -#latentWhitelist=$piholeDir/latentWhitelist.txt -justDomainsExtension=domains -matterandlight=${basename}.0.matterandlight.txt -supernova=${basename}.1.supernova.txt -eventHorizon=${basename}.2.eventHorizon.txt -accretionDisc=${basename}.3.accretionDisc.txt -#eyeOfTheNeedle=$basename.4.wormhole.txt - # After setting defaults, check if there's local overrides -if [[ -r ${piholeDir}/pihole.conf ]];then +if [[ -r pihole.conf ]];then echo "::: Local calibration requested..." - . ${piholeDir}/pihole.conf + source pihole.conf fi ########################### @@ -226,7 +204,7 @@ function gravity_Blacklist(){ echo -n "::: Running blacklist script to update HOSTS file...." ${blacklistScript} -f -nr -q > /dev/null - numBlacklisted=$(wc -l < "/etc/pihole/blacklist.txt") + numBlacklisted=$(wc -l < "${blacklist}") plural=; [[ "$numBlacklisted" != "1" ]] && plural=s echo " $numBlacklisted domain${plural} blacklisted!" } @@ -247,7 +225,7 @@ function gravity_Whitelist() { echo -n "::: Running whitelist script to update HOSTS file...." ${whitelistScript} -f -nr -q "${urls[@]}" > /dev/null - numWhitelisted=$(wc -l < "/etc/pihole/whitelist.txt") + numWhitelisted=$(wc -l < "${whitelist}") plural=; [[ "$numWhitelisted" != "1" ]] && plural=s echo " $numWhitelisted domain${plural} whitelisted!" } @@ -316,27 +294,31 @@ function gravity_reload() { echo -n "::: Cleaning up un-needed files..." ${SUDO} rm ${piholeDir}/pihole.*.txt echo " done!" - - # Reload hosts file - echo ":::" - echo -n "::: Refresh lists in dnsmasq..." - - #ensure /etc/dnsmasq.d/01-pihole.conf is pointing at the correct list! - #First escape forward slashes in the path: - adList=${adList//\//\\\/} - #Now replace the line in dnsmasq file - ${SUDO} sed -i "s/^addn-hosts.*/addn-hosts=$adList/" /etc/dnsmasq.d/01-pihole.conf - dnsmasqPid=$(pidof dnsmasq) - - find "$piholeDir" -type f -exec ${SUDO} chmod 666 {} \; - - if [[ ${dnsmasqPid} ]]; then - # service already running - reload config - ${SUDO} killall -s HUP dnsmasq + if [ ${etchosts} == "1" ] ; then + ${SUDO} cp ${adList} /etc/hosts else - # service not running, start it up - ${SUDO} service dnsmasq start + # Reload hosts file + echo ":::" + echo -n "::: Refresh lists in dnsmasq..." + + #ensure /etc/dnsmasq.d/01-pihole.conf is pointing at the correct list! + #First escape forward slashes in the path: + adList=${adList//\//\\\/} + #Now replace the line in dnsmasq file + ${SUDO} sed -i "s/^addn-hosts.*/addn-hosts=$adList/" /etc/dnsmasq.d/01-pihole.conf + dnsmasqPid=$(pidof dnsmasq) + if [[ ${dnsmasqPid} ]]; then + # service already running - reload config + ${SUDO} killall -s HUP dnsmasq + else + # service not running, start it up + ${SUDO} service dnsmasq start + fi fi +# SHOULDNT NEED TO CHMOD THE WHOLE DIR +# find "$piholeDir" -type f -exec ${SUDO} chmod 666 {} \; + ${SUDO} chmod 644 "${adList}" + echo " done!" } @@ -357,7 +339,7 @@ if [[ ${forceGrav} == true ]]; then echo " done!" fi -${SUDO} cp /etc/.pihole/adlists.default /etc/pihole/adlists.default +#${SUDO} cp /etc/.pihole/adlists.default /etc/pihole/adlists.default gravity_collapse gravity_spinup gravity_Schwarzchild diff --git a/pihole.conf b/pihole.conf new file mode 100644 index 00000000..e95e2678 --- /dev/null +++ b/pihole.conf @@ -0,0 +1,23 @@ +#!/bin/bash +# Variables for various stages of downloading and formatting the list +## Nate 3/26/2016 - Commented unused variables +export basename=pihole +export piholeDir=/home/ubuntu/FORKHOLE/pi-hole +export adList=${piholeDir}/gravity.list +export adListFile=${piholeDir}/adlists.list +export adListDefault=${piholeDir}/adlists.default +export whitelistScript=${piholeDir}/advanced/Scripts/whitelist.sh +export blacklistScript=${piholeDir}/advanced/Scripts/blacklist.sh +export piholeIPfile=${piholeDir}/piholeIP +export piholeIPv6file=${piholeDir}/.useIPv6 +export blacklist=$piholeDir/blacklist.txt +export whitelist=$piholeDir/whitelist.txt +#export latentWhitelist=$piholeDir/latentWhitelist.txt +export justDomainsExtension=domains +export matterandlight=${basename}.0.matterandlight.txt +export supernova=${basename}.1.supernova.txt +export eventHorizon=${basename}.2.eventHorizon.txt +export accretionDisc=${basename}.3.accretionDisc.txt +#export eyeOfTheNeedle=$basename.4.wormhole.txt + +export etchosts=1 # Push to /ETC/Hosts/ or DNSMASQ