-- Enable single IP enforcement for XRay VLESS protocol -- Adds: -- 1. statsUserOnline for tracking online connections -- 2. RoutingService for dynamic IP blocking -- 3. blocked outbound (blackhole) for dropping unwanted traffic -- 4. vless-in tag on main inbound for targeting rules UPDATE protocols SET install_script = '#!/bin/bash set -eu CONTAINER_NAME="${CONTAINER_NAME:-amnezia-xray}" XRAY_PORT=${SERVER_PORT:-443} docker pull teddysun/xray >/dev/null 2>&1 || true # Use existing keys if provided, otherwise generate new ones if [ -z "${PRIVATE_KEY:-}" ]; then GEN=$(docker run --rm --entrypoint /usr/bin/xray teddysun/xray x25519 2>/dev/null || true) PRIVATE_KEY=$(printf "%s\\n" "$GEN" | sed -n -E "s/^[Pp]rivate[Kk]ey:[[:space:]]*(.*)$/\\1/p" | tr -d " \\t\\r\\n") if [ -z "$PRIVATE_KEY" ]; then PRIVATE_KEY=$(printf "%s\\n" "$GEN" | grep -i "private" | head -1 | sed "s/.*:[[:space:]]*//" | tr -d " \\t\\r\\n") fi fi # Derive public key from private key PUBLIC_KEY=$(docker run --rm --entrypoint /usr/bin/xray teddysun/xray x25519 -i "$PRIVATE_KEY" 2>/dev/null | sed -n -E "s/^[Pp]ublic[[:space:]]*[Kk]ey:[[:space:]]*(.*)$/\\1/p" | tr -d " \\t\\r\\n" || true) if [ -z "$PUBLIC_KEY" ]; then PUBLIC_KEY=$(docker run --rm --entrypoint /usr/bin/xray teddysun/xray x25519 -i "$PRIVATE_KEY" 2>/dev/null | sed -n -E "s/^[Pp]assword:[[:space:]]*(.*)$/\\1/p" | tr -d " \\t\\r\\n" || true) fi # Use existing short_id or generate new one if [ -z "${SHORT_ID:-}" ]; then SHORT_ID=$(od -An -tx1 -N8 /dev/urandom | tr -d " \\n") fi # Use existing client_id or generate new one if [ -z "${CLIENT_ID:-}" ]; then CLIENT_ID=$(cat /proc/sys/kernel/random/uuid) fi SERVER_NAME="${SERVER_NAME:-www.googletagmanager.com}" FINGERPRINT="${FINGERPRINT:-chrome}" SPIDER_X="${SPIDER_X:-/}" docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true mkdir -p /opt/amnezia/xray cat > /opt/amnezia/xray/server.json <