mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-12-04 20:13:17 +00:00
Merge branch 'development' of https://github.com/pi-hole/pi-hole into development
This commit is contained in:
commit
38a1b0c05b
7 changed files with 225 additions and 351 deletions
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
|
@ -1,4 +1,4 @@
|
||||||
**In raising this issue, I confirm the following (please check boxes, eg [X]):**
|
**In raising this issue, I confirm the following (please check boxes, eg [X]) Failure to fill the template will close your issue:**
|
||||||
|
|
||||||
- [] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md).
|
- [] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md).
|
||||||
- [] The issue I am reporting can be *replicated*
|
- [] The issue I am reporting can be *replicated*
|
||||||
|
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -1,4 +1,4 @@
|
||||||
**By submitting this pull request, I confirm the following (please check boxes, eg [X]):**
|
**By submitting this pull request, I confirm the following (please check boxes, eg [X])Failure to fill the template will close your PR:**
|
||||||
|
|
||||||
- [] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md).
|
- [] I have read and understood the [contributors guide](https://github.com/pi-hole/pi-hole/blob/master/CONTRIBUTING.md).
|
||||||
- [] I have checked that [another pull request](https://github.com/pi-hole/pi-hole/pulls) for this purpose does not exist.
|
- [] I have checked that [another pull request](https://github.com/pi-hole/pi-hole/pulls) for this purpose does not exist.
|
||||||
|
|
|
@ -19,7 +19,6 @@ helpFunc() {
|
||||||
::: Options:
|
::: Options:
|
||||||
::: -d, --delmode Remove domains from the blacklist
|
::: -d, --delmode Remove domains from the blacklist
|
||||||
::: -nr, --noreload Update blacklist without refreshing dnsmasq
|
::: -nr, --noreload Update blacklist without refreshing dnsmasq
|
||||||
::: -f, --force Force updating of the hosts files, even if there are no changes
|
|
||||||
::: -q, --quiet output is less verbose
|
::: -q, --quiet output is less verbose
|
||||||
::: -h, --help Show this help dialog
|
::: -h, --help Show this help dialog
|
||||||
::: -l, --list Display your blacklisted domains
|
::: -l, --list Display your blacklisted domains
|
||||||
|
@ -36,192 +35,106 @@ basename=pihole
|
||||||
piholeDir=/etc/${basename}
|
piholeDir=/etc/${basename}
|
||||||
adList=${piholeDir}/gravity.list
|
adList=${piholeDir}/gravity.list
|
||||||
blacklist=${piholeDir}/blacklist.txt
|
blacklist=${piholeDir}/blacklist.txt
|
||||||
reload=true
|
reload=false
|
||||||
addmode=true
|
addmode=true
|
||||||
force=false
|
|
||||||
verbose=true
|
verbose=true
|
||||||
|
|
||||||
domList=()
|
domList=()
|
||||||
domToRemoveList=()
|
domToRemoveList=()
|
||||||
|
|
||||||
piholeIPfile=/etc/pihole/piholeIP
|
HandleOther(){
|
||||||
piholeIPv6file=/etc/pihole/.useIPv6
|
#check validity of domain
|
||||||
|
validDomain=$(echo "$1" | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/')
|
||||||
if [[ -f ${piholeIPfile} ]]; then
|
if [ -z "$validDomain" ]; 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
|
echo "::: $1 is not a valid argument or domain name"
|
||||||
piholeIP=$(cat ${piholeIPfile})
|
|
||||||
#rm $piholeIPfile
|
|
||||||
else
|
|
||||||
# Otherwise, the IP address can be taken directly from the machine, which will happen when the script is run by the user and not the installation script
|
|
||||||
IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}')
|
|
||||||
piholeIPCIDR=$(ip -o -f inet addr show dev "$IPv4dev" | awk '{print $4}' | awk 'END {print}')
|
|
||||||
piholeIP=${piholeIPCIDR%/*}
|
|
||||||
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) }')
|
|
||||||
fi
|
|
||||||
|
|
||||||
HandleOther() {
|
|
||||||
#check validity of domain
|
|
||||||
validDomain=$(echo "${1}" | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/')
|
|
||||||
if [ -z "${validDomain}" ]; then
|
|
||||||
echo "::: ${1} is not a valid argument or domain name"
|
|
||||||
else
|
else
|
||||||
domList=("${domList[@]}" ${validDomain})
|
domList=("${domList[@]}" ${validDomain})
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
PopBlacklistFile() {
|
PopBlacklistFile() {
|
||||||
#check blacklist file exists, and if not, create it
|
#check blacklist file exists, and if not, create it
|
||||||
if [[ ! -f ${blacklist} ]]; then
|
if [[ ! -f ${blacklist} ]];then
|
||||||
touch ${blacklist}
|
touch ${blacklist}
|
||||||
fi
|
fi
|
||||||
for dom in "${domList[@]}"; do
|
for dom in "${domList[@]}"; do
|
||||||
if "${addmode}"; then
|
if "$addmode"; then
|
||||||
AddDomain "${dom}"
|
AddDomain "$dom"
|
||||||
else
|
else
|
||||||
RemoveDomain "${dom}"
|
RemoveDomain "$dom"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
AddDomain() {
|
AddDomain() {
|
||||||
#| sed 's/\./\\./g'
|
#| sed 's/\./\\./g'
|
||||||
bool=false
|
bool=false
|
||||||
grep -Ex -q "$1" ${blacklist} || bool=true
|
grep -Ex -q "$1" ${blacklist} || bool=true
|
||||||
if ${bool}; then
|
if ${bool}; then
|
||||||
#domain not found in the blacklist file, add it!
|
#domain not found in the blacklist file, add it!
|
||||||
if ${verbose}; then
|
if ${verbose}; then
|
||||||
echo -n "::: Adding $1 to blacklist file..."
|
echo -n "::: Adding $1 to blacklist file..."
|
||||||
fi
|
fi
|
||||||
echo "${1}" >> ${blacklist}
|
echo "$1" >> ${blacklist}
|
||||||
modifyHost=true
|
reload=true
|
||||||
echo " done!"
|
echo " done!"
|
||||||
else
|
else
|
||||||
if ${verbose}; then
|
if ${verbose}; then
|
||||||
echo "::: ${1} already exists in ${blacklist}! No need to add"
|
echo "::: $1 already exists in $blacklist! No need to add"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveDomain() {
|
RemoveDomain() {
|
||||||
bool=false
|
|
||||||
grep -Ex -q "$1" ${blacklist} || bool=true
|
|
||||||
if ${bool}; then
|
|
||||||
#Domain is not in the blacklist file, no need to Remove
|
|
||||||
if ${verbose}; then
|
|
||||||
echo "::: $1 is NOT blacklisted! No need to remove"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
#Domain is in the blacklist file, add to a temporary array
|
|
||||||
if ${verbose}; then
|
|
||||||
echo "::: Un-blacklisting ${dom}..."
|
|
||||||
fi
|
|
||||||
domToRemoveList=("${domToRemoveList[@]}" $1)
|
|
||||||
modifyHost=true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ModifyHostFile() {
|
bool=false
|
||||||
if ${addmode}; then
|
grep -Ex -q "$1" ${blacklist} || bool=true
|
||||||
#add domains to the hosts file
|
if ${bool}; then
|
||||||
if [[ -r ${blacklist} ]]; then
|
#Domain is not in the blacklist file, no need to Remove
|
||||||
numberOf=$(cat ${blacklist} | sed '/^\s*$/d' | wc -l)
|
if ${verbose}; then
|
||||||
plural=; [[ "${numberOf}" != "1" ]] && plural=s
|
echo "::: $1 is NOT blacklisted! No need to remove"
|
||||||
echo ":::"
|
fi
|
||||||
echo -n "::: Modifying HOSTS file to blacklist $numberOf domain${plural}..."
|
else
|
||||||
if [[ -n ${piholeIPv6} ]]; then
|
#Domain is in the blacklist file,remove it
|
||||||
cat ${blacklist} | awk -v ipv4addr="$piholeIP" -v ipv6addr="$piholeIPv6" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> ${adList}
|
if ${verbose}; then
|
||||||
else
|
echo "::: Un-blacklisting $dom..."
|
||||||
cat ${blacklist} | awk -v ipv4addr="$piholeIP" '{sub(/\r$/,""); print ipv4addr" "$0}' >>${adList}
|
fi
|
||||||
fi
|
echo "$1" | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' ${blacklist}
|
||||||
fi
|
reload=true
|
||||||
else
|
fi
|
||||||
echo ":::"
|
|
||||||
for dom in "${domToRemoveList[@]}"; do
|
|
||||||
#we need to remove the domains from the blacklist file and the host file
|
|
||||||
echo "::: ${dom}"
|
|
||||||
echo -n "::: removing from HOSTS file..."
|
|
||||||
echo "${dom}" | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /[^.]'{}'(?!.)/;' ${adList}
|
|
||||||
echo " done!"
|
|
||||||
echo -n "::: removing from blackist.txt..."
|
|
||||||
echo "${dom}" | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' ${blacklist}
|
|
||||||
echo " done!"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Reload() {
|
Reload() {
|
||||||
# Reload hosts file
|
pihole -g -sd
|
||||||
echo ":::"
|
|
||||||
echo -n "::: Refresh lists in dnsmasq..."
|
|
||||||
|
|
||||||
dnsmasqPid=$(pidof dnsmasq)
|
|
||||||
|
|
||||||
if [[ ${dnsmasqPid} ]]; then
|
|
||||||
# service already running - reload config
|
|
||||||
if [ -x "$(command -v systemctl)" ]; then
|
|
||||||
systemctl restart dnsmasq
|
|
||||||
else
|
|
||||||
service dnsmasq restart
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# service not running, start it up
|
|
||||||
if [ -x "$(command -v systemctl)" ]; then
|
|
||||||
systemctl start dnsmasq
|
|
||||||
else
|
|
||||||
service dnsmasq start
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo " done!"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayBlist() {
|
DisplayBlist() {
|
||||||
verbose=false
|
verbose=false
|
||||||
echo -e " Displaying Gravity Affected Domains \n"
|
echo -e " Displaying Gravity Affected Domains \n"
|
||||||
count=1
|
count=1
|
||||||
while IFS= read -r AD; do
|
while IFS= read -r AD
|
||||||
echo "${count}: ${AD}"
|
do
|
||||||
|
echo "${count}: $AD"
|
||||||
count=$((count+1))
|
count=$((count+1))
|
||||||
done < "${blacklist}"
|
done < "$blacklist"
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################################
|
###################################################
|
||||||
|
|
||||||
for var in "$@"; do
|
for var in "$@"
|
||||||
case "$var" in
|
do
|
||||||
"-nr"| "--noreload" ) reload=false;;
|
case "$var" in
|
||||||
"-d" | "--delmode" ) addmode=false;;
|
"-nr"| "--noreload" ) reload=false;;
|
||||||
"-f" | "--force" ) force=true;;
|
"-d" | "--delmode" ) addmode=false;;
|
||||||
"-q" | "--quiet" ) verbose=false;;
|
"-q" | "--quiet" ) verbose=false;;
|
||||||
"-h" | "--help" ) helpFunc;;
|
"-h" | "--help" ) helpFunc;;
|
||||||
"-l" | "--list" ) DisplayBlist;;
|
"-l" | "--list" ) DisplayBlist;;
|
||||||
* ) HandleOther "$var";;
|
* ) HandleOther "$var";;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
PopBlacklistFile
|
PopBlacklistFile
|
||||||
|
|
||||||
if ${modifyHost} || ${force}; then
|
|
||||||
ModifyHostFile
|
|
||||||
else
|
|
||||||
if ${verbose}; then
|
|
||||||
echo "::: No changes need to be made"
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${reload}; then
|
if ${reload}; then
|
||||||
Reload
|
Reload
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,7 +20,6 @@ helpFunc() {
|
||||||
::: Options:
|
::: Options:
|
||||||
::: -d, --delmode Remove domains from the whitelist
|
::: -d, --delmode Remove domains from the whitelist
|
||||||
::: -nr, --noreload Update Whitelist without refreshing dnsmasq
|
::: -nr, --noreload Update Whitelist without refreshing dnsmasq
|
||||||
::: -f, --force Force updating of the hosts files, even if there are no changes
|
|
||||||
::: -q, --quiet output is less verbose
|
::: -q, --quiet output is less verbose
|
||||||
::: -h, --help Show this help dialog
|
::: -h, --help Show this help dialog
|
||||||
::: -l, --list Display your whitelisted domains
|
::: -l, --list Display your whitelisted domains
|
||||||
|
@ -37,43 +36,15 @@ basename=pihole
|
||||||
piholeDir=/etc/${basename}
|
piholeDir=/etc/${basename}
|
||||||
adList=${piholeDir}/gravity.list
|
adList=${piholeDir}/gravity.list
|
||||||
whitelist=${piholeDir}/whitelist.txt
|
whitelist=${piholeDir}/whitelist.txt
|
||||||
reload=true
|
reload=false
|
||||||
addmode=true
|
addmode=true
|
||||||
force=false
|
|
||||||
verbose=true
|
verbose=true
|
||||||
|
|
||||||
domList=()
|
domList=()
|
||||||
domToRemoveList=()
|
domToRemoveList=()
|
||||||
|
|
||||||
piholeIPfile=/etc/pihole/piholeIP
|
HandleOther(){
|
||||||
piholeIPv6file=/etc/pihole/.useIPv6
|
#check validity of domain
|
||||||
|
|
||||||
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})
|
|
||||||
#rm $piholeIPfile
|
|
||||||
else
|
|
||||||
# Otherwise, the IP address can be taken directly from the machine, which will happen when the script is run by the user and not the installation script
|
|
||||||
IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}')
|
|
||||||
piholeIPCIDR=$(ip -o -f inet addr show dev "${IPv4dev}" | awk '{print $4}' | awk 'END {print}')
|
|
||||||
piholeIP=${piholeIPCIDR%/*}
|
|
||||||
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) }')
|
|
||||||
fi
|
|
||||||
|
|
||||||
HandleOther() {
|
|
||||||
#check validity of domain
|
|
||||||
validDomain=$(echo "$1" | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/')
|
validDomain=$(echo "$1" | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/')
|
||||||
if [ -z "${validDomain}" ]; then
|
if [ -z "${validDomain}" ]; then
|
||||||
echo "::: $1 is not a valid argument or domain name"
|
echo "::: $1 is not a valid argument or domain name"
|
||||||
|
@ -102,15 +73,15 @@ AddDomain() {
|
||||||
|
|
||||||
grep -Ex -q "$1" ${whitelist} || bool=true
|
grep -Ex -q "$1" ${whitelist} || bool=true
|
||||||
if ${bool}; then
|
if ${bool}; then
|
||||||
#domain not found in the whitelist file, add it!
|
#domain not found in the whitelist file, add it!
|
||||||
if ${verbose}; then
|
if ${verbose}; then
|
||||||
echo -n "::: Adding ${1}to ${whitelist}..."
|
echo -n "::: Adding $1 to $whitelist..."
|
||||||
fi
|
fi
|
||||||
echo "${1}" >> ${whitelist}
|
reload=true
|
||||||
modifyHost=true
|
echo "$1" >> ${whitelist}
|
||||||
if ${verbose}; then
|
if ${verbose}; then
|
||||||
echo " done!"
|
echo " done!"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if ${verbose}; then
|
if ${verbose}; then
|
||||||
echo "::: ${1} already exists in ${whitelist}, no need to add!"
|
echo "::: ${1} already exists in ${whitelist}, no need to add!"
|
||||||
|
@ -120,88 +91,22 @@ AddDomain() {
|
||||||
|
|
||||||
RemoveDomain() {
|
RemoveDomain() {
|
||||||
|
|
||||||
bool=false
|
bool=false
|
||||||
grep -Ex -q "$1" ${whitelist} || bool=true
|
grep -Ex -q "$1" ${whitelist} || bool=true
|
||||||
if ${bool}; then
|
if ${bool}; then
|
||||||
#Domain is not in the whitelist file, no need to Remove
|
#Domain is not in the whitelist file, no need to Remove
|
||||||
if ${verbose}; then
|
if ${verbose}; then
|
||||||
echo "::: ${1} is NOT whitelisted! No need to remove"
|
echo "::: $1 is NOT whitelisted! No need to remove"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
#Domain is in the whitelist file, add to a temporary array and remove from whitelist file
|
echo "$1" | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' ${whitelist}
|
||||||
#if $verbose; then
|
reload=true
|
||||||
#echo "::: Un-whitelisting $dom..."
|
fi
|
||||||
#fi
|
|
||||||
domToRemoveList=("${domToRemoveList[@]}" ${1})
|
|
||||||
modifyHost=true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ModifyHostFile() {
|
|
||||||
if ${addmode}; then
|
|
||||||
#remove domains in from hosts file
|
|
||||||
if [[ -r ${whitelist} ]]; then
|
|
||||||
# Remove whitelist entries
|
|
||||||
numberOf=$(cat ${whitelist} | sed '/^\s*$/d' | wc -l)
|
|
||||||
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
|
|
||||||
echo "l" >> /etc/pihole/whitelist.tmp
|
|
||||||
grep -F -x -v -f ${piholeDir}/whitelist.tmp ${adList} > ${piholeDir}/gravity.tmp
|
|
||||||
rm ${adList}
|
|
||||||
mv ${piholeDir}/gravity.tmp ${adList}
|
|
||||||
rm ${piholeDir}/whitelist.tmp
|
|
||||||
echo " done!"
|
|
||||||
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
#we need to add the removed domains to the hosts file
|
|
||||||
echo ":::"
|
|
||||||
echo "::: Modifying HOSTS file to un-whitelist domains..."
|
|
||||||
for rdom in "${domToRemoveList[@]}"; do
|
|
||||||
if grep -q "${rdom}" /etc/pihole/*.domains; then
|
|
||||||
echo "::: AdLists contain ${rdom}, re-adding block"
|
|
||||||
if [[ -n ${piholeIPv6} ]]; then
|
|
||||||
echo -n "::: Restoring block for ${rdom} on IPv4 and IPv6..."
|
|
||||||
echo "${rdom}" | awk -v ipv4addr="${piholeIP}" -v ipv6addr="${piholeIPv6}" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> ${adList}
|
|
||||||
echo " done!"
|
|
||||||
else
|
|
||||||
echo -n "::: Restoring block for ${rdom} on IPv4..."
|
|
||||||
echo "${rdom}" | awk -v ipv4addr="${piholeIP}" '{sub(/\r$/,""); print ipv4addr" "$0}' >>${adList}
|
|
||||||
echo " done!"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo -n "::: Removing $rdom from $whitelist..."
|
|
||||||
echo "$rdom" | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' ${whitelist}
|
|
||||||
echo " done!"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Reload() {
|
Reload() {
|
||||||
# Reload hosts file
|
# Reload hosts file
|
||||||
echo ":::"
|
pihole -g -sd
|
||||||
echo -n "::: Refresh lists in dnsmasq..."
|
|
||||||
dnsmasqPid=$(pidof dnsmasq)
|
|
||||||
|
|
||||||
if [[ ${dnsmasqPid} ]]; then
|
|
||||||
# service already running - reload config
|
|
||||||
if [ -x "$(command -v systemctl)" ]; then
|
|
||||||
systemctl restart dnsmasq
|
|
||||||
else
|
|
||||||
service dnsmasq restart
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# service not running, start it up
|
|
||||||
if [ -x "$(command -v systemctl)" ]; then
|
|
||||||
systemctl start dnsmasq
|
|
||||||
else
|
|
||||||
service dnsmasq start
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo " done!"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayWlist() {
|
DisplayWlist() {
|
||||||
|
@ -212,6 +117,7 @@ DisplayWlist() {
|
||||||
echo "${count}: ${RD}"
|
echo "${count}: ${RD}"
|
||||||
count=$((count+1))
|
count=$((count+1))
|
||||||
done < "${whitelist}"
|
done < "${whitelist}"
|
||||||
|
exit 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
###################################################
|
###################################################
|
||||||
|
@ -230,16 +136,6 @@ done
|
||||||
|
|
||||||
PopWhitelistFile
|
PopWhitelistFile
|
||||||
|
|
||||||
if ${modifyHost} || ${force}; then
|
|
||||||
ModifyHostFile
|
|
||||||
else
|
|
||||||
if ${verbose}; then
|
|
||||||
echo ":::"
|
|
||||||
echo "::: No changes need to be made"
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${reload}; then
|
if ${reload}; then
|
||||||
Reload
|
Reload
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -21,10 +21,6 @@
|
||||||
# Pi-hole: Update Pi-hole! Uncomment to enable auto update
|
# Pi-hole: Update Pi-hole! Uncomment to enable auto update
|
||||||
#30 2 * * 7 root /usr/local/bin/pihole updatePihole
|
#30 2 * * 7 root /usr/local/bin/pihole updatePihole
|
||||||
|
|
||||||
# Pi-hole: Parse the log file before it is flushed and save the stats to a database
|
|
||||||
# This will be used for a historical view of your Pi-hole's performance
|
|
||||||
#50 23 * * * root /usr/local/bin/dailyLog.sh # note: this is outdated
|
|
||||||
|
|
||||||
# Pi-hole: Flush the log daily at 00:00 so it doesn't get out of control
|
# Pi-hole: Flush the log daily at 00:00 so it doesn't get out of control
|
||||||
# Stats will be viewable in the Web interface thanks to the cron job above
|
# Stats will be viewable in the Web interface thanks to the cron job above
|
||||||
00 00 * * * root /usr/local/bin/pihole flush
|
00 00 * * * root /usr/local/bin/pihole flush
|
||||||
|
|
154
gravity.sh
154
gravity.sh
|
@ -31,6 +31,8 @@ adListFile=/etc/pihole/adlists.list
|
||||||
adListDefault=/etc/pihole/adlists.default
|
adListDefault=/etc/pihole/adlists.default
|
||||||
whitelistScript=/opt/pihole/whitelist.sh
|
whitelistScript=/opt/pihole/whitelist.sh
|
||||||
blacklistScript=/opt/pihole/blacklist.sh
|
blacklistScript=/opt/pihole/blacklist.sh
|
||||||
|
whitelistFile=/etc/pihole/whitelist.txt
|
||||||
|
blacklistFile=/etc/pihole/blacklist.txt
|
||||||
|
|
||||||
#Source the setupVars from install script for the IP
|
#Source the setupVars from install script for the IP
|
||||||
setupVars=/etc/pihole/setupVars.conf
|
setupVars=/etc/pihole/setupVars.conf
|
||||||
|
@ -43,7 +45,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Remove the /* from the end of the IPv4addr.
|
#Remove the /* from the end of the IPv4addr.
|
||||||
IPv4addr=${IPv4_address%/*}
|
IPv4_address=${IPv4_address%/*}
|
||||||
|
|
||||||
# Variables for various stages of downloading and formatting the list
|
# Variables for various stages of downloading and formatting the list
|
||||||
basename=pihole
|
basename=pihole
|
||||||
|
@ -52,9 +54,12 @@ adList=${piholeDir}/gravity.list
|
||||||
justDomainsExtension=domains
|
justDomainsExtension=domains
|
||||||
matterAndLight=${basename}.0.matterandlight.txt
|
matterAndLight=${basename}.0.matterandlight.txt
|
||||||
supernova=${basename}.1.supernova.txt
|
supernova=${basename}.1.supernova.txt
|
||||||
eventHorizon=${basename}.2.eventHorizon.txt
|
preEventHorizon=list.preEventHorizon
|
||||||
|
eventHorizon=${basename}.2.supernova.txt
|
||||||
accretionDisc=${basename}.3.accretionDisc.txt
|
accretionDisc=${basename}.3.accretionDisc.txt
|
||||||
|
|
||||||
|
skipDownload=false
|
||||||
|
|
||||||
# Warn users still using pihole.conf that it no longer has any effect (I imagine about 2 people use it)
|
# Warn users still using pihole.conf that it no longer has any effect (I imagine about 2 people use it)
|
||||||
if [[ -r ${piholeDir}/pihole.conf ]]; then
|
if [[ -r ${piholeDir}/pihole.conf ]]; then
|
||||||
echo "::: pihole.conf file no longer supported. Over-rides in this file are ignored."
|
echo "::: pihole.conf file no longer supported. Over-rides in this file are ignored."
|
||||||
|
@ -93,20 +98,6 @@ gravity_collapse() {
|
||||||
done < ${adListDefault}
|
done < ${adListDefault}
|
||||||
echo " done!"
|
echo " done!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create the pihole resource directory if it doesn't exist. Future files will be stored here
|
|
||||||
if [[ -d ${piholeDir} ]]; then
|
|
||||||
# Temporary hack to allow non-root access to pihole directory
|
|
||||||
# Will update later, needed for existing installs, new installs should
|
|
||||||
# create this directory as non-root
|
|
||||||
chmod 777 ${piholeDir}
|
|
||||||
echo ":::"
|
|
||||||
echo "::: Existing pihole directory found"
|
|
||||||
else
|
|
||||||
echo "::: Creating pihole directory..."
|
|
||||||
mkdir ${piholeDir}
|
|
||||||
chmod 777 ${piholeDir}
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# patternCheck - check to see if curl downloaded any new files.
|
# patternCheck - check to see if curl downloaded any new files.
|
||||||
|
@ -117,7 +108,7 @@ gravity_patternCheck() {
|
||||||
# Some of the blocklists are copyright, they need to be downloaded
|
# Some of the blocklists are copyright, they need to be downloaded
|
||||||
# and stored as is. They can be processed for content after they
|
# and stored as is. They can be processed for content after they
|
||||||
# have been saved.
|
# have been saved.
|
||||||
cp "${patternBuffer}" "${saveLocation}"
|
mv "${patternBuffer}" "${saveLocation}"
|
||||||
echo " List updated, transport successful!"
|
echo " List updated, transport successful!"
|
||||||
else
|
else
|
||||||
# curl didn't download any host files, probably because of the date check
|
# curl didn't download any host files, probably because of the date check
|
||||||
|
@ -143,8 +134,6 @@ gravity_transport() {
|
||||||
curl -s -L ${cmd_ext} ${heisenbergCompensator} -A "${agent}" ${url} > ${patternBuffer}
|
curl -s -L ${cmd_ext} ${heisenbergCompensator} -A "${agent}" ${url} > ${patternBuffer}
|
||||||
# Check for list updates
|
# Check for list updates
|
||||||
gravity_patternCheck "${patternBuffer}"
|
gravity_patternCheck "${patternBuffer}"
|
||||||
# Cleanup
|
|
||||||
rm -f "${patternBuffer}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# spinup - main gravity function
|
# spinup - main gravity function
|
||||||
|
@ -162,8 +151,6 @@ gravity_spinup() {
|
||||||
|
|
||||||
agent="Mozilla/10.0"
|
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
|
# to complete properly and reset the user agent when required
|
||||||
case "${domain}" in
|
case "${domain}" in
|
||||||
|
@ -176,10 +163,13 @@ gravity_spinup() {
|
||||||
cmd_ext="-d mimetype=plaintext -d hostformat=hosts"
|
cmd_ext="-d mimetype=plaintext -d hostformat=hosts"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# Default is a simple request
|
# Default is a simple request
|
||||||
*) cmd_ext=""
|
*) cmd_ext=""
|
||||||
esac
|
esac
|
||||||
gravity_transport "${url}" "${cmd_ext}" "${agent}"
|
if [[ "${skipDownload}" == false ]]; then
|
||||||
|
echo -n "::: Getting $domain list..."
|
||||||
|
gravity_transport "$url" "$cmd_ext" "$agent"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,19 +187,20 @@ gravity_Schwarzchild() {
|
||||||
|
|
||||||
gravity_Blacklist() {
|
gravity_Blacklist() {
|
||||||
# Append blacklist entries if they exist
|
# Append blacklist entries if they exist
|
||||||
echo -n "::: Running blacklist script to update HOSTS file...."
|
numBlacklisted=$(wc -l < "${blacklistFile}")
|
||||||
${blacklistScript} -f -nr -q > /dev/null
|
plural=; [[ "$numBlacklisted" != "1" ]] && plural=s
|
||||||
|
|
||||||
numBlacklisted=$(wc -l < "/etc/pihole/blacklist.txt")
|
echo -n "::: BlackListing $numBlacklisted domain${plural}..."
|
||||||
plural=; [[ "${numBlacklisted}" != "1" ]] && plural=s
|
cat ${blacklistFile} >> ${piholeDir}/${eventHorizon}
|
||||||
echo " ${numBlacklisted} domain${plural} blacklisted!"
|
echo " done!"
|
||||||
}
|
}
|
||||||
|
|
||||||
gravity_Whitelist() {
|
gravity_Whitelist() {
|
||||||
|
#${piholeDir}/${eventHorizon})
|
||||||
echo ":::"
|
echo ":::"
|
||||||
# Prevent our sources from being pulled into the hole
|
# Prevent our sources from being pulled into the hole
|
||||||
plural=; [[ "${sources[@]}" != "1" ]] && plural=s
|
plural=; [[ "${sources[@]}" != "1" ]] && plural=s
|
||||||
echo -n "::: Adding ${#sources[@]} adlist source${plural} to the whitelist..."
|
echo -n "::: Adding adlist source${plural} to the whitelist..."
|
||||||
|
|
||||||
urls=()
|
urls=()
|
||||||
for url in "${sources[@]}"; do
|
for url in "${sources[@]}"; do
|
||||||
|
@ -218,20 +209,24 @@ gravity_Whitelist() {
|
||||||
done
|
done
|
||||||
echo " done!"
|
echo " done!"
|
||||||
|
|
||||||
echo -n "::: Running whitelist script to update HOSTS file...."
|
# Ensure adlist domains are in whitelist.txt
|
||||||
${whitelistScript} -f -nr -q "${urls[@]}" > /dev/null
|
${whitelistScript} -nr -q "${urls[@]}" > /dev/null
|
||||||
numWhitelisted=$(wc -l < "/etc/pihole/whitelist.txt")
|
|
||||||
plural=; [[ "${numWhitelisted}" != "1" ]] && plural=s
|
# Remove anything in whitelist.txt from the Event Horizon
|
||||||
echo " ${numWhitelisted} domain${plural} whitelisted!"
|
numWhitelisted=$(wc -l < "${whitelistFile}")
|
||||||
|
plural=; [[ "$numWhitelisted" != "1" ]] && plural=s
|
||||||
|
echo -n "::: Whitelisting $numWhitelisted domain${plural}..."
|
||||||
|
grep -F -x -v -f ${whitelistFile} ${piholeDir}/${preEventHorizon} > ${piholeDir}/${eventHorizon}
|
||||||
|
echo " done!"
|
||||||
}
|
}
|
||||||
|
|
||||||
gravity_unique() {
|
gravity_unique() {
|
||||||
# Sort and remove duplicates
|
# Sort and remove duplicates
|
||||||
echo -n "::: Removing duplicate domains...."
|
echo -n "::: Removing duplicate domains...."
|
||||||
sort -u ${piholeDir}/${supernova} > ${piholeDir}/${eventHorizon}
|
sort -u ${piholeDir}/${supernova} > ${piholeDir}/${preEventHorizon}
|
||||||
echo " done!"
|
echo " done!"
|
||||||
numberOf=$(wc -l < ${piholeDir}/${eventHorizon})
|
numberOf=$(wc -l < ${piholeDir}/${preEventHorizon})
|
||||||
echo "::: ${numberOf} unique domains trapped in the event horizon."
|
echo "::: $numberOf unique domains trapped in the event horizon."
|
||||||
}
|
}
|
||||||
|
|
||||||
gravity_hostFormat() {
|
gravity_hostFormat() {
|
||||||
|
@ -244,17 +239,30 @@ gravity_hostFormat() {
|
||||||
else
|
else
|
||||||
echo "::: Error: Unable to determine fully qualified domain name of host"
|
echo "::: Error: Unable to determine fully qualified domain name of host"
|
||||||
fi
|
fi
|
||||||
# If there is a value in the $piholeIPv6, then IPv6 will be used, so the awk command modified to create a line for both protocols
|
|
||||||
if [[ -n "${IPv6_address}" ]]; then
|
# Check vars from setupVars.conf to see if we're using IPv4, IPv6, Or both.
|
||||||
# Add hostname and dummy domain to the top of gravity.list to make ping result return a friendlier looking domain! Also allows for an easy way to access the Pi-hole admin console (pi.hole/admin)
|
if [[ -n "${IPv4_address}" && -n "${IPv6_address}" ]];then
|
||||||
echo -e "${IPv4addr} ${hostname}\n${IPv6_address} ${hostname}\n${IPv4addr} pi.hole\n${IPv6_address} pi.hole" > ${piholeDir}/${accretionDisc}
|
|
||||||
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="${IPv4addr}" -v ipv6addr="${IPv6_address}" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
# Both IPv4 and IPv6
|
||||||
else
|
echo -e "$IPv4_address $hostname\n$IPv6_address $hostname\n$IPv4_address pi.hole\n$IPv6_address pi.hole" > ${piholeDir}/${accretionDisc}
|
||||||
# Otherwise, just create gravity.list as normal using IPv4
|
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="$IPv4_address" -v ipv6addr="$IPv6_address" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
||||||
# Add hostname and dummy domain to the top of gravity.list to make ping result return a friendlier looking domain! Also allows for an easy way to access the Pi-hole admin console (pi.hole/admin)
|
|
||||||
echo -e "${IPv4addr} ${hostname}\n${IPv4addr} pi.hole" > ${piholeDir}/${accretionDisc}
|
elif [[ -n "${IPv4_address}" && -z "${IPv6_address}" ]];then
|
||||||
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="${IPv4addr}" '{sub(/\r$/,""); print ipv4addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
|
||||||
fi
|
# Only IPv4
|
||||||
|
echo -e "$IPv4_address $hostname\n$IPv4_address pi.hole" > ${piholeDir}/${accretionDisc}
|
||||||
|
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="$IPv4_address" '{sub(/\r$/,""); print ipv4addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
||||||
|
|
||||||
|
elif [[ -z "${IPv4_address}" && -n "${IPv6_address}" ]];then
|
||||||
|
|
||||||
|
# Only IPv6
|
||||||
|
echo -e "$IPv6_address $hostname\n$IPv6_address pi.hole" > ${piholeDir}/${accretionDisc}
|
||||||
|
cat ${piholeDir}/${eventHorizon} | awk -v ipv6addr="$IPv6_address" '{sub(/\r$/,""); print ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
||||||
|
|
||||||
|
elif [[ -z "${IPv4_address}" && -z "${IPv6_address}" ]];then
|
||||||
|
echo "::: No IP Values found! Please run 'pihole -r' and choose reconfigure to restore values"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Copy the file over as /etc/pihole/gravity.list so dnsmasq can use it
|
# Copy the file over as /etc/pihole/gravity.list so dnsmasq can use it
|
||||||
cp ${piholeDir}/${accretionDisc} ${adList}
|
cp ${piholeDir}/${accretionDisc} ${adList}
|
||||||
|
@ -300,43 +308,26 @@ gravity_reload() {
|
||||||
|
|
||||||
# Reload hosts file
|
# Reload hosts file
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo -n "::: Refresh lists in dnsmasq..."
|
echo "::: Refresh lists in dnsmasq..."
|
||||||
|
|
||||||
#ensure /etc/dnsmasq.d/01-pihole.conf is pointing at the correct list!
|
#ensure /etc/dnsmasq.d/01-pihole.conf is pointing at the correct list!
|
||||||
#First escape forward slashes in the path:
|
#First escape forward slashes in the path:
|
||||||
adList=${adList//\//\\\/}
|
adList=${adList//\//\\\/}
|
||||||
#Now replace the line in dnsmasq file
|
#Now replace the line in dnsmasq file
|
||||||
sed -i "s/^addn-hosts.*/addn-hosts=${adList}/" /etc/dnsmasq.d/01-pihole.conf
|
# sed -i "s/^addn-hosts.*/addn-hosts=$adList/" /etc/dnsmasq.d/01-pihole.conf
|
||||||
find "${piholeDir}" -type f -exec chmod 666 {} \;
|
|
||||||
|
|
||||||
dnsmasqPid=$(pidof dnsmasq)
|
pihole restartdns
|
||||||
|
|
||||||
if [[ ${dnsmasqPid} ]]; then
|
|
||||||
# service already running - reload config
|
|
||||||
if [ -x "$(command -v systemctl)" ]; then
|
|
||||||
systemctl restart dnsmasq
|
|
||||||
else
|
|
||||||
service dnsmasq restart
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# service not running, start it up
|
|
||||||
if [ -x "$(command -v systemctl)" ]; then
|
|
||||||
systemctl start dnsmasq
|
|
||||||
else
|
|
||||||
service dnsmasq start
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for var in "$@"; do
|
for var in "$@"; do
|
||||||
case "${var}" in
|
case "${var}" in
|
||||||
"-f" | "--force" ) forceGrav=true;;
|
"-f" | "--force" ) forceGrav=true;;
|
||||||
"-h" | "--help" ) helpFunc;;
|
"-h" | "--help" ) helpFunc;;
|
||||||
|
"-sd" | "--skip-download" ) skipDownload=true;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ ${forceGrav} == true ]]; then
|
if [[ "${forceGrav}" == true ]]; then
|
||||||
echo -n "::: Deleting exising list cache..."
|
echo -n "::: Deleting exising list cache..."
|
||||||
rm /etc/pihole/list.*
|
rm /etc/pihole/list.*
|
||||||
echo " done!"
|
echo " done!"
|
||||||
|
@ -346,10 +337,19 @@ fi
|
||||||
cp /etc/.pihole/adlists.default /etc/pihole/adlists.default
|
cp /etc/.pihole/adlists.default /etc/pihole/adlists.default
|
||||||
gravity_collapse
|
gravity_collapse
|
||||||
gravity_spinup
|
gravity_spinup
|
||||||
gravity_Schwarzchild
|
if [[ "${skipDownload}" == false ]]; then
|
||||||
gravity_advanced
|
gravity_Schwarzchild
|
||||||
gravity_hostFormat
|
gravity_advanced
|
||||||
gravity_blackbody
|
else
|
||||||
|
echo "::: Using cached Event Horizon list..."
|
||||||
|
numberOf=$(wc -l < ${piholeDir}/${preEventHorizon})
|
||||||
|
echo "::: $numberOf unique domains trapped in the event horizon."
|
||||||
|
fi
|
||||||
gravity_Whitelist
|
gravity_Whitelist
|
||||||
gravity_Blacklist
|
gravity_Blacklist
|
||||||
|
|
||||||
|
gravity_hostFormat
|
||||||
|
gravity_blackbody
|
||||||
|
|
||||||
gravity_reload
|
gravity_reload
|
||||||
|
pihole status
|
||||||
|
|
69
pihole
69
pihole
|
@ -95,6 +95,67 @@ versionFunc() {
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
restartDNS() {
|
||||||
|
dnsmasqPid=$(pidof dnsmasq)
|
||||||
|
if [[ ${dnsmasqPid} ]]; then
|
||||||
|
# service already running - reload config
|
||||||
|
if [ -x "$(command -v systemctl)" ]; then
|
||||||
|
systemctl restart dnsmasq
|
||||||
|
else
|
||||||
|
service dnsmasq restart
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# service not running, start it up
|
||||||
|
if [ -x "$(command -v systemctl)" ]; then
|
||||||
|
systemctl start dnsmasq
|
||||||
|
else
|
||||||
|
service dnsmasq start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
piholeEnable() {
|
||||||
|
if [[ "${1}" == "0" ]] ; then
|
||||||
|
#Disable Pihole
|
||||||
|
sed -i 's/^addn-hosts/#addn-hosts/' /etc/dnsmasq.d/01-pihole.conf
|
||||||
|
echo "::: Blocking has been disabled!"
|
||||||
|
else
|
||||||
|
#Enable pihole
|
||||||
|
echo "::: Blocking has been enabled!"
|
||||||
|
sed -i 's/^#addn-hosts/addn-hosts/' /etc/dnsmasq.d/01-pihole.conf
|
||||||
|
fi
|
||||||
|
restartDNS
|
||||||
|
}
|
||||||
|
|
||||||
|
piholeStatus() {
|
||||||
|
if [[ $(cat /etc/dnsmasq.d/01-pihole.conf | grep "#addn-hosts=/") ]] ; then
|
||||||
|
#list is commented out
|
||||||
|
if [[ "${1}" == "web" ]] ; then
|
||||||
|
echo 0;
|
||||||
|
else
|
||||||
|
echo "::: Pi-hole blocking is Disabled";
|
||||||
|
fi
|
||||||
|
elif [[ $(cat /etc/dnsmasq.d/01-pihole.conf | grep "addn-hosts=/") ]] ; then
|
||||||
|
#list set
|
||||||
|
if [[ "${1}" == "web" ]] ; then
|
||||||
|
echo 1;
|
||||||
|
else
|
||||||
|
echo "::: Pi-hole blocking is Enabled";
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
#addn-host not found
|
||||||
|
if [[ "${1}" == "web" ]] ; then
|
||||||
|
echo 99
|
||||||
|
else
|
||||||
|
echo "::: No hosts file linked to dnsmasq, adding it in enabled state"
|
||||||
|
fi
|
||||||
|
#add addn-host= to dnsmasq
|
||||||
|
echo "addn-hosts=/etc/pihole/gravity.list" >> /etc/dnsmasq.d/01-pihole.conf
|
||||||
|
restartDNS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
helpFunc() {
|
helpFunc() {
|
||||||
cat << EOM
|
cat << EOM
|
||||||
::: Control all PiHole specific functions!
|
::: Control all PiHole specific functions!
|
||||||
|
@ -115,6 +176,10 @@ helpFunc() {
|
||||||
::: -v, version Show current versions
|
::: -v, version Show current versions
|
||||||
::: -q, query Query the adlists for a specific domain
|
::: -q, query Query the adlists for a specific domain
|
||||||
::: uninstall Uninstall Pi-Hole from your system :(!
|
::: uninstall Uninstall Pi-Hole from your system :(!
|
||||||
|
::: status Is Pi-Hole Enabled or Disabled
|
||||||
|
::: enable Enable Pi-Hole DNS Blocking
|
||||||
|
::: disable Disable Pi-Hole DNS Blocking
|
||||||
|
::: restartdns Restart dnsmasq
|
||||||
EOM
|
EOM
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
@ -138,5 +203,9 @@ case "${1}" in
|
||||||
"-v" | "version" ) versionFunc "$@";;
|
"-v" | "version" ) versionFunc "$@";;
|
||||||
"-q" | "query" ) queryFunc "$@";;
|
"-q" | "query" ) queryFunc "$@";;
|
||||||
"uninstall" ) uninstallFunc;;
|
"uninstall" ) uninstallFunc;;
|
||||||
|
"enable" ) piholeEnable 1;;
|
||||||
|
"disable" ) piholeEnable 0;;
|
||||||
|
"status" ) piholeStatus "$2";;
|
||||||
|
"restartdns" ) restartDNS;;
|
||||||
* ) helpFunc;;
|
* ) helpFunc;;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Reference in a new issue