#!/usr/bin/env bash
set -uo pipefail

# формат: URL|User-Agent
SOURCES=(
  "https://xskx.artemida.live/KBfeSLF_Nd937mum|v2rayNG/1.8.5"
  "https://zentconnect.ru/sub/VYgQ0XMdt7oaUvbd|sing-box"
  "https://realityvpn.online/api/sub/vE2nXDuhkFNz-1d5UTKFk6nk|sing-box"
)

DIR="/home/computer/sub"
OUT="$DIR/clean.txt"
B64="$DIR/sub.txt"
LOG="$DIR/update.log"
TMP="$(mktemp)"
RAW="$(mktemp)"
trap 'rm -f "$TMP" "$RAW"' EXIT

for src in "${SOURCES[@]}"; do
    url="${src%%|*}"
    ua="${src##*|}"

    curl -sSL --max-time 30 --retry 2 \
      -H "User-Agent: $ua" \
      -H "X-HWID: MikroTik01A7B9C3D5" "$url" > "$RAW" || {
        echo "$(date -Is) curl failed: $url" >> "$LOG"; continue; }

    before=$(wc -l < "$TMP")

    if grep -q 'vless://' "$RAW"; then
        grep -o 'vless://[^[:space:]]*' "$RAW" >> "$TMP"
    else
        python3 -c '
import sys, base64
d = "".join(c for c in sys.stdin.read().strip() if c.isascii())
d = d.replace("-","+").replace("_","/")
d += "=" * (-len(d) % 4)
sys.stdout.write(base64.b64decode(d).decode("utf-8","ignore"))
' < "$RAW" 2>/dev/null | grep -o 'vless://[^[:space:]]*' >> "$TMP"
    fi

    after=$(wc -l < "$TMP")
    echo "$(date -Is) $url -> $((after-before))" >> "$LOG"
done

grep 'security=reality' "$TMP" | sort -u -o "$TMP" || true

if [ ! -s "$TMP" ]; then
    echo "$(date -Is) empty result, keeping old files" >> "$LOG"
    exit 1
fi

mv "$TMP" "$OUT"
base64 -w0 "$OUT" > "$B64"
echo "$(date -Is) ok: $(wc -l < "$OUT") configs" >> "$LOG"
