From 852f6b95f5d10847569c1c59453aeaac7a03cef4 Mon Sep 17 00:00:00 2001 From: "Thomas L. Kjeldsen" Date: Fri, 23 Aug 2019 19:49:13 +0200 Subject: [PATCH 1/3] Prevent "pihole disable $timeout" from messing up future state changes Signed-off-by: Thomas L. Kjeldsen --- advanced/Scripts/pihole-reenable.sh | 16 ++++++++++++++++ pihole | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100755 advanced/Scripts/pihole-reenable.sh diff --git a/advanced/Scripts/pihole-reenable.sh b/advanced/Scripts/pihole-reenable.sh new file mode 100755 index 00000000..dbadc860 --- /dev/null +++ b/advanced/Scripts/pihole-reenable.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Pi-hole: A black hole for Internet advertisements +# (c) 2019 Pi-hole, LLC (https://pi-hole.net) +# Network-wide ad blocking via your own hardware. +# +# Wrapper script to re-enable Pi-hole after a period of it being disabled. +# +# This script will be aborted by the `pihole enable` command using `killall`. +# As a consequence, the filename of this script is limited to max 15 characters +# and the script does not use `env`. +# +# This file is copyright under the latest version of the EUPL. +# Please see LICENSE file for your rights under this license. + +sleep "${1}" +pihole enable diff --git a/pihole b/pihole index 065fb385..b0ba8473 100755 --- a/pihole +++ b/pihole @@ -164,7 +164,7 @@ Time: local str="Disabling blocking for ${tt} seconds" echo -e " ${INFO} ${str}..." local str="Blocking will be re-enabled in ${tt} seconds" - nohup bash -c "sleep ${tt}; ${PI_HOLE_BIN_DIR}/pihole enable" /dev/null & + nohup "${PI_HOLE_SCRIPT_DIR}"/pihole-reenable.sh ${tt} /dev/null & else local error=true fi @@ -175,7 +175,7 @@ Time: echo -e " ${INFO} ${str}..." local str="Blocking will be re-enabled in ${tt} minutes" tt=$((${tt}*60)) - nohup bash -c "sleep ${tt}; ${PI_HOLE_BIN_DIR}/pihole enable" /dev/null & + nohup "${PI_HOLE_SCRIPT_DIR}"/pihole-reenable.sh ${tt} /dev/null & else local error=true fi @@ -197,6 +197,7 @@ Time: fi else # Enable Pi-hole + killall -q pihole-reenable if grep -cq "BLOCKING_ENABLED=true" "${setupVars}"; then echo -e " ${INFO} Blocking already enabled, nothing to do" exit 0 From 005da06b3d4cd399aa2c0a6d226df586f087cfcf Mon Sep 17 00:00:00 2001 From: "Thomas L. Kjeldsen" Date: Sat, 30 May 2020 02:38:22 +0200 Subject: [PATCH 2/3] Use PI_HOLE_BIN_DIR as introduced in PR #2886 Signed-off-by: Thomas L. Kjeldsen --- advanced/Scripts/pihole-reenable.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/advanced/Scripts/pihole-reenable.sh b/advanced/Scripts/pihole-reenable.sh index dbadc860..4a6ff88c 100755 --- a/advanced/Scripts/pihole-reenable.sh +++ b/advanced/Scripts/pihole-reenable.sh @@ -12,5 +12,7 @@ # This file is copyright under the latest version of the EUPL. # Please see LICENSE file for your rights under this license. +readonly PI_HOLE_BIN_DIR="/usr/local/bin" + sleep "${1}" -pihole enable +"${PI_HOLE_BIN_DIR}"/pihole enable From 903808a47726cad878da329f17d529341df1c514 Mon Sep 17 00:00:00 2001 From: "Thomas L. Kjeldsen" Date: Sat, 30 May 2020 02:45:03 +0200 Subject: [PATCH 3/3] Improved explanation of why this script is needed Signed-off-by: Thomas L. Kjeldsen --- advanced/Scripts/pihole-reenable.sh | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/advanced/Scripts/pihole-reenable.sh b/advanced/Scripts/pihole-reenable.sh index 4a6ff88c..93ec3b95 100755 --- a/advanced/Scripts/pihole-reenable.sh +++ b/advanced/Scripts/pihole-reenable.sh @@ -1,16 +1,21 @@ #!/bin/bash # Pi-hole: A black hole for Internet advertisements -# (c) 2019 Pi-hole, LLC (https://pi-hole.net) +# (c) 2020 Pi-hole, LLC (https://pi-hole.net) # Network-wide ad blocking via your own hardware. # -# Wrapper script to re-enable Pi-hole after a period of it being disabled. -# -# This script will be aborted by the `pihole enable` command using `killall`. -# As a consequence, the filename of this script is limited to max 15 characters -# and the script does not use `env`. -# # This file is copyright under the latest version of the EUPL. # Please see LICENSE file for your rights under this license. +# +# +# The pihole disable command has the option to set a specified time before +# blocking is automatically re-enabled. +# +# Present script is responsible for the sleep & re-enable part of the job and +# is automatically terminated if it is still running when pihole is enabled by +# other means. +# +# This ensures that pihole ends up in the correct state after a sequence of +# commands suchs as: `pihole disable 30s; pihole enable; pihole disable` readonly PI_HOLE_BIN_DIR="/usr/local/bin"