more colors. shortened dig timeouts

This commit is contained in:
Jacob Salmela 2017-05-26 15:17:26 -05:00
parent ef5a6e7880
commit 7873da1ae5
No known key found for this signature in database
GPG key ID: 1962FF1A5046135E

View file

@ -153,13 +153,13 @@ check_core_version() {
# If not, # If not,
else else
# pring the current version in yellow # 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 fi
if [[ "${PI_HOLE_BRANCH}" == "master" ]]; then if [[ "${PI_HOLE_BRANCH}" == "master" ]]; then
log_write " ${INFO} Branch: ${COL_LIGHT_GREEN}${PI_HOLE_BRANCH}${COL_NC}" log_write " ${INFO} Branch: ${COL_LIGHT_GREEN}${PI_HOLE_BRANCH}${COL_NC}"
else 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 fi
log_write " ${INFO} Commit: ${PI_HOLE_COMMIT}" log_write " ${INFO} Commit: ${PI_HOLE_COMMIT}"
# If git status failed, # If git status failed,
@ -193,13 +193,13 @@ check_web_version() {
if [[ "${WEB_VERSION}" == "$(pihole -v | awk '/AdminLTE/ {print $6}' | cut -d ')' -f1)" ]]; then if [[ "${WEB_VERSION}" == "$(pihole -v | awk '/AdminLTE/ {print $6}' | cut -d ')' -f1)" ]]; then
log_write " ${TICK} Web: ${COL_LIGHT_GREEN}${WEB_VERSION}${COL_NC}" log_write " ${TICK} Web: ${COL_LIGHT_GREEN}${WEB_VERSION}${COL_NC}"
else 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 fi
if [[ "${WEB_BRANCH}" == "master" ]]; then if [[ "${WEB_BRANCH}" == "master" ]]; then
log_write " ${TICK} Branch: ${COL_LIGHT_GREEN}${WEB_BRANCH}${COL_NC}" log_write " ${TICK} Branch: ${COL_LIGHT_GREEN}${WEB_BRANCH}${COL_NC}"
else 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 fi
log_write " ${INFO} Commit: ${WEB_COMMIT}" log_write " ${INFO} Commit: ${WEB_COMMIT}"
# If git status failed, # If git status failed,
@ -224,16 +224,14 @@ check_web_server_version() {
WEB_SERVER="lighttpd" WEB_SERVER="lighttpd"
# Parse out just the version number # Parse out just the version number
WEB_SERVER_VERSON="$(lighttpd -v |& head -n1 | cut -d '/' -f2 | cut -d ' ' -f1)" 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 the Web server does not have a version (the variable is empty)
if [[ -z "${WEB_SERVER_VERSON}" ]]; then if [[ -z "${WEB_SERVER_VERSON}" ]]; then
# Display and error # Display and error
log_write " ${CROSS} ${WEB_SERVER} version could not be detected." log_write " ${CROSS} ${WEB_SERVER} version could not be detected."
# Otherwise, # Otherwise,
else else
# display the version # display the version
log_write " ${TICK} ${WEB_SERVER_VERSON}" log_write " ${TICK} ${WEB_SERVER}: ${WEB_SERVER_VERSON}"
fi fi
} }
@ -243,32 +241,28 @@ check_resolver_server_version() {
RESOLVER="dnsmasq" RESOLVER="dnsmasq"
# Parse out just the version number # Parse out just the version number
RESOVLER_VERSON="$(dnsmasq -v |& head -n1 | awk '{print $3}')" 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 the DNS server does not have a version (the variable is empty)
if [[ -z "${RESOVLER_VERSON}" ]]; then if [[ -z "${RESOVLER_VERSON}" ]]; then
# Display and error # Display and error
log_write " ${CROSS} ${RESOLVER} version could not be detected." log_write " ${CROSS} ${RESOLVER} version could not be detected."
# Otherwise, # Otherwise,
else else
# display the version # display the version
log_write " ${TICK} ${RESOVLER_VERSON}" log_write " ${TICK} ${RESOLVER}: ${RESOVLER_VERSON}"
fi fi
} }
check_php_version() { check_php_version() {
# Parse out just the version number # Parse out just the version number
PHP_VERSION=$(php -v |& head -n1 | cut -d '-' -f1 | cut -d ' ' -f2) 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 no version is detected,
if [[ -z "${PHP_VERSION}" ]]; then if [[ -z "${PHP_VERSION}" ]]; then
# show an error # show an error
log_write " ${CROSS} PHP version could not be detected." log_write " ${CROSS} PHP version could not be detected."
# otherwise, # otherwise,
else else
# Show the version # Show the version
log_write " ${TICK} ${PHP_VERSION}" log_write " ${TICK} PHP: ${PHP_VERSION}"
fi fi
} }
@ -392,19 +386,19 @@ ping_gateway() {
# If the gateway variable has a value (meaning a gateway was found), # If the gateway variable has a value (meaning a gateway was found),
if [[ -n "${gateway}" ]]; then if [[ -n "${gateway}" ]]; then
# Let the user know we will ping the gateway for a response # 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, # 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 # on the pihole interface, and tail the last three lines of the output
# If pinging the gateway is not successful, # 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 if ! ping_cmd="$(${cmd} -q -c 3 -W 3 -n ${gateway} -I ${PIHOLE_INTERFACE} | tail -n 3)"; then
# let the user know # 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 # and return an error code
return 1 return 1
# Otherwise, # Otherwise,
else else
# show a success # show a success
log_write " ${TICK} Gateway responded." log_write " ${TICK} ${COL_LIGHT_GREEN}Gateway responded.${COL_NC}"
# and return a success code # and return a success code
return 0 return 0
fi fi
@ -517,18 +511,18 @@ check_x_headers() {
# If the X-header found by curl matches what is should be, # If the X-header found by curl matches what is should be,
if [[ $block_page == $block_page_working ]]; then if [[ $block_page == $block_page_working ]]; then
# display a success message # display a success message
log_write " $TICK ${block_page}" log_write " $TICK ${COL_LIGHT_GREEN}${block_page}${COL_NC}"
# Otherwise, # Otherwise,
else else
# show an error # 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 fi
# Same logic applies to the dashbord as above # Same logic applies to the dashbord as above
if [[ $dashboard == $dashboard_working ]]; then if [[ $dashboard == $dashboard_working ]]; then
log_write " $TICK ${dashboard}" log_write " $TICK ${COL_LIGHT_GREEN}${dashboard}${COL_NC}"
else 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 fi
} }
@ -568,30 +562,30 @@ dig_at() {
local random_url=$(shuf -n 1 "${GRAVITYFILE}" | awk -F ' ' '{ print $2 }') 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 # 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 # 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, # Otherwise,
else else
# show a failure # 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 fi
# Next we need to check if Pi-hole can resolve a domain when the query is sent to it's IP address # 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 # This better emulates how clients will interact with Pi-hole as opposed to above where Pi-hole is
# just asing itself locally # just asing itself locally
if pihole_dig=$(dig -"${protocol}" "${random_url}" @${pihole_address} +short "${record_type}"); then if pihole_dig=$(dig +tries=1 +time=2 -"${protocol}" "${random_url}" @${pihole_address} +short "${record_type}"); then
log_write " ${TICK} ${random_url} is ${pihole_dig} via Pi-hole (${pihole_address})" log_write " ${TICK} ${COL_LIGHT_GREEN}${random_url} is ${pihole_dig}${COL_NC} via Pi-hole (${pihole_address})"
else 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 fi
# Finally, we need to make sure legitimate sites can out if using an external, public DNS server # 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 # 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 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 fi
} }
@ -609,7 +603,7 @@ process_status(){
if [[ "${status_of_process}" == "active" ]]; then 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}" log_write " ${TICK} ${COL_LIGHT_GREEN}${i}${COL_NC} daemon is ${COL_LIGHT_GREEN}${status_of_process}${COL_NC}"
else 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 fi
done done
} }
@ -741,13 +735,13 @@ tricorder_nc_or_ssl() {
# Check fist for openssl since encryption is a good thing # Check fist for openssl since encryption is a good thing
if command -v openssl &> /dev/null; then if command -v openssl &> /dev/null; then
# If successful # 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 # 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) tricorder=$(cat /var/log/pihole_debug.log | openssl s_client -quiet -connect tricorder.pi-hole.net:9998 2> /dev/null)
# Otherwise, # Otherwise,
else else
# use net cat # 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) tricorder=$(cat /var/log/pihole_debug.log | nc tricorder.pi-hole.net 9999)
fi fi
} }
@ -764,17 +758,19 @@ upload_to_tricorder() {
# Provide information on what they should do with their token # 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 " * 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 pihole -d is running automatically (usually throught the dashboard)
if [[ "${AUTOMATED}" ]]; then if [[ "${AUTOMATED}" ]]; then
# let the user know # let the user know
log_write " ${INFO} Debug script running in automated mode" log_write " ${INFO} Debug script running in automated mode"
# and then decide again which tool to use to submit it # and then decide again which tool to use to submit it
if command -v openssl &> /dev/null; then 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 openssl s_client -quiet -connect tricorder.pi-hole.net:9998 2> /dev/null < /dev/stdin
else 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 nc tricorder.pi-hole.net 9999 < /dev/stdin
fi fi
else else
@ -786,7 +782,7 @@ upload_to_tricorder() {
# If they say yes, run our function for uploading the log # If they say yes, run our function for uploading the log
[yY][eE][sS]|[yY]) tricorder_nc_or_ssl;; [yY][eE][sS]|[yY]) tricorder_nc_or_ssl;;
# If they choose no, just exit out of the script # 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 esac
fi fi
# Check if tricorder.pi-hole.net is reachable and provide token # Check if tricorder.pi-hole.net is reachable and provide token