Files
jiedian/scripts/verify-reality.sh
T
dekun 1fc3b8a89c fix: improve VLESS link compatibility and add Reality repair script
Only encode SNI dots, keep pbk/sid raw, copy links via API, prefer xray keygen, and add repair-reality.sh for server-side fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 23:58:14 +08:00

72 lines
2.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 核对 Reality 密钥是否一致,并验证 Xray 配置
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="${ROOT}/.env"
XRAY_CFG="/usr/local/etc/xray/config.json"
SB_CFG="/etc/sing-box/config.json"
[[ -f "$ENV_FILE" ]] || { echo "缺少 $ENV_FILE"; exit 1; }
# shellcheck disable=SC1090
source "$ENV_FILE"
echo "========== .env =========="
grep ^REALITY_ "$ENV_FILE" | grep -v PRIVATE || true
echo "REALITY_PRIVATE_KEY=***(已隐藏)"
if command -v xray &>/dev/null && [[ -f "$XRAY_CFG" ]]; then
echo ""
echo "========== Xray config.json =========="
ENV_FILE="$ENV_FILE" XRAY_CFG="$XRAY_CFG" python3 - <<'PY'
import json, os
from pathlib import Path
env = {}
for line in Path(os.environ["ENV_FILE"]).read_text().splitlines():
line = line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
k, _, v = line.partition("=")
env[k.strip()] = v.strip()
cfg = json.load(open(os.environ["XRAY_CFG"]))
rs = cfg["inbounds"][0]["streamSettings"]["realitySettings"]
pk = rs["privateKey"]
print("privateKey:", pk[:8] + "..." if pk else "(empty)")
print("shortIds:", rs.get("shortIds"))
print("serverNames:", rs.get("serverNames"))
print("clients:", len(cfg["inbounds"][0]["settings"]["clients"]))
match = pk == env.get("REALITY_PRIVATE_KEY", "")
print("privateKey 与 .env 一致:", "是" if match else "否 ← 需运行 render-xray.py")
PY
echo ""
echo "========== xray -test =========="
xray run -test -c "$XRAY_CFG"
else
echo ""
echo "Xray 未安装或配置不存在。VLESS Reality 需 Xray"
echo " bash -c \"\$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)\" @ install"
echo " python3 ${ROOT}/scripts/render-xray.py"
fi
if [[ -f "$SB_CFG" ]] && grep -q vless-reality "$SB_CFG" 2>/dev/null; then
echo ""
echo "[!] sing-box 仍含 vless-reality inbound,会与 Xray 争抢 443。"
echo " 请运行: python3 ${ROOT}/scripts/render-server.py && systemctl restart sing-box"
fi
if command -v xray &>/dev/null && [[ -n "${REALITY_PRIVATE_KEY:-}" ]]; then
echo ""
echo "========== 公钥配对 =========="
DERIVED="$(xray x25519 -i "$REALITY_PRIVATE_KEY" 2>/dev/null | awk '/Public key/ {print $3; exit} /Password/ {print $3; exit}')"
if [[ -n "$DERIVED" ]]; then
if [[ "$DERIVED" == "${REALITY_PUBLIC_KEY:-}" ]]; then
echo "公钥与私钥配对: 是"
else
echo "公钥与私钥配对: 否"
echo " .env PUBLIC: ${REALITY_PUBLIC_KEY:-}"
echo " 推导 PUBLIC: $DERIVED"
echo " 请重新运行 generate-keys.sh 并 render-xray.py"
fi
fi
fi