Compare commits
8 Commits
developmen
...
PID
Author | SHA1 | Date | |
---|---|---|---|
|
49c0287d4e | ||
|
c65c22d60d | ||
|
c942e99941 | ||
|
6532f3665e | ||
|
e79ae76866 | ||
|
dd27e0f157 | ||
|
c293af7a5a | ||
|
6b5e02fc7d |
@@ -64,8 +64,8 @@ Example: 'pihole -q -exact domain.com'
|
|||||||
Query the adlists for a specified domain
|
Query the adlists for a specified domain
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-exact Search the adlists for exact domain matches
|
-exact Search the block lists for exact domain matches
|
||||||
-all Return all query matches within the adlists
|
-all Return all query matches within a block list
|
||||||
-h, --help Show this help dialog"
|
-h, --help Show this help dialog"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@@ -210,7 +210,7 @@ mapfile -t results <<< "$(scanDatabaseTable "${domainQuery}" "gravity")"
|
|||||||
|
|
||||||
# Handle notices
|
# Handle notices
|
||||||
if [[ -z "${wbMatch:-}" ]] && [[ -z "${wcMatch:-}" ]] && [[ -z "${results[*]}" ]]; then
|
if [[ -z "${wbMatch:-}" ]] && [[ -z "${wcMatch:-}" ]] && [[ -z "${results[*]}" ]]; then
|
||||||
echo -e " ${INFO} No ${exact/t/t }results found for ${COL_BOLD}${domainQuery}${COL_NC} within the adlists"
|
echo -e " ${INFO} No ${exact/t/t }results found for ${COL_BOLD}${domainQuery}${COL_NC} within the block lists"
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ -z "${results[*]}" ]]; then
|
elif [[ -z "${results[*]}" ]]; then
|
||||||
# Result found in WL/BL/Wildcards
|
# Result found in WL/BL/Wildcards
|
||||||
|
@@ -1,6 +1,4 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env bash
|
||||||
# shellcheck disable=SC3043 #https://github.com/koalaman/shellcheck/wiki/SC3043#exceptions
|
|
||||||
|
|
||||||
# Pi-hole: A black hole for Internet advertisements
|
# Pi-hole: A black hole for Internet advertisements
|
||||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
||||||
# Network-wide ad blocking via your own hardware.
|
# Network-wide ad blocking via your own hardware.
|
||||||
@@ -17,74 +15,46 @@
|
|||||||
# - New functions must have a test added for them in test/test_any_utils.py
|
# - New functions must have a test added for them in test/test_any_utils.py
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Takes either
|
# Takes three arguments key, value, and file.
|
||||||
# - Three arguments: file, key, and value.
|
|
||||||
# - Two arguments: file, and key.
|
|
||||||
#
|
|
||||||
# Checks the target file for the existence of the key
|
# Checks the target file for the existence of the key
|
||||||
# - If it exists, it changes the value
|
# - If it exists, it changes the value
|
||||||
# - If it does not exist, it adds the value
|
# - If it does not exist, it adds the value
|
||||||
#
|
#
|
||||||
# Example usage:
|
# Example usage:
|
||||||
# addOrEditKeyValuePair "/etc/pihole/setupVars.conf" "BLOCKING_ENABLED" "true"
|
# addOrEditKeyValuePair "BLOCKING_ENABLED" "true" "/etc/pihole/setupVars.conf"
|
||||||
#######################
|
#######################
|
||||||
addOrEditKeyValPair() {
|
addOrEditKeyValPair() {
|
||||||
local file="${1}"
|
local key="${1}"
|
||||||
local key="${2}"
|
local value="${2}"
|
||||||
local value="${3}"
|
local file="${3}"
|
||||||
|
if grep -q "^${key}=" "${file}"; then
|
||||||
if [ "${value}" != "" ]; then
|
sed -i "/^${key}=/c\\${key}=${value}" "${file}"
|
||||||
# value has a value, so it is a key-value pair
|
|
||||||
if grep -q "^${key}=" "${file}"; then
|
|
||||||
# Key already exists in file, modify the value
|
|
||||||
sed -i "/^${key}=/c\\${key}=${value}" "${file}"
|
|
||||||
else
|
|
||||||
# Key does not already exist, add it and it's value
|
|
||||||
echo "${key}=${value}" >> "${file}"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
# value has no value, so it is just a key. Add it if it does not already exist
|
echo "${key}=${value}" >> "${file}"
|
||||||
if ! grep -q "^${key}" "${file}"; then
|
|
||||||
# Key does not exist, add it.
|
|
||||||
echo "${key}" >> "${file}"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################
|
|
||||||
# Takes two arguments file, and key.
|
|
||||||
# Deletes a key from target file
|
|
||||||
#
|
|
||||||
# Example usage:
|
|
||||||
# removeKey "/etc/pihole/setupVars.conf" "PIHOLE_DNS_1"
|
|
||||||
#######################
|
|
||||||
removeKey() {
|
|
||||||
local file="${1}"
|
|
||||||
local key="${2}"
|
|
||||||
sed -i "/^${key}/d" "${file}"
|
|
||||||
}
|
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# returns FTL's current telnet API port
|
# returns FTL's current telnet API port
|
||||||
#######################
|
#######################
|
||||||
getFTLAPIPort(){
|
getFTLAPIPort(){
|
||||||
local FTLCONFFILE="/etc/pihole/pihole-FTL.conf"
|
local -r FTLCONFFILE="/etc/pihole/pihole-FTL.conf"
|
||||||
local DEFAULT_PORT_FILE="/run/pihole-FTL.port"
|
local -r DEFAULT_PORT_FILE="/run/pihole-FTL.port"
|
||||||
local DEFAULT_FTL_PORT=4711
|
local -r DEFAULT_FTL_PORT=4711
|
||||||
local PORTFILE
|
local PORTFILE
|
||||||
local ftl_api_port
|
local ftl_api_port
|
||||||
|
|
||||||
if [ -f "$FTLCONFFILE" ]; then
|
if [[ -f "$FTLCONFFILE" ]]; then
|
||||||
# if PORTFILE is not set in pihole-FTL.conf, use the default path
|
# if PORTFILE is not set in pihole-FTL.conf, use the default path
|
||||||
PORTFILE="$( (grep "^PORTFILE=" $FTLCONFFILE || echo "$DEFAULT_PORT_FILE") | cut -d"=" -f2-)"
|
PORTFILE="$( (grep "^PORTFILE=" $FTLCONFFILE || echo "$DEFAULT_PORT_FILE") | cut -d"=" -f2-)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -s "$PORTFILE" ]; then
|
if [[ -s "$PORTFILE" ]]; then
|
||||||
# -s: FILE exists and has a size greater than zero
|
# -s: FILE exists and has a size greater than zero
|
||||||
ftl_api_port=$(cat "${PORTFILE}")
|
ftl_api_port=$(<"$PORTFILE")
|
||||||
# Exploit prevention: unset the variable if there is malicious content
|
# Exploit prevention: unset the variable if there is malicious content
|
||||||
# Verify that the value read from the file is numeric
|
# Verify that the value read from the file is numeric
|
||||||
expr "$ftl_api_port" : "[^[:digit:]]" > /dev/null && unset ftl_api_port
|
[[ "$ftl_api_port" =~ [^[:digit:]] ]] && unset ftl_api_port
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# echo the port found in the portfile or default to the default port
|
# echo the port found in the portfile or default to the default port
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
# shellcheck disable=SC2154
|
|
||||||
|
|
||||||
|
|
||||||
# Pi-hole: A black hole for Internet advertisements
|
# Pi-hole: A black hole for Internet advertisements
|
||||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
||||||
@@ -28,9 +26,6 @@ readonly PI_HOLE_FILES_DIR="/etc/.pihole"
|
|||||||
PH_TEST="true"
|
PH_TEST="true"
|
||||||
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
|
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
|
||||||
|
|
||||||
utilsfile="/opt/pihole/utils.sh"
|
|
||||||
source "${utilsfile}"
|
|
||||||
|
|
||||||
coltable="/opt/pihole/COL_TABLE"
|
coltable="/opt/pihole/COL_TABLE"
|
||||||
if [[ -f ${coltable} ]]; then
|
if [[ -f ${coltable} ]]; then
|
||||||
source ${coltable}
|
source ${coltable}
|
||||||
@@ -56,35 +51,41 @@ Options:
|
|||||||
}
|
}
|
||||||
|
|
||||||
add_setting() {
|
add_setting() {
|
||||||
addOrEditKeyValPair "${setupVars}" "${1}" "${2}"
|
echo "${1}=${2}" >> "${setupVars}"
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_setting() {
|
delete_setting() {
|
||||||
removeKey "${setupVars}" "${1}"
|
sed -i "/^${1}/d" "${setupVars}"
|
||||||
}
|
}
|
||||||
|
|
||||||
change_setting() {
|
change_setting() {
|
||||||
addOrEditKeyValPair "${setupVars}" "${1}" "${2}"
|
delete_setting "${1}"
|
||||||
|
add_setting "${1}" "${2}"
|
||||||
}
|
}
|
||||||
|
|
||||||
addFTLsetting() {
|
addFTLsetting() {
|
||||||
addOrEditKeyValPair "${FTLconf}" "${1}" "${2}"
|
echo "${1}=${2}" >> "${FTLconf}"
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteFTLsetting() {
|
deleteFTLsetting() {
|
||||||
removeKey "${FTLconf}" "${1}"
|
sed -i "/^${1}/d" "${FTLconf}"
|
||||||
}
|
}
|
||||||
|
|
||||||
changeFTLsetting() {
|
changeFTLsetting() {
|
||||||
addOrEditKeyValPair "${FTLconf}" "${1}" "${2}"
|
deleteFTLsetting "${1}"
|
||||||
|
addFTLsetting "${1}" "${2}"
|
||||||
}
|
}
|
||||||
|
|
||||||
add_dnsmasq_setting() {
|
add_dnsmasq_setting() {
|
||||||
addOrEditKeyValPair "${dnsmasqconfig}" "${1}" "${2}"
|
if [[ "${2}" != "" ]]; then
|
||||||
|
echo "${1}=${2}" >> "${dnsmasqconfig}"
|
||||||
|
else
|
||||||
|
echo "${1}" >> "${dnsmasqconfig}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_dnsmasq_setting() {
|
delete_dnsmasq_setting() {
|
||||||
removeKey "${dnsmasqconfig}" "${1}"
|
sed -i "/^${1}/d" "${dnsmasqconfig}"
|
||||||
}
|
}
|
||||||
|
|
||||||
SetTemperatureUnit() {
|
SetTemperatureUnit() {
|
||||||
@@ -182,7 +183,7 @@ ProcessDNSSettings() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
delete_dnsmasq_setting "dnssec"
|
delete_dnsmasq_setting "dnssec"
|
||||||
delete_dnsmasq_setting "trust-anchor"
|
delete_dnsmasq_setting "trust-anchor="
|
||||||
|
|
||||||
if [[ "${DNSSEC}" == true ]]; then
|
if [[ "${DNSSEC}" == true ]]; then
|
||||||
echo "dnssec
|
echo "dnssec
|
||||||
|
@@ -9,8 +9,39 @@
|
|||||||
# Description: Enable service provided by pihole-FTL daemon
|
# Description: Enable service provided by pihole-FTL daemon
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
|
||||||
|
# Get PID of main pihole-FTL process
|
||||||
|
FTLCONFFILE="/etc/pihole/pihole-FTL.conf"
|
||||||
|
DEFAULT_PID_FILE="/run/pihole-FTL.pid"
|
||||||
|
getFTLPID() {
|
||||||
|
if [ -s "$FTLCONFFILE" ]; then
|
||||||
|
# if PIDFILE is not set in pihole-FTL.conf, use the default path
|
||||||
|
FTL_PID_FILE="$( (grep "^PIDFILE=" $FTLCONFFILE || echo "$DEFAULT_PID_FILE") | cut -d"=" -f2-)"
|
||||||
|
else
|
||||||
|
# if there is no pihole-FTL.conf, use the default path
|
||||||
|
FTL_PID_FILE="$DEFAULT_PID_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -s "${FTL_PID_FILE}" ]; then
|
||||||
|
# -s: FILE exists and has a size greater than zero
|
||||||
|
FTL_PID="$(cat "$FTL_PID_FILE")"
|
||||||
|
# Exploit prevention: unset the variable if there is malicious content
|
||||||
|
# Verify that the value read from the file is numeric
|
||||||
|
expr "$FTL_PID" : "[^[:digit:]]" > /dev/null && unset FTL_PID
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If FTL is not running, or the PID file contains malicious stuff, substitute
|
||||||
|
# negative PID to signal this to the caller
|
||||||
|
echo "${FTL_PID:=-1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
is_running() {
|
is_running() {
|
||||||
pgrep -xo "pihole-FTL" > /dev/null
|
FTL_PID="$(getFTLPID)"
|
||||||
|
if [ "$FTL_PID" -eq "-1" ]; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
echo 0
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -21,8 +52,6 @@ start() {
|
|||||||
else
|
else
|
||||||
# Touch files to ensure they exist (create if non-existing, preserve if existing)
|
# Touch files to ensure they exist (create if non-existing, preserve if existing)
|
||||||
mkdir -pm 0755 /run/pihole
|
mkdir -pm 0755 /run/pihole
|
||||||
[ ! -f /run/pihole-FTL.pid ] && install -m 644 -o pihole -g pihole /dev/null /run/pihole-FTL.pid
|
|
||||||
[ ! -f /run/pihole-FTL.port ] && install -m 644 -o pihole -g pihole /dev/null /run/pihole-FTL.port
|
|
||||||
[ ! -f /var/log/pihole-FTL.log ] && install -m 644 -o pihole -g pihole /dev/null /var/log/pihole-FTL.log
|
[ ! -f /var/log/pihole-FTL.log ] && install -m 644 -o pihole -g pihole /dev/null /var/log/pihole-FTL.log
|
||||||
[ ! -f /var/log/pihole.log ] && install -m 644 -o pihole -g pihole /dev/null /var/log/pihole.log
|
[ ! -f /var/log/pihole.log ] && install -m 644 -o pihole -g pihole /dev/null /var/log/pihole.log
|
||||||
[ ! -f /etc/pihole/dhcp.leases ] && install -m 644 -o pihole -g pihole /dev/null /etc/pihole/dhcp.leases
|
[ ! -f /etc/pihole/dhcp.leases ] && install -m 644 -o pihole -g pihole /dev/null /etc/pihole/dhcp.leases
|
||||||
@@ -47,7 +76,7 @@ start() {
|
|||||||
# Stop the service
|
# Stop the service
|
||||||
stop() {
|
stop() {
|
||||||
if is_running; then
|
if is_running; then
|
||||||
pkill -xo "pihole-FTL"
|
pkill -F "${FTL_PID_FILE}"
|
||||||
for i in 1 2 3 4 5; do
|
for i in 1 2 3 4 5; do
|
||||||
if ! is_running; then
|
if ! is_running; then
|
||||||
break
|
break
|
||||||
@@ -60,8 +89,8 @@ stop() {
|
|||||||
|
|
||||||
if is_running; then
|
if is_running; then
|
||||||
echo "Not stopped; may still be shutting down or shutdown may have failed, killing now"
|
echo "Not stopped; may still be shutting down or shutdown may have failed, killing now"
|
||||||
pkill -xo -9 "pihole-FTL"
|
pkill -9 -F "${FTL_PID_FILE}"
|
||||||
exit 1
|
exit 0
|
||||||
else
|
else
|
||||||
echo "Stopped"
|
echo "Stopped"
|
||||||
fi
|
fi
|
||||||
@@ -69,7 +98,7 @@ stop() {
|
|||||||
echo "Not running"
|
echo "Not running"
|
||||||
fi
|
fi
|
||||||
# Cleanup
|
# Cleanup
|
||||||
rm -f /run/pihole/FTL.sock /dev/shm/FTL-*
|
rm -f /run/pihole/FTL.sock /dev/shm/FTL-* "${FTL_PID_FILE}"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -259,29 +259,6 @@ os_check() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function waits for dpkg to unlock, which signals that the previous apt-get command has finished.
|
|
||||||
test_dpkg_lock() {
|
|
||||||
i=0
|
|
||||||
printf " %b Waiting for package manager to finish (up to 30 seconds)\\n" "${INFO}"
|
|
||||||
# fuser is a program to show which processes use the named files, sockets, or filesystems
|
|
||||||
# So while the lock is held,
|
|
||||||
while fuser /var/lib/dpkg/lock >/dev/null 2>&1
|
|
||||||
do
|
|
||||||
# we wait half a second,
|
|
||||||
sleep 0.5
|
|
||||||
# increase the iterator,
|
|
||||||
((i=i+1))
|
|
||||||
# exit if waiting for more then 30 seconds
|
|
||||||
if [[ $i -gt 60 ]]; then
|
|
||||||
printf " %b %bError: Could not verify package manager finished and released lock. %b\\n" "${CROSS}" "${COL_LIGHT_RED}" "${COL_NC}"
|
|
||||||
printf " Attempt to install packages manually and retry.\\n"
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# and then report success once dpkg is unlocked.
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Compatibility
|
# Compatibility
|
||||||
package_manager_detect() {
|
package_manager_detect() {
|
||||||
# First check to see if apt-get is installed.
|
# First check to see if apt-get is installed.
|
||||||
@@ -325,6 +302,22 @@ package_manager_detect() {
|
|||||||
# and config file
|
# and config file
|
||||||
LIGHTTPD_CFG="lighttpd.conf.debian"
|
LIGHTTPD_CFG="lighttpd.conf.debian"
|
||||||
|
|
||||||
|
# This function waits for dpkg to unlock, which signals that the previous apt-get command has finished.
|
||||||
|
test_dpkg_lock() {
|
||||||
|
i=0
|
||||||
|
# fuser is a program to show which processes use the named files, sockets, or filesystems
|
||||||
|
# So while the lock is held,
|
||||||
|
while fuser /var/lib/dpkg/lock >/dev/null 2>&1
|
||||||
|
do
|
||||||
|
# we wait half a second,
|
||||||
|
sleep 0.5
|
||||||
|
# increase the iterator,
|
||||||
|
((i=i+1))
|
||||||
|
done
|
||||||
|
# and then report success once dpkg is unlocked.
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# If apt-get is not found, check for rpm.
|
# If apt-get is not found, check for rpm.
|
||||||
elif is_command rpm ; then
|
elif is_command rpm ; then
|
||||||
# Then check if dnf or yum is the package manager
|
# Then check if dnf or yum is the package manager
|
||||||
|
@@ -11,9 +11,10 @@
|
|||||||
source "/opt/pihole/COL_TABLE"
|
source "/opt/pihole/COL_TABLE"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
read -rp " ${QST} Are you sure you would like to remove ${COL_WHITE}Pi-hole${COL_NC}? [y/N] " answer
|
read -rp " ${QST} Are you sure you would like to remove ${COL_WHITE}Pi-hole${COL_NC}? [y/N] " yn
|
||||||
case ${answer} in
|
case ${yn} in
|
||||||
[Yy]* ) break;;
|
[Yy]* ) break;;
|
||||||
|
[Nn]* ) echo -e "${OVER} ${COL_LIGHT_GREEN}Uninstall has been canceled${COL_NC}"; exit 0;;
|
||||||
* ) echo -e "${OVER} ${COL_LIGHT_GREEN}Uninstall has been canceled${COL_NC}"; exit 0;;
|
* ) echo -e "${OVER} ${COL_LIGHT_GREEN}Uninstall has been canceled${COL_NC}"; exit 0;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -75,8 +76,8 @@ removeAndPurge() {
|
|||||||
for i in "${DEPS[@]}"; do
|
for i in "${DEPS[@]}"; do
|
||||||
if package_check "${i}" > /dev/null; then
|
if package_check "${i}" > /dev/null; then
|
||||||
while true; do
|
while true; do
|
||||||
read -rp " ${QST} Do you wish to remove ${COL_WHITE}${i}${COL_NC} from your system? [Y/N] " answer
|
read -rp " ${QST} Do you wish to remove ${COL_WHITE}${i}${COL_NC} from your system? [Y/N] " yn
|
||||||
case ${answer} in
|
case ${yn} in
|
||||||
[Yy]* )
|
[Yy]* )
|
||||||
echo -ne " ${INFO} Removing ${i}...";
|
echo -ne " ${INFO} Removing ${i}...";
|
||||||
${SUDO} "${PKG_REMOVE[@]}" "${i}" &> /dev/null;
|
${SUDO} "${PKG_REMOVE[@]}" "${i}" &> /dev/null;
|
||||||
@@ -214,8 +215,8 @@ while true; do
|
|||||||
echo -n "${i} "
|
echo -n "${i} "
|
||||||
done
|
done
|
||||||
echo "${COL_NC}"
|
echo "${COL_NC}"
|
||||||
read -rp " ${QST} Do you wish to go through each dependency for removal? (Choosing No will leave all dependencies installed) [Y/n] " answer
|
read -rp " ${QST} Do you wish to go through each dependency for removal? (Choosing No will leave all dependencies installed) [Y/n] " yn
|
||||||
case ${answer} in
|
case ${yn} in
|
||||||
[Yy]* ) removeAndPurge; break;;
|
[Yy]* ) removeAndPurge; break;;
|
||||||
[Nn]* ) removeNoPurge; break;;
|
[Nn]* ) removeNoPurge; break;;
|
||||||
* ) removeAndPurge; break;;
|
* ) removeAndPurge; break;;
|
||||||
|
54
pihole
54
pihole
@@ -21,7 +21,7 @@ readonly FTL_PID_FILE="/run/pihole-FTL.pid"
|
|||||||
readonly colfile="${PI_HOLE_SCRIPT_DIR}/COL_TABLE"
|
readonly colfile="${PI_HOLE_SCRIPT_DIR}/COL_TABLE"
|
||||||
source "${colfile}"
|
source "${colfile}"
|
||||||
|
|
||||||
utilsfile="${PI_HOLE_SCRIPT_DIR}/utils.sh"
|
readonly utilsfile="${PI_HOLE_SCRIPT_DIR}/utils.sh"
|
||||||
source "${utilsfile}"
|
source "${utilsfile}"
|
||||||
|
|
||||||
webpageFunc() {
|
webpageFunc() {
|
||||||
@@ -226,7 +226,7 @@ Time:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local str="Pi-hole Disabled"
|
local str="Pi-hole Disabled"
|
||||||
addOrEditKeyValPair "${setupVars}" "BLOCKING_ENABLED" "false"
|
addOrEditKeyValPair "BLOCKING_ENABLED" "false" "${setupVars}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Enable Pi-hole
|
# Enable Pi-hole
|
||||||
@@ -238,7 +238,7 @@ Time:
|
|||||||
echo -e " ${INFO} Enabling blocking"
|
echo -e " ${INFO} Enabling blocking"
|
||||||
local str="Pi-hole Enabled"
|
local str="Pi-hole Enabled"
|
||||||
|
|
||||||
addOrEditKeyValPair "${setupVars}" "BLOCKING_ENABLED" "true"
|
addOrEditKeyValPair "BLOCKING_ENABLED" "true" "${setupVars}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
restartDNS reload-lists
|
restartDNS reload-lists
|
||||||
@@ -260,8 +260,8 @@ Options:
|
|||||||
exit 0
|
exit 0
|
||||||
elif [[ "${1}" == "off" ]]; then
|
elif [[ "${1}" == "off" ]]; then
|
||||||
# Disable logging
|
# Disable logging
|
||||||
addOrEditKeyValPair /etc/dnsmasq.d/01-pihole.conf "log-queries"
|
sed -i 's/^log-queries/#log-queries/' /etc/dnsmasq.d/01-pihole.conf
|
||||||
addOrEditKeyValPair "${setupVars}" "QUERY_LOGGING" "false"
|
addOrEditKeyValPair "QUERY_LOGGING" "false" "${setupVars}"
|
||||||
if [[ "${2}" != "noflush" ]]; then
|
if [[ "${2}" != "noflush" ]]; then
|
||||||
# Flush logs
|
# Flush logs
|
||||||
"${PI_HOLE_BIN_DIR}"/pihole -f
|
"${PI_HOLE_BIN_DIR}"/pihole -f
|
||||||
@@ -270,8 +270,8 @@ Options:
|
|||||||
local str="Logging has been disabled!"
|
local str="Logging has been disabled!"
|
||||||
elif [[ "${1}" == "on" ]]; then
|
elif [[ "${1}" == "on" ]]; then
|
||||||
# Enable logging
|
# Enable logging
|
||||||
removeKey /etc/dnsmasq.d/01-pihole.conf "log-queries"
|
sed -i 's/^#log-queries/log-queries/' /etc/dnsmasq.d/01-pihole.conf
|
||||||
addOrEditKeyValPair "${setupVars}" "QUERY_LOGGING" "true"
|
addOrEditKeyValPair "QUERY_LOGGING" "true" "${setupVars}"
|
||||||
echo -e " ${INFO} Enabling logging..."
|
echo -e " ${INFO} Enabling logging..."
|
||||||
local str="Logging has been enabled!"
|
local str="Logging has been enabled!"
|
||||||
else
|
else
|
||||||
@@ -365,7 +365,7 @@ statusFunc() {
|
|||||||
# Enable blocking
|
# Enable blocking
|
||||||
"${PI_HOLE_BIN_DIR}"/pihole enable
|
"${PI_HOLE_BIN_DIR}"/pihole enable
|
||||||
fi
|
fi
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tailFunc() {
|
tailFunc() {
|
||||||
@@ -496,38 +496,8 @@ if [[ $# = 0 ]]; then
|
|||||||
helpFunc
|
helpFunc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# functions that do not require sudo power
|
|
||||||
case "${1}" in
|
case "${1}" in
|
||||||
"-h" | "help" | "--help" ) helpFunc;;
|
"-h" | "help" | "--help" ) helpFunc;;
|
||||||
"-v" | "version" ) versionFunc "$@";;
|
|
||||||
"-c" | "chronometer" ) chronometerFunc "$@";;
|
|
||||||
"-q" | "query" ) queryFunc "$@";;
|
|
||||||
"status" ) statusFunc "$2";;
|
|
||||||
"-t" | "tail" ) tailFunc "$2";;
|
|
||||||
"tricorder" ) tricorderFunc;;
|
|
||||||
|
|
||||||
# we need to add all arguments that require sudo power to not trigger the * argument
|
|
||||||
"-w" | "whitelist" ) ;;
|
|
||||||
"-b" | "blacklist" ) ;;
|
|
||||||
"--wild" | "wildcard" ) ;;
|
|
||||||
"--regex" | "regex" ) ;;
|
|
||||||
"--white-regex" | "white-regex" ) ;;
|
|
||||||
"--white-wild" | "white-wild" ) ;;
|
|
||||||
"-f" | "flush" ) ;;
|
|
||||||
"-up" | "updatePihole" ) ;;
|
|
||||||
"-r" | "reconfigure" ) ;;
|
|
||||||
"-g" | "updateGravity" ) ;;
|
|
||||||
"-l" | "logging" ) ;;
|
|
||||||
"uninstall" ) ;;
|
|
||||||
"enable" ) ;;
|
|
||||||
"disable" ) ;;
|
|
||||||
"-d" | "debug" ) ;;
|
|
||||||
"restartdns" ) ;;
|
|
||||||
"-a" | "admin" ) ;;
|
|
||||||
"checkout" ) ;;
|
|
||||||
"updatechecker" ) ;;
|
|
||||||
"arpflush" ) ;;
|
|
||||||
* ) helpFunc;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Must be root to use this tool
|
# Must be root to use this tool
|
||||||
@@ -554,13 +524,21 @@ case "${1}" in
|
|||||||
"-up" | "updatePihole" ) updatePiholeFunc "$@";;
|
"-up" | "updatePihole" ) updatePiholeFunc "$@";;
|
||||||
"-r" | "reconfigure" ) reconfigurePiholeFunc;;
|
"-r" | "reconfigure" ) reconfigurePiholeFunc;;
|
||||||
"-g" | "updateGravity" ) updateGravityFunc "$@";;
|
"-g" | "updateGravity" ) updateGravityFunc "$@";;
|
||||||
|
"-c" | "chronometer" ) chronometerFunc "$@";;
|
||||||
|
"-h" | "help" ) helpFunc;;
|
||||||
|
"-v" | "version" ) versionFunc "$@";;
|
||||||
|
"-q" | "query" ) queryFunc "$@";;
|
||||||
"-l" | "logging" ) piholeLogging "$@";;
|
"-l" | "logging" ) piholeLogging "$@";;
|
||||||
"uninstall" ) uninstallFunc;;
|
"uninstall" ) uninstallFunc;;
|
||||||
"enable" ) piholeEnable 1;;
|
"enable" ) piholeEnable 1;;
|
||||||
"disable" ) piholeEnable 0 "$2";;
|
"disable" ) piholeEnable 0 "$2";;
|
||||||
|
"status" ) statusFunc "$2";;
|
||||||
"restartdns" ) restartDNS "$2";;
|
"restartdns" ) restartDNS "$2";;
|
||||||
"-a" | "admin" ) webpageFunc "$@";;
|
"-a" | "admin" ) webpageFunc "$@";;
|
||||||
|
"-t" | "tail" ) tailFunc "$2";;
|
||||||
"checkout" ) piholeCheckoutFunc "$@";;
|
"checkout" ) piholeCheckoutFunc "$@";;
|
||||||
|
"tricorder" ) tricorderFunc;;
|
||||||
"updatechecker" ) updateCheckFunc "$@";;
|
"updatechecker" ) updateCheckFunc "$@";;
|
||||||
"arpflush" ) arpFunc "$@";;
|
"arpflush" ) arpFunc "$@";;
|
||||||
|
* ) helpFunc;;
|
||||||
esac
|
esac
|
||||||
|
@@ -2,33 +2,15 @@ def test_key_val_replacement_works(host):
|
|||||||
''' Confirms addOrEditKeyValPair provides the expected output '''
|
''' Confirms addOrEditKeyValPair provides the expected output '''
|
||||||
host.run('''
|
host.run('''
|
||||||
source /opt/pihole/utils.sh
|
source /opt/pihole/utils.sh
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_ONE" "value1"
|
addOrEditKeyValPair "KEY_ONE" "value1" "./testoutput"
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_TWO" "value2"
|
addOrEditKeyValPair "KEY_TWO" "value2" "./testoutput"
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_ONE" "value3"
|
addOrEditKeyValPair "KEY_ONE" "value3" "./testoutput"
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_FOUR" "value4"
|
addOrEditKeyValPair "KEY_FOUR" "value4" "./testoutput"
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_FIVE_NO_VALUE"
|
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_FIVE_NO_VALUE"
|
|
||||||
''')
|
''')
|
||||||
output = host.run('''
|
output = host.run('''
|
||||||
cat ./testoutput
|
cat ./testoutput
|
||||||
''')
|
''')
|
||||||
expected_stdout = 'KEY_ONE=value3\nKEY_TWO=value2\nKEY_FOUR=value4\nKEY_FIVE_NO_VALUE\n'
|
expected_stdout = 'KEY_ONE=value3\nKEY_TWO=value2\nKEY_FOUR=value4\n'
|
||||||
assert expected_stdout == output.stdout
|
|
||||||
|
|
||||||
|
|
||||||
def test_key_val_removal_works(host):
|
|
||||||
''' Confirms removeKey provides the expected output '''
|
|
||||||
host.run('''
|
|
||||||
source /opt/pihole/utils.sh
|
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_ONE" "value1"
|
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_TWO" "value2"
|
|
||||||
addOrEditKeyValPair "./testoutput" "KEY_THREE" "value3"
|
|
||||||
removeKey "./testoutput" "KEY_TWO"
|
|
||||||
''')
|
|
||||||
output = host.run('''
|
|
||||||
cat ./testoutput
|
|
||||||
''')
|
|
||||||
expected_stdout = 'KEY_ONE=value1\nKEY_THREE=value3\n'
|
|
||||||
assert expected_stdout == output.stdout
|
assert expected_stdout == output.stdout
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user