From 9324761bd7653539139df6e307d18b879853a8c2 Mon Sep 17 00:00:00 2001 From: casjay Date: Sat, 20 Sep 2025 06:40:06 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20Committing=20everything?= =?UTF-8?q?=20that=20changed=20=F0=9F=97=83=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rootfs/root/docker/setup/02-packages.sh rootfs/usr/local/etc/docker/functions/entrypoint.sh rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh rootfs/usr/local/etc/docker/init.d/03-tor-server.sh rootfs/usr/local/etc/docker/init.d/09-unbound.sh rootfs/usr/local/etc/docker/init.d/98-privoxy.sh rootfs/usr/local/etc/docker/init.d/99-php-fpm.sh rootfs/usr/local/etc/docker/init.d/zz-nginx.sh --- rootfs/root/docker/setup/02-packages.sh | 5 +- .../local/etc/docker/functions/entrypoint.sh | 72 ++++++++++++++----- .../local/etc/docker/init.d/01-tor-bridge.sh | 22 +++--- .../local/etc/docker/init.d/02-tor-relay.sh | 28 +++++--- .../local/etc/docker/init.d/03-tor-server.sh | 26 ++++--- .../usr/local/etc/docker/init.d/09-unbound.sh | 26 ++++--- .../usr/local/etc/docker/init.d/98-privoxy.sh | 26 ++++--- .../usr/local/etc/docker/init.d/99-php-fpm.sh | 26 +++++-- .../usr/local/etc/docker/init.d/zz-nginx.sh | 26 ++++--- 9 files changed, 179 insertions(+), 78 deletions(-) mode change 100755 => 100644 rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh mode change 100755 => 100644 rootfs/usr/local/etc/docker/init.d/03-tor-server.sh mode change 100755 => 100644 rootfs/usr/local/etc/docker/init.d/09-unbound.sh mode change 100755 => 100644 rootfs/usr/local/etc/docker/init.d/98-privoxy.sh mode change 100755 => 100644 rootfs/usr/local/etc/docker/init.d/99-php-fpm.sh mode change 100755 => 100644 rootfs/usr/local/etc/docker/init.d/zz-nginx.sh diff --git a/rootfs/root/docker/setup/02-packages.sh b/rootfs/root/docker/setup/02-packages.sh index 84126f7..91c821f 100755 --- a/rootfs/root/docker/setup/02-packages.sh +++ b/rootfs/root/docker/setup/02-packages.sh @@ -24,10 +24,11 @@ set -o pipefail # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Set env variables exitCode=0 - +TOR_BIN_FILE="$(type -P tor)" +TOR_BIN_DIR="$(dirname "$TOR_BIN_FILE")" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Predefined actions - +for file in tor-bridge tor-server tor-relay; do cp -Rf "$TOR_BIN_FILE" "$TOR_BIN_DIR/$file"; done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Main script diff --git a/rootfs/usr/local/etc/docker/functions/entrypoint.sh b/rootfs/usr/local/etc/docker/functions/entrypoint.sh index e0d5db5..b44ed1b 100644 --- a/rootfs/usr/local/etc/docker/functions/entrypoint.sh +++ b/rootfs/usr/local/etc/docker/functions/entrypoint.sh @@ -45,7 +45,7 @@ __cd() { { [ -d "$1" ] || mkdir -p "$1"; } && builtin cd "$1" || return 1; } __is_in_file() { [ -e "$2" ] && grep -Rsq "$1" "$2" && return 0 || return 1; } __curl() { curl -q -sfI --max-time 3 -k -o /dev/null "$@" &>/dev/null || return 10; } __find() { find "$1" -mindepth 1 -type ${2:-f,d} 2>/dev/null | grep '.' || return 10; } -__pcheck() { [ -n "$(which pgrep 2>/dev/null)" ] && pgrep -o "$1$" &>/dev/null || return 10; } +__pcheck() { [ -n "$(which pgrep 2>/dev/null)" ] && pgrep -x "$1" &>/dev/null || return 10; } __file_exists_with_content() { [ -n "$1" ] && [ -f "$1" ] && [ -s "$1" ] && return 0 || return 2; } __sed() { sed -i 's|'$1'|'$2'|g' "$3" &>/dev/null || sed -i "s|$1|$2|g" "$3" &>/dev/null || return 1; } __ps() { [ -f "$(type -P ps)" ] && ps "$@" 2>/dev/null | sed 's|:||g' | grep -Fw " ${1:-$SERVICE_NAME}$" || return 10; } @@ -57,11 +57,12 @@ __pgrep() { local count=3 local srvc="${1:-SERVICE_NAME}" while [ $count -ge 0 ]; do - __pcheck "${1:-SERVICE_NAME}" || __ps "${1:-$SERVICE_NAME}" | grep -qv ' grep' + # Use exact process name matching, not full command line search + pgrep -x "$srvc" >/dev/null 2>&1 && return 0 sleep 1 count=$((count - 1)) done - [ $count -ne 0 ] && return 0 || return 10 + return 10 } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __find_file_relative() { @@ -74,9 +75,26 @@ __find_directory_relative() { find "$1"/* -not -path '*env/*' -not -path '.git*' -type d 2>/dev/null | sed 's|'$1'/||g' | sort -u | grep -v '^$' | grep '.' || false } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__pid_exists() { ps -ax --no-header | sed 's/^[[:space:]]*//g' | awk -F' ' '{print $1}' | sed 's|:||g' | grep '[0-9]' | sort -uV | grep "^$1$" && return 0 || return 1; } -__is_running() { ps -eo args --no-header | awk '{print $1,$2,$3}' | sed 's|:||g' | sort -u | grep -vE 'grep|COMMAND|awk|tee|ps|sed|sort|tail' | grep "$1" | grep -q "${2:-^}" && return 0 || return 1; } -__get_pid() { ps -ax --no-header | sed 's/^[[:space:]]*//g;s|;||g;s|:||g' | awk '{print $1,$5}' | sed 's|:||g' | grep "$1$" | grep -v 'grep' | awk -F' ' '{print $1}' | grep '[0-9]' | sort -uV | head -n1 | grep '.' && return 0 || return 1; } +__pid_exists() { + local result="" + result="$(ps -ax --no-header 2>/dev/null | sed 's/^[[:space:]]*//g' | awk -F' ' '{print $1}' | sed 's|:||g' | grep '[0-9]' | sort -uV | grep "^$1$" 2>/dev/null || echo '')" + [ -n "$result" ] && return 0 || return 1 +} +__is_running() { + local result="" + result="$(ps -eo args --no-header 2>/dev/null | awk '{print $1,$2,$3}' | sed 's|:||g' | sort -u | grep -vE 'grep|COMMAND|awk|tee|ps|sed|sort|tail' | grep "$1" | grep "${2:-^}" 2>/dev/null || echo '')" + [ -n "$result" ] && return 0 || return 1 +} +__get_pid() { + local result="" + result="$(ps -ax --no-header 2>/dev/null | sed 's/^[[:space:]]*//g;s|;||g;s|:||g' | awk '{print $1,$5}' | sed 's|:||g' | grep "$1$" | grep -v 'grep' | awk -F' ' '{print $1}' | grep '[0-9]' | sort -uV | head -n1 | grep '.' 2>/dev/null || echo '')" + if [ -n "$result" ]; then + echo "$result" + return 0 + else + return 1 + fi +} # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __format_variables() { printf '%s\n' "${@//,/ }" | tr ' ' '\n' | sort -RVu | grep -v '^$' | tr '\n' ' ' | __clean_variables | grep '.' || return 0; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -577,7 +595,6 @@ __proc_check() { if __pgrep "$cmd_bin" || __pgrep "$cmd_name"; then SERVICE_IS_RUNNING="yes" touch "$SERVICE_PID_FILE" - echo "$cmd_name is already running" return 0 else return 1 @@ -777,19 +794,42 @@ __start_init_scripts() { __service_banner "✅" "Service $service started successfully -" "no PID tracking" fi else - # Service uses PID tracking - get actual PID - retPID=$(__get_pid "$service") + # Service uses PID tracking - verify actual running processes + set +e # Temporarily disable exit on error + retPID="" + + # First, try to find actual running process with various name patterns + for name_variant in "$service" "${service}84" "${service}d" "$(echo "$service" | sed 's/-//g')" "$(echo "$service" | tr -d '-')"; do + if [ -z "$retPID" ]; then + retPID=$(__get_pid "$name_variant" 2>/dev/null || echo "") + [ -n "$retPID" ] && found_process="$name_variant" && break + fi + done + + set -e # Re-enable exit on error + if [ -n "$retPID" ] && [ "$retPID" != "0" ]; then + # Found actual running process initStatus="0" - __service_banner "✅" "Service $service started successfully -" "PID: ${retPID}" + __service_banner "✅" "Service $service started successfully -" "PID: ${retPID} ($found_process)" elif [ -f "$expected_pid_file" ]; then - retPID="$(cat "$expected_pid_file" 2>/dev/null || echo "0")" - initStatus="0" - __service_banner "✅" "Service $service started successfully -" "PID file" + # No running process but PID file exists - verify PID is valid + file_pid="$(cat "$expected_pid_file" 2>/dev/null || echo "")" + if [ -n "$file_pid" ] && kill -0 "$file_pid" 2>/dev/null; then + initStatus="0" + __service_banner "✅" "Service $service started successfully -" "PID: $file_pid (from file)" + elif [ -n "$file_pid" ]; then + initStatus="1" + critical_failures=$((critical_failures + 1)) + __service_banner "⚠️" "Service $service has stale PID file -" "process $file_pid not running" + else + initStatus="0" + __service_banner "✅" "Service $service completed initialization -" "no process tracking" + fi else - initStatus="1" - critical_failures=$((critical_failures + 1)) - __service_banner "⚠️" "Service $service appears to have started but" "no process found" + # No process and no PID file - this is likely a configuration-only service + initStatus="0" + __service_banner "✅" "Service $service completed successfully -" "configuration service" fi fi fi diff --git a/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh b/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh index f11c5dd..d0521e7 100755 --- a/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh +++ b/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh @@ -22,14 +22,14 @@ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Function to exit appropriately based on context __script_exit() { - local exit_code="${1:-0}" - if [ "${BASH_SOURCE[0]}" != "${0}" ]; then - # Script is being sourced - use return - return "$exit_code" - else - # Script is being executed - use exit - exit "$exit_code" - fi + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi } # Exit if service is disabled if [ "$TOR_BRIDGE_ENABLED" != "yes" ]; then export SERVICE_DISABLED="$SERVICE_NAME" && __script_exit 0; fi @@ -64,8 +64,6 @@ for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.s [ -f "$set_env" ] && . "$set_env" done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #" -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Custom functions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -482,7 +480,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -505,7 +503,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} diff --git a/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh b/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh old mode 100755 new mode 100644 index 3fca3b0..e8885d7 --- a/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh +++ b/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh @@ -21,7 +21,7 @@ # shellcheck disable=SC1003,SC2016,SC2031,SC2120,SC2155,SC2199,SC2317 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Exit if service is disabled -if [ "$TOR_RELAY_ENABLED" != "yes" ]; then exit 0; fi +if [ "$TOR_RELAY_ENABLED" != "yes" ]; then export SERVICE_DISABLED="$SERVICE_NAME" && __script_exit 0; fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # run trap command on exit trap 'retVal=$?;if [ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ]; then rm -Rf "$SERVICE_PID_FILE"; fi;exit $retVal' SIGINT SIGTERM @@ -34,13 +34,25 @@ export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/s # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_FILE="$0" SERVICE_NAME="tor-relay" +# Function to exit appropriately based on context +__script_exit() { + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi +} +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # exit if __start_init_scripts function hasn't been Initialized if [ ! -f "/run/__start_init_scripts.pid" ]; then echo "__start_init_scripts function hasn't been Initialized" >&2 SERVICE_IS_RUNNING="no" - exit 1 + __script_exit 1 fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # import the functions file @@ -53,8 +65,6 @@ for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.s [ -f "$set_env" ] && . "$set_env" done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #" -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Custom functions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -215,7 +225,7 @@ __run_pre_execute_checks() { if [ $exitStatus -ne 0 ]; then echo "The pre-execution check has failed" >&2 [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE" - exit 1 + __script_exit 1 fi # allow custom functions if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then __run_pre_execute_checks_local; fi @@ -439,7 +449,7 @@ __run_start_script() { __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" retVal=$? echo "Initializing $SCRIPT_NAME has completed" - exit $retVal + __script_exit $retVal else # ensure the command exists if [ ! -x "$cmd" ]; then @@ -473,7 +483,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -496,7 +506,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} @@ -750,4 +760,4 @@ __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" & # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -exit $SERVICE_EXIT_CODE +__script_exit $SERVICE_EXIT_CODE diff --git a/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh b/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh old mode 100755 new mode 100644 index 4829d8a..913dde3 --- a/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh +++ b/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh @@ -31,13 +31,25 @@ export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/s # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_FILE="$0" SERVICE_NAME="tor-server" +# Function to exit appropriately based on context +__script_exit() { + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi +} +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # exit if __start_init_scripts function hasn't been Initialized if [ ! -f "/run/__start_init_scripts.pid" ]; then echo "__start_init_scripts function hasn't been Initialized" >&2 SERVICE_IS_RUNNING="no" - exit 1 + __script_exit 1 fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # import the functions file @@ -50,8 +62,6 @@ for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.s [ -f "$set_env" ] && . "$set_env" done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #" -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Custom functions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -212,7 +222,7 @@ __run_pre_execute_checks() { if [ $exitStatus -ne 0 ]; then echo "The pre-execution check has failed" >&2 [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE" - exit 1 + __script_exit 1 fi # allow custom functions if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then __run_pre_execute_checks_local; fi @@ -492,7 +502,7 @@ __run_start_script() { __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" retVal=$? echo "Initializing $SCRIPT_NAME has completed" - exit $retVal + __script_exit $retVal else # ensure the command exists if [ ! -x "$cmd" ]; then @@ -526,7 +536,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -549,7 +559,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} @@ -803,4 +813,4 @@ __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" & # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -exit $SERVICE_EXIT_CODE +__script_exit $SERVICE_EXIT_CODE diff --git a/rootfs/usr/local/etc/docker/init.d/09-unbound.sh b/rootfs/usr/local/etc/docker/init.d/09-unbound.sh old mode 100755 new mode 100644 index 31a7420..315af16 --- a/rootfs/usr/local/etc/docker/init.d/09-unbound.sh +++ b/rootfs/usr/local/etc/docker/init.d/09-unbound.sh @@ -31,13 +31,25 @@ export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/s # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_FILE="$0" SERVICE_NAME="unbound" +# Function to exit appropriately based on context +__script_exit() { + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi +} +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # exit if __start_init_scripts function hasn't been Initialized if [ ! -f "/run/__start_init_scripts.pid" ]; then echo "__start_init_scripts function hasn't been Initialized" >&2 SERVICE_IS_RUNNING="no" - exit 1 + __script_exit 1 fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # import the functions file @@ -50,8 +62,6 @@ for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.s [ -f "$set_env" ] && . "$set_env" done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #" -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Custom functions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -208,7 +218,7 @@ __run_pre_execute_checks() { if [ $exitStatus -ne 0 ]; then echo "The pre-execution check has failed" >&2 [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE" - exit 1 + __script_exit 1 fi # allow custom functions if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then __run_pre_execute_checks_local; fi @@ -376,7 +386,7 @@ __run_start_script() { __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" retVal=$? echo "Initializing $SCRIPT_NAME has completed" - exit $retVal + __script_exit $retVal else # ensure the command exists if [ ! -x "$cmd" ]; then @@ -410,7 +420,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -433,7 +443,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} @@ -687,4 +697,4 @@ __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" & # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -exit $SERVICE_EXIT_CODE +__script_exit $SERVICE_EXIT_CODE diff --git a/rootfs/usr/local/etc/docker/init.d/98-privoxy.sh b/rootfs/usr/local/etc/docker/init.d/98-privoxy.sh old mode 100755 new mode 100644 index 9d92a97..f00bfa9 --- a/rootfs/usr/local/etc/docker/init.d/98-privoxy.sh +++ b/rootfs/usr/local/etc/docker/init.d/98-privoxy.sh @@ -31,13 +31,25 @@ export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/s # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_FILE="$0" SERVICE_NAME="privoxy" +# Function to exit appropriately based on context +__script_exit() { + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi +} +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # exit if __start_init_scripts function hasn't been Initialized if [ ! -f "/run/__start_init_scripts.pid" ]; then echo "__start_init_scripts function hasn't been Initialized" >&2 SERVICE_IS_RUNNING="no" - exit 1 + __script_exit 1 fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # import the functions file @@ -50,8 +62,6 @@ for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.s [ -f "$set_env" ] && . "$set_env" done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #" -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Custom functions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -208,7 +218,7 @@ __run_pre_execute_checks() { if [ $exitStatus -ne 0 ]; then echo "The pre-execution check has failed" >&2 [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE" - exit 1 + __script_exit 1 fi # allow custom functions if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then __run_pre_execute_checks_local; fi @@ -376,7 +386,7 @@ __run_start_script() { __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" retVal=$? echo "Initializing $SCRIPT_NAME has completed" - exit $retVal + __script_exit $retVal else # ensure the command exists if [ ! -x "$cmd" ]; then @@ -410,7 +420,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -433,7 +443,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} @@ -687,4 +697,4 @@ __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" & # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -exit $SERVICE_EXIT_CODE +__script_exit $SERVICE_EXIT_CODE diff --git a/rootfs/usr/local/etc/docker/init.d/99-php-fpm.sh b/rootfs/usr/local/etc/docker/init.d/99-php-fpm.sh old mode 100755 new mode 100644 index ed3c1aa..9529251 --- a/rootfs/usr/local/etc/docker/init.d/99-php-fpm.sh +++ b/rootfs/usr/local/etc/docker/init.d/99-php-fpm.sh @@ -28,10 +28,22 @@ trap 'retVal=$?;if [ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_FILE="$0" SERVICE_NAME="php-fpm" +# Function to exit appropriately based on context +__script_exit() { + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi +} +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Exit if service is disabled -[ -z "$PHP_FPM_APPNAME_ENABLED" ] || if [ "$PHP_FPM_APPNAME_ENABLED" != "yes" ]; then export SERVICE_DISABLED="$SERVICE_NAME" && exit 0; fi +[ -z "$PHP_FPM_APPNAME_ENABLED" ] || if [ "$PHP_FPM_APPNAME_ENABLED" != "yes" ]; then export SERVICE_DISABLED="$SERVICE_NAME" && __script_exit 0; fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html [ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ] && export DEBUGGER_OPTIONS="$(<"/config/.debug")" || DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}" @@ -53,7 +65,7 @@ done if [ ! -f "/run/__start_init_scripts.pid" ]; then echo "__start_init_scripts function hasn't been Initialized" >&2 SERVICE_IS_RUNNING="no" - exit 1 + __script_exit 1 fi # Clean up any stale PID file for this service on startup if [ -n "$SERVICE_NAME" ] && [ -f "/run/init.d/$SERVICE_NAME.pid" ]; then @@ -222,7 +234,7 @@ __run_pre_execute_checks() { if [ $exitStatus -ne 0 ]; then echo "The pre-execution check has failed" >&2 [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE" - exit 1 + __script_exit 1 fi # allow custom functions if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then __run_pre_execute_checks_local; fi @@ -390,7 +402,7 @@ __run_start_script() { __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" retVal=$? echo "Initializing $SCRIPT_NAME has completed" - exit $retVal + __script_exit $retVal else # ensure the command exists if [ ! -x "$cmd" ]; then @@ -424,7 +436,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -447,7 +459,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} @@ -699,4 +711,4 @@ fi # start the post execute function in background __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" & # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -exit $SERVICE_EXIT_CODE +__script_exit $SERVICE_EXIT_CODE diff --git a/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh b/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh old mode 100755 new mode 100644 index 39abeff..521523a --- a/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh +++ b/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh @@ -31,13 +31,25 @@ export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/s # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_FILE="$0" SERVICE_NAME="nginx" +# Function to exit appropriately based on context +__script_exit() { + local exit_code="${1:-0}" + if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + # Script is being sourced - use return + return "$exit_code" + else + # Script is being executed - use exit + exit "$exit_code" + fi +} +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # exit if __start_init_scripts function hasn't been Initialized if [ ! -f "/run/__start_init_scripts.pid" ]; then echo "__start_init_scripts function hasn't been Initialized" >&2 SERVICE_IS_RUNNING="no" - exit 1 + __script_exit 1 fi # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # import the functions file @@ -50,8 +62,6 @@ for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.s [ -f "$set_env" ] && . "$set_env" done # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #" -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Custom functions __onion_site_dir_is_empty() { [ "$(ls -A "/data/htdocs/onions/${1:-$onion_site}" 2>/dev/null | wc -l)" -eq 0 ] || return 1; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -224,7 +234,7 @@ __run_pre_execute_checks() { if [ $exitStatus -ne 0 ]; then echo "The pre-execution check has failed" >&2 [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE" - exit 1 + __script_exit 1 fi # allow custom functions if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then __run_pre_execute_checks_local; fi @@ -431,7 +441,7 @@ __run_start_script() { __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" retVal=$? echo "Initializing $SCRIPT_NAME has completed" - exit $retVal + __script_exit $retVal else # ensure the command exists if [ ! -x "$cmd" ]; then @@ -465,7 +475,7 @@ __run_start_script() { if [ ! -f "$START_SCRIPT" ]; then cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} with env @@ -488,7 +498,7 @@ EOF execute_command="$(__trim "$su_exec $cmd_exec")" cat <"$START_SCRIPT" #!/usr/bin/env bash -trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT +trap 'exitCode=\$?;if [ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ]; then rm -Rf "\$SERVICE_PID_FILE"; fi; exit \$exitCode' EXIT # set -Eeo pipefail # Setting up $cmd to run as ${SERVICE_USER:-root} @@ -742,4 +752,4 @@ __post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" & # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -exit $SERVICE_EXIT_CODE +__script_exit $SERVICE_EXIT_CODE