From 3125d24dedfa58143339516580e3dd8f304a691d Mon Sep 17 00:00:00 2001 From: WaLLy3K Date: Thu, 31 Aug 2017 17:39:41 +1000 Subject: [PATCH] Replace superseded netstat command * Make colfile readonly, and use path of PI_HOLE_SCRIPT_DIR * Rename piholeStatus function to statusFunc for function name consistency * Replace superseded netstat command with nc * Perform addn-hosts check using a single grep subshell --- pihole | 71 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/pihole b/pihole index 61ed6cd6..80d9e379 100755 --- a/pihole +++ b/pihole @@ -1,4 +1,5 @@ #!/bin/bash + # Pi-hole: A black hole for Internet advertisements # (c) 2017 Pi-hole, LLC (https://pi-hole.net) # Network-wide ad blocking via your own hardware. @@ -8,11 +9,11 @@ # This file is copyright under the latest version of the EUPL. # Please see LICENSE file for your rights under this license. -colfile="/opt/pihole/COL_TABLE" -source ${colfile} - readonly PI_HOLE_SCRIPT_DIR="/opt/pihole" readonly wildcardlist="/etc/dnsmasq.d/03-pihole-wildcard.conf" +readonly colfile="${PI_HOLE_SCRIPT_DIR}/COL_TABLE" + +source ${colfile} # Must be root to use this tool if [[ ! $EUID -eq 0 ]];then @@ -481,41 +482,41 @@ Options: echo -e "${OVER} ${TICK} ${str}" } -piholeStatus() { - if [[ "$(netstat -plnt | grep -c ':53 ')" -gt "0" ]]; then - if [[ "${1}" != "web" ]]; then - echo -e " ${TICK} DNS service is running" - fi +statusFunc() { + local addnConfigs + + # Determine if service is running on port 53 + if nc -z 127.0.0.1 53; then + [[ "${1}" != "web" ]] && echo -e " ${TICK} DNS service is running" else - if [[ "${1}" == "web" ]]; then - echo "-1"; - else - echo -e " ${CROSS} DNS service is NOT running" - fi - return + case "${1}" in + "web") echo "-1";; + *) echo -e " ${CROSS} DNS service is NOT running";; + esac + return 0 fi - if [[ "$(grep -i "^#addn-hosts=/" /etc/dnsmasq.d/01-pihole.conf)" ]]; then - # List is commented out - if [[ "${1}" == "web" ]]; then - echo 0; - else - echo -e " ${CROSS} Pi-hole blocking is Disabled"; - fi - elif [[ "$(grep -i "^addn-hosts=/" /etc/dnsmasq.d/01-pihole.conf)" ]]; then - # List set - if [[ "${1}" == "web" ]]; then - echo 1; - else - echo -e " ${TICK} Pi-hole blocking is Enabled"; - fi + # Determine if any of Pi-hole's addn-hosts configs are commented out + addnConfigs=$(grep -i "addn-hosts=/" /etc/dnsmasq.d/01-pihole.conf) + + if [[ "${addnConfigs}" =~ "#" ]]; then + # A config is commented out + case "${1}" in + "web") echo 0;; + *) echo -e " ${CROSS} Pi-hole blocking is Disabled";; + esac + elif [[ -n "${addnConfigs}" ]]; then + # Configs are set + case "${1}" in + "web") echo 1;; + *) echo -e " ${TICK} Pi-hole blocking is Enabled";; + esac else - # Addn-host not found - if [[ "${1}" == "web" ]]; then - echo 99 - else - echo -e " ${INFO} No hosts file linked to dnsmasq, adding it in enabled state" - fi + # No configs were found + case "${1}" in + "web") echo 99;; + *) echo -e " ${INFO} No hosts file linked to dnsmasq, adding it in enabled state";; + esac # Add addn-host= to dnsmasq echo "addn-hosts=/etc/pihole/gravity.list" >> /etc/dnsmasq.d/01-pihole.conf restartDNS @@ -651,7 +652,7 @@ case "${1}" in "uninstall" ) uninstallFunc;; "enable" ) piholeEnable 1;; "disable" ) piholeEnable 0 "$2";; - "status" ) piholeStatus "$2";; + "status" ) statusFunc "$2";; "restartdns" ) restartDNS;; "-a" | "admin" ) webpageFunc "$@";; "-t" | "tail" ) tailFunc;;