From 7873da1ae57c61fb330d7128d85bfbfb37cce4bf Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Fri, 26 May 2017 15:17:26 -0500 Subject: [PATCH] more colors. shortened dig timeouts --- advanced/Scripts/piholeDebug.sh | 74 ++++++++++++++++----------------- 1 file changed, 35 insertions(+), 39 deletions(-) diff --git a/advanced/Scripts/piholeDebug.sh b/advanced/Scripts/piholeDebug.sh index 5691b6af..66c2ebef 100755 --- a/advanced/Scripts/piholeDebug.sh +++ b/advanced/Scripts/piholeDebug.sh @@ -153,13 +153,13 @@ check_core_version() { # If not, else # pring the current version in yellow - log_write " ${INFO} Core: ${COL_YELLOW}${PI_HOLE_VERSION:-Untagged}${COL_NC} (See ${COL_CYAN}https://discourse.pi-hole.net/t/how-do-i-update-pi-hole/249${COL_NC} on how to update Pi-hole)" + log_write " ${INFO} Core: ${COL_YELLOW}${PI_HOLE_VERSION:-Untagged}${COL_NC} (${COL_CYAN}https://discourse.pi-hole.net/t/how-do-i-update-pi-hole/249${COL_NC})" fi if [[ "${PI_HOLE_BRANCH}" == "master" ]]; then log_write " ${INFO} Branch: ${COL_LIGHT_GREEN}${PI_HOLE_BRANCH}${COL_NC}" else - log_write " ${INFO} Branch: ${COL_YELLOW}${PI_HOLE_BRANCH:-Detached}${COL_NC} (See ${COL_CYAN}https://discourse.pi-hole.net/t/the-pihole-command-with-examples/738#checkout${COL_NC} for more information)" + log_write " ${INFO} Branch: ${COL_YELLOW}${PI_HOLE_BRANCH:-Detached}${COL_NC} (${COL_CYAN}https://discourse.pi-hole.net/t/the-pihole-command-with-examples/738#checkout${COL_NC})" fi log_write " ${INFO} Commit: ${PI_HOLE_COMMIT}" # If git status failed, @@ -193,13 +193,13 @@ check_web_version() { if [[ "${WEB_VERSION}" == "$(pihole -v | awk '/AdminLTE/ {print $6}' | cut -d ')' -f1)" ]]; then log_write " ${TICK} Web: ${COL_LIGHT_GREEN}${WEB_VERSION}${COL_NC}" else - log_write " ${INFO} Web: ${COL_YELLOW}${WEB_VERSION:-Untagged}${COL_NC} (See ${COL_CYAN}https://discourse.pi-hole.net/t/how-do-i-update-pi-hole/249${COL_NC} on how to update Pi-hole)" + log_write " ${INFO} Web: ${COL_YELLOW}${WEB_VERSION:-Untagged}${COL_NC} (${COL_CYAN}https://discourse.pi-hole.net/t/how-do-i-update-pi-hole/249${COL_NC})" fi if [[ "${WEB_BRANCH}" == "master" ]]; then log_write " ${TICK} Branch: ${COL_LIGHT_GREEN}${WEB_BRANCH}${COL_NC}" else - log_write " ${INFO} Branch: ${COL_YELLOW}${WEB_BRANCH:-Detached}${COL_NC} (See ${COL_CYAN}https://discourse.pi-hole.net/t/the-pihole-command-with-examples/738#checkout${COL_NC} for more information)" + log_write " ${INFO} Branch: ${COL_YELLOW}${WEB_BRANCH:-Detached}${COL_NC} (${COL_CYAN}https://discourse.pi-hole.net/t/the-pihole-command-with-examples/738#checkout${COL_NC})" fi log_write " ${INFO} Commit: ${WEB_COMMIT}" # If git status failed, @@ -224,16 +224,14 @@ check_web_server_version() { WEB_SERVER="lighttpd" # Parse out just the version number WEB_SERVER_VERSON="$(lighttpd -v |& head -n1 | cut -d '/' -f2 | cut -d ' ' -f1)" - # Display the information to the user - log_write " ${INFO} ${WEB_SERVER}" # If the Web server does not have a version (the variable is empty) if [[ -z "${WEB_SERVER_VERSON}" ]]; then # Display and error - log_write " ${CROSS} ${WEB_SERVER} version could not be detected." + log_write " ${CROSS} ${WEB_SERVER} version could not be detected." # Otherwise, else # display the version - log_write " ${TICK} ${WEB_SERVER_VERSON}" + log_write " ${TICK} ${WEB_SERVER}: ${WEB_SERVER_VERSON}" fi } @@ -243,32 +241,28 @@ check_resolver_server_version() { RESOLVER="dnsmasq" # Parse out just the version number RESOVLER_VERSON="$(dnsmasq -v |& head -n1 | awk '{print $3}')" - # Display the information to the user - log_write " ${INFO} ${RESOLVER}" # If the DNS server does not have a version (the variable is empty) if [[ -z "${RESOVLER_VERSON}" ]]; then # Display and error - log_write " ${CROSS} ${RESOLVER} version could not be detected." + log_write " ${CROSS} ${RESOLVER} version could not be detected." # Otherwise, else # display the version - log_write " ${TICK} ${RESOVLER_VERSON}" + log_write " ${TICK} ${RESOLVER}: ${RESOVLER_VERSON}" fi } check_php_version() { # Parse out just the version number PHP_VERSION=$(php -v |& head -n1 | cut -d '-' -f1 | cut -d ' ' -f2) - # Display the info to the user - log_write " ${INFO} PHP" # If no version is detected, if [[ -z "${PHP_VERSION}" ]]; then # show an error - log_write " ${CROSS} PHP version could not be detected." + log_write " ${CROSS} PHP version could not be detected." # otherwise, else # Show the version - log_write " ${TICK} ${PHP_VERSION}" + log_write " ${TICK} PHP: ${PHP_VERSION}" fi } @@ -392,19 +386,19 @@ ping_gateway() { # If the gateway variable has a value (meaning a gateway was found), if [[ -n "${gateway}" ]]; then # Let the user know we will ping the gateway for a response - log_write " ${INFO} Trying three pings on IPv${protocol} gateway at ${gateway}..." + log_write " * Trying three pings on IPv${protocol} gateway at ${gateway}..." # Try to quietly ping the gateway 3 times, with a timeout of 3 seconds, using numeric output only, # on the pihole interface, and tail the last three lines of the output # If pinging the gateway is not successful, if ! ping_cmd="$(${cmd} -q -c 3 -W 3 -n ${gateway} -I ${PIHOLE_INTERFACE} | tail -n 3)"; then # let the user know - log_write " ${CROSS} Gateway did not respond." + log_write " ${CROSS} ${COL_LIGHT_RED}Gateway did not respond.${COL_NC}" # and return an error code return 1 # Otherwise, else # show a success - log_write " ${TICK} Gateway responded." + log_write " ${TICK} ${COL_LIGHT_GREEN}Gateway responded.${COL_NC}" # and return a success code return 0 fi @@ -517,18 +511,18 @@ check_x_headers() { # If the X-header found by curl matches what is should be, if [[ $block_page == $block_page_working ]]; then # display a success message - log_write " $TICK ${block_page}" + log_write " $TICK ${COL_LIGHT_GREEN}${block_page}${COL_NC}" # Otherwise, else # show an error - log_write " $CROSS X-Header does not match or could not be retrieved" + log_write " $CROSS ${COL_LIGHT_RED}X-Header does not match or could not be retrieved.${COL_NC}" fi # Same logic applies to the dashbord as above if [[ $dashboard == $dashboard_working ]]; then - log_write " $TICK ${dashboard}" + log_write " $TICK ${COL_LIGHT_GREEN}${dashboard}${COL_NC}" else - log_write " $CROSS X-Header does not match or could not be retrieved" + log_write " $CROSS ${COL_LIGHT_RED}X-Header does not match or could not be retrieved.${COL_NC}" fi } @@ -568,30 +562,30 @@ dig_at() { local random_url=$(shuf -n 1 "${GRAVITYFILE}" | awk -F ' ' '{ print $2 }') # First do a dig on localhost, to see if Pi-hole can use itself to block a domain - if local_dig=$(dig -"${protocol}" "${random_url}" @${local_address} +short "${record_type}"); then + if local_dig=$(dig +tries=1 +time=2 -"${protocol}" "${random_url}" @${local_address} +short "${record_type}"); then # If it can, show sucess - log_write " ${TICK} ${random_url} is ${local_dig} via localhost (${local_address})" + log_write " ${TICK} ${COL_LIGHT_GREEN}${random_url} is ${local_dig}${COL_NC} via localhost (${local_address})" # Otherwise, else # show a failure - log_write " ${CROSS} Failed to resolve ${random_url} via localhost (${local_address})" + log_write " ${CROSS} ${COL_LIGHT_RED}Failed to resolve${COL_NC} ${random_url} ${COL_LIGHT_RED}via localhost${COL_NC} (${local_address})" fi # Next we need to check if Pi-hole can resolve a domain when the query is sent to it's IP address # This better emulates how clients will interact with Pi-hole as opposed to above where Pi-hole is # just asing itself locally - if pihole_dig=$(dig -"${protocol}" "${random_url}" @${pihole_address} +short "${record_type}"); then - log_write " ${TICK} ${random_url} is ${pihole_dig} via Pi-hole (${pihole_address})" + if pihole_dig=$(dig +tries=1 +time=2 -"${protocol}" "${random_url}" @${pihole_address} +short "${record_type}"); then + log_write " ${TICK} ${COL_LIGHT_GREEN}${random_url} is ${pihole_dig}${COL_NC} via Pi-hole (${pihole_address})" else - log_write " ${CROSS} Failed to resolve ${random_url} via Pi-hole (${pihole_address})" + log_write " ${CROSS} ${COL_LIGHT_RED}Failed to resolve${COL_NC} ${random_url} ${COL_LIGHT_RED}via Pi-hole${COL_NC} (${pihole_address})" fi # Finally, we need to make sure legitimate sites can out if using an external, public DNS server - if remote_dig=$(dig -"${protocol}" "${remote_url}" @${remote_address} +short "${record_type}" | head -n1); then + if remote_dig=$(dig +tries=1 +time=2 -"${protocol}" "${remote_url}" @${remote_address} +short "${record_type}" | head -n1); then # If successful, the real IP of the domain will be returned instead of Pi-hole's IP - log_write " ${TICK} ${remote_url} is ${remote_dig} via a remote, public DNS server (${remote_address})" + log_write " ${TICK} ${COL_LIGHT_GREEN}${remote_url} is ${remote_dig}${COL_NC} via a remote, public DNS server (${remote_address})" else - log_write " ${CROSS} Failed to resolve ${remote_url} via a remote, public DNS server (${remote_address})" + log_write " ${CROSS} ${COL_LIGHT_RED}Failed to resolve${COL_NC} ${remote_url} ${COL_LIGHT_RED}via a remote, public DNS server${COL_NC} (${remote_address})" fi } @@ -609,7 +603,7 @@ process_status(){ if [[ "${status_of_process}" == "active" ]]; then log_write " ${TICK} ${COL_LIGHT_GREEN}${i}${COL_NC} daemon is ${COL_LIGHT_GREEN}${status_of_process}${COL_NC}" else - log_write " ${TICK} ${COL_LIGHT_RED}${i}${COL_NC} daemon is ${COL_LIGHT_RED}${status_of_process}${COL_NC}" + log_write " ${CROSS} ${COL_LIGHT_RED}${i}${COL_NC} daemon is ${COL_LIGHT_RED}${status_of_process}${COL_NC}" fi done } @@ -741,13 +735,13 @@ tricorder_nc_or_ssl() { # Check fist for openssl since encryption is a good thing if command -v openssl &> /dev/null; then # If successful - log_write " * Using openssl for transmission." + log_write " * Using ${COL_LIGHT_GREEN}openssl${COL_NC} for transmission." # transmit the log and store the token returned in the tricorder variable tricorder=$(cat /var/log/pihole_debug.log | openssl s_client -quiet -connect tricorder.pi-hole.net:9998 2> /dev/null) # Otherwise, else # use net cat - log_write " ${INFO} Using netcat for transmission." + log_write " ${INFO} Using ${COL_YELLOW}netcat${COL_NC} for transmission." tricorder=$(cat /var/log/pihole_debug.log | nc tricorder.pi-hole.net 9999) fi } @@ -764,17 +758,19 @@ upload_to_tricorder() { # Provide information on what they should do with their token log_write " * The debug log can be uploaded to tricorder.pi-hole.net for sharing with developers only." - log_write " * For more information, see: https://pi-hole.net/2016/11/07/crack-our-medical-tricorder-win-a-raspberry-pi-3/" + log_write " * For more information, see: ${COL_CYAN}https://pi-hole.net/2016/11/07/crack-our-medical-tricorder-win-a-raspberry-pi-3/${COL_NC}" + log_write "" + log_write " * If available, we'll use openssl to upload the log, otherwise it will fall back to netcat." # If pihole -d is running automatically (usually throught the dashboard) if [[ "${AUTOMATED}" ]]; then # let the user know log_write " ${INFO} Debug script running in automated mode" # and then decide again which tool to use to submit it if command -v openssl &> /dev/null; then - log_write " ${INFO} Using openssl for transmission." + log_write " ${INFO} Using ${COL_LIGHT_GREEN}openssl${COL_NC} for transmission." openssl s_client -quiet -connect tricorder.pi-hole.net:9998 2> /dev/null < /dev/stdin else - log_write " ${INFO} Using netcat for transmission." + log_write " ${INFO} Using ${COL_YELLOW}netcat${COL_NC} for transmission." nc tricorder.pi-hole.net 9999 < /dev/stdin fi else @@ -786,7 +782,7 @@ upload_to_tricorder() { # If they say yes, run our function for uploading the log [yY][eE][sS]|[yY]) tricorder_nc_or_ssl;; # If they choose no, just exit out of the script - *) log_write " ${INFO} Log will NOT be uploaded to tricorder.";exit; + *) log_write " * Log will NOT be uploaded to tricorder.";exit; esac fi # Check if tricorder.pi-hole.net is reachable and provide token