#!/bin/bash set -e validate_alnum() { local val="$1" local name="$2" case "$val" in *$'\n'*) echo "ERROR: $name contains newlines"; exit 1 ;; esac if ! printf '%s' "$val" | grep -qE '^[a-zA-Z0-9._-]+$'; then echo "ERROR: $name contains invalid characters: $val" exit 1 fi } validate_alnum "$SSH_HOST_IP" "SSH_HOST_IP" validate_alnum "$SHOP_CONTAINER" "SHOP_CONTAINER" if ! echo "$ADMIN_PORT" | grep -qE '^[0-9]+$'; then echo "ERROR: ADMIN_PORT must be a number: $ADMIN_PORT" exit 1 fi if [ "$SSH_HOST_IP" = "host.docker.internal" ]; then if ! getent hosts host.docker.internal >/dev/null 2>&1; then GATEWAY=$(ip route | grep default | awk '{print $3}') if [ -n "$GATEWAY" ]; then SSH_HOST_IP="$GATEWAY" echo "host.docker.internal not resolvable, using gateway: $SSH_HOST_IP" fi fi fi mkdir -p /var/lib/tor/ssh /var/lib/tor/admin chown -R tor:nogroup /var/lib/tor chmod 700 /var/lib/tor /var/lib/tor/ssh /var/lib/tor/admin cat > /etc/tor/torrc <