-- Fix X-Ray install script: -- 1) Use single-line docker run (backslash continuations break in MySQL) -- 2) Handle new xray x25519 output format (Password instead of Public key) UPDATE protocols SET install_script = '#!/bin/bash set -euo pipefail CONTAINER_NAME="${CONTAINER_NAME:-amnezia-xray}" XRAY_PORT=${SERVER_PORT:-443} docker pull teddysun/xray >/dev/null 2>&1 || true 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 PUBLIC_KEY=$(printf "%s\n" "$GEN" | sed -n -E "s/^[Pp]ublic[[:space:]]*[Kk]ey:[[:space:]]*(.*)$/\\1/p" | tr -d " \\t\\r\\n") if [ -z "$PUBLIC_KEY" ]; then PUBLIC_KEY=$(printf "%s\n" "$GEN" | sed -n -E "s/^[Pp]assword:[[:space:]]*(.*)$/\\1/p" | tr -d " \\t\\r\\n") fi if [ -z "$PUBLIC_KEY" ] && [ -n "$PRIVATE_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 SHORT_ID=$(od -An -tx1 -N8 /dev/urandom | tr -d " \\n") CLIENT_ID=$(cat /proc/sys/kernel/random/uuid) 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 <