2 spaces -> 4 spaces in start.sh

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
This commit is contained in:
Adam Warner
2025-08-13 17:13:48 +01:00
parent 80d03d7f21
commit bb9ce87e95

View File

@@ -1,12 +1,12 @@
#!/bin/bash
if [ ! -x /bin/sh ]; then
echo "Executable test for /bin/sh failed. Your Docker version is too old to run Alpine 3.14+ and Pi-hole. You must upgrade Docker.";
exit 1;
echo "Executable test for /bin/sh failed. Your Docker version is too old to run Alpine 3.14+ and Pi-hole. You must upgrade Docker.";
exit 1;
fi
if [ "${PH_VERBOSE:-0}" -gt 0 ]; then
set -x
set -x
fi
trap stop TERM INT QUIT HUP ERR
@@ -16,140 +16,140 @@ TRAP_TRIGGERED=0
start() {
# The below functions are all contained in bash_functions.sh
# shellcheck source=/dev/null
. /usr/bin/bash_functions.sh
# The below functions are all contained in bash_functions.sh
# shellcheck source=/dev/null
. /usr/bin/bash_functions.sh
# If the file /etc/pihole/setupVars.conf exists, but /etc/pihole/pihole.toml does not, then we are migrating v5->v6
# FTL Will handle the migration of the config files
if [[ -f /etc/pihole/setupVars.conf && ! -f /etc/pihole/pihole.toml ]]; then
echo " [i] v5 files detected that have not yet been migrated to v6"
# If the file /etc/pihole/setupVars.conf exists, but /etc/pihole/pihole.toml does not, then we are migrating v5->v6
# FTL Will handle the migration of the config files
if [[ -f /etc/pihole/setupVars.conf && ! -f /etc/pihole/pihole.toml ]]; then
echo " [i] v5 files detected that have not yet been migrated to v6"
echo ""
migrate_v5_configs
fi
# ===========================
# Initial checks
# ===========================
# If PIHOLE_UID is set, modify the pihole user's id to match
set_uid_gid
# Configure FTL with any environment variables if needed
echo " [i] Starting FTL configuration"
ftl_config
# Install additional packages inside the container if requested
install_additional_packages
# Start crond for scheduled scripts (logrotate, pihole flush, gravity update etc)
start_cron
# Install the logrotate config file
install_logrotate
#migrate Gravity Database if needed:
migrate_gravity
echo " [i] pihole-FTL pre-start checks"
# Run the post stop script to cleanup any remaining artifacts from a previous run
sh /opt/pihole/pihole-FTL-poststop.sh
fix_capabilities
sh /opt/pihole/pihole-FTL-prestart.sh
echo " [i] Starting pihole-FTL ($FTL_CMD) as ${DNSMASQ_USER}"
echo ""
migrate_v5_configs
fi
# ===========================
# Initial checks
# ===========================
capsh --user="${DNSMASQ_USER}" --keep=1 -- -c "/usr/bin/pihole-FTL $FTL_CMD >/dev/null" &
# Notes on above:
# - DNSMASQ_USER default of pihole is in Dockerfile & can be overwritten by runtime container env
# - /var/log/pihole/pihole*.log has FTL's output that no-daemon would normally print in FG too
# prevent duplicating it in docker logs by sending to dev null
# If PIHOLE_UID is set, modify the pihole user's id to match
set_uid_gid
# We need the PID of the capsh process so that we can wait for it to finish
CAPSH_PID=$!
# Configure FTL with any environment variables if needed
echo " [i] Starting FTL configuration"
ftl_config
# Wait until the log file exists before continuing
while [ ! -f /var/log/pihole/FTL.log ]; do
sleep 0.5
done
# Install additional packages inside the container if requested
install_additional_packages
# Wait until the FTL log contains the "FTL started" message before continuing
while ! grep -q '########## FTL started' /var/log/pihole/FTL.log; do
sleep 0.5
done
# Start crond for scheduled scripts (logrotate, pihole flush, gravity update etc)
start_cron
pihole updatechecker
local versionsOutput
versionsOutput=$(pihole -v)
echo " [i] Version info:"
printf "%b" "${versionsOutput}\\n" | sed 's/^/ /'
echo ""
# Install the logrotate config file
install_logrotate
if [ "${TAIL_FTL_LOG:-1}" -eq 1 ]; then
# Start tailing the FTL log from the most recent "FTL Started" message
# Get the line number
startFrom=$(grep -n '########## FTL started' /var/log/pihole/FTL.log | tail -1 | cut -d: -f1)
# Start the tail from the line number and background it
tail --follow=name -n +"${startFrom}" /var/log/pihole/FTL.log &
else
echo " [i] FTL log output is disabled. Remove the Environment variable TAIL_FTL_LOG, or set it to 1 to enable FTL log output."
fi
#migrate Gravity Database if needed:
migrate_gravity
echo " [i] pihole-FTL pre-start checks"
# Run the post stop script to cleanup any remaining artifacts from a previous run
sh /opt/pihole/pihole-FTL-poststop.sh
fix_capabilities
sh /opt/pihole/pihole-FTL-prestart.sh
echo " [i] Starting pihole-FTL ($FTL_CMD) as ${DNSMASQ_USER}"
echo ""
capsh --user="${DNSMASQ_USER}" --keep=1 -- -c "/usr/bin/pihole-FTL $FTL_CMD >/dev/null" &
# Notes on above:
# - DNSMASQ_USER default of pihole is in Dockerfile & can be overwritten by runtime container env
# - /var/log/pihole/pihole*.log has FTL's output that no-daemon would normally print in FG too
# prevent duplicating it in docker logs by sending to dev null
# We need the PID of the capsh process so that we can wait for it to finish
CAPSH_PID=$!
# Wait until the log file exists before continuing
while [ ! -f /var/log/pihole/FTL.log ]; do
sleep 0.5
done
# Wait until the FTL log contains the "FTL started" message before continuing
while ! grep -q '########## FTL started' /var/log/pihole/FTL.log; do
sleep 0.5
done
pihole updatechecker
local versionsOutput
versionsOutput=$(pihole -v)
echo " [i] Version info:"
printf "%b" "${versionsOutput}\\n" | sed 's/^/ /'
echo ""
if [ "${TAIL_FTL_LOG:-1}" -eq 1 ]; then
# Start tailing the FTL log from the most recent "FTL Started" message
# Get the line number
startFrom=$(grep -n '########## FTL started' /var/log/pihole/FTL.log | tail -1 | cut -d: -f1)
# Start the tail from the line number and background it
tail --follow=name -n +"${startFrom}" /var/log/pihole/FTL.log &
else
echo " [i] FTL log output is disabled. Remove the Environment variable TAIL_FTL_LOG, or set it to 1 to enable FTL log output."
fi
# Wait for the capsh process (which spawned FTL) to finish
wait $CAPSH_PID
FTL_EXIT_CODE=$?
# Wait for the capsh process (which spawned FTL) to finish
wait $CAPSH_PID
FTL_EXIT_CODE=$?
# If we are here, then FTL has exited.
# If the trap was triggered, then stop will have already been called
if [ $TRAP_TRIGGERED -eq 0 ]; then
# Pass the exit code through to the stop function
stop $FTL_EXIT_CODE
fi
# If we are here, then FTL has exited.
# If the trap was triggered, then stop will have already been called
if [ $TRAP_TRIGGERED -eq 0 ]; then
# Pass the exit code through to the stop function
stop $FTL_EXIT_CODE
fi
}
stop() {
local FTL_EXIT_CODE=$1
local FTL_EXIT_CODE=$1
# if we have nothing in FTL_EXIT_CODE, then have been called by the trap. Close FTL and wait for the CAPSH_PID to finish
if [ -z "${FTL_EXIT_CODE}" ]; then
TRAP_TRIGGERED=1
echo ""
echo " [i] Container stop requested..."
echo " [i] pihole-FTL is running - Attempting to shut it down cleanly"
echo ""
killall --signal 15 pihole-FTL
wait $CAPSH_PID
FTL_EXIT_CODE=$?
fi
# Wait for a few seconds to allow the FTL log tail to catch up before exiting the container
sleep 2
# ensure the exit code is an integer, if not set it to 1
if ! [[ "${FTL_EXIT_CODE}" =~ ^[0-9]+$ ]]; then
FTL_EXIT_CODE=1
fi
sh /opt/pihole/pihole-FTL-poststop.sh
# if we have nothing in FTL_EXIT_CODE, then have been called by the trap. Close FTL and wait for the CAPSH_PID to finish
if [ -z "${FTL_EXIT_CODE}" ]; then
TRAP_TRIGGERED=1
echo ""
echo " [i] Container stop requested..."
echo " [i] pihole-FTL is running - Attempting to shut it down cleanly"
echo " [i] pihole-FTL exited with status $FTL_EXIT_CODE"
echo ""
echo " [i] Container will now stop or restart depending on your restart policy"
echo " https://docs.docker.com/engine/containers/start-containers-automatically/#use-a-restart-policy"
echo ""
killall --signal 15 pihole-FTL
wait $CAPSH_PID
FTL_EXIT_CODE=$?
fi
# If we are running pytest, keep the container alive for a little longer
# to allow the tests to complete
if [[ ${PYTEST} ]]; then
sleep 10
fi
# Wait for a few seconds to allow the FTL log tail to catch up before exiting the container
sleep 2
# ensure the exit code is an integer, if not set it to 1
if ! [[ "${FTL_EXIT_CODE}" =~ ^[0-9]+$ ]]; then
FTL_EXIT_CODE=1
fi
sh /opt/pihole/pihole-FTL-poststop.sh
echo ""
echo " [i] pihole-FTL exited with status $FTL_EXIT_CODE"
echo ""
echo " [i] Container will now stop or restart depending on your restart policy"
echo " https://docs.docker.com/engine/containers/start-containers-automatically/#use-a-restart-policy"
echo ""
# If we are running pytest, keep the container alive for a little longer
# to allow the tests to complete
if [[ ${PYTEST} ]]; then
sleep 10
fi
exit "${FTL_EXIT_CODE}"
exit "${FTL_EXIT_CODE}"
}