#!/bin/sh set -e PROXYCHAINS_CONFIG_FILE="${PROXYCHAINS_CONFIG_FILE:-/etc/proxychains.conf}" OPENEO_VERIFY_ON_STARTUP="${OPENEO_VERIFY_ON_STARTUP:-1}" disable_proxy_mode() { reason="$1" echo "Proxy support disabled: ${reason}" >&2 ENABLE_PROXYCHAINS=0 export ENABLE_PROXYCHAINS export OPENEO_PROXY_URL="" export OPENEO_VERIFY_ON_STARTUP=0 } proxy_endpoint_reachable() { proxy_host="$1" proxy_port="$2" python - "$proxy_host" "$proxy_port" <<'PY' import socket import sys host = sys.argv[1] port = int(sys.argv[2]) try: with socket.create_connection((host, port), timeout=2): sys.exit(0) except OSError: sys.exit(1) PY } setup_proxychains() { if [ "${ENABLE_PROXYCHAINS}" != "1" ]; then echo "proxychains disabled (ENABLE_PROXYCHAINS=${ENABLE_PROXYCHAINS:-0})" return 0 fi if ! command -v proxychains4 >/dev/null 2>&1; then disable_proxy_mode "proxychains4 is not installed but ENABLE_PROXYCHAINS=1 was set." return 0 fi proxy_type="${PROXYCHAINS_PROXY_TYPE:-socks4}" proxy_host="${PROXYCHAINS_PROXY_HOST:-host.docker.internal}" proxy_port="${PROXYCHAINS_PROXY_PORT:-10808}" chain_mode="${PROXYCHAINS_CHAIN_MODE:-strict_chain}" proxy_ip="$(getent hosts "${proxy_host}" | awk 'NR==1 {print $1}')" if [ -z "${proxy_ip}" ]; then disable_proxy_mode "could not resolve proxy host ${proxy_host}" return 0 fi if ! proxy_endpoint_reachable "${proxy_host}" "${proxy_port}"; then disable_proxy_mode "proxy ${proxy_host}:${proxy_port} is unreachable" return 0 fi cat > "${PROXYCHAINS_CONFIG_FILE}" <&2 fi else echo "Skipping openEO authentication during startup." fi echo "Collecting static files..." run_cmd python manage.py collectstatic --noinput echo "Static files ready." echo "Starting command: $*" if [ "${ENABLE_PROXYCHAINS}" = "1" ]; then exec proxychains4 -f "${PROXYCHAINS_CONFIG_FILE}" "$@" fi exec "$@"