#!/bin/bash
# setup_cloudflared.sh — 装 cloudflared 并起一个临时隧道（Cloudflare 官方 apt 源）
set -u
echo "=== ① 可达性 ==="
curl -s -o /dev/null -w "  pkg.cloudflare.com → %{http_code} %{time_total}s\n" --max-time 15 https://pkg.cloudflare.com/ || echo "  不可达 ✗"

echo "=== ② 装 cloudflared ==="
if ! command -v cloudflared >/dev/null 2>&1; then
  mkdir -p --mode=0755 /usr/share/keyrings
  curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg -o /usr/share/keyrings/cloudflare-main.gpg || echo "  key 下载失败 ✗"
  echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main" > /etc/apt/sources.list.d/cloudflared.list
  apt-get update -qq
  DEBIAN_FRONTEND=noninteractive apt-get install -y -qq cloudflared
else
  echo "  已安装，跳过"
fi
echo "  版本: $(cloudflared --version 2>&1 | head -1)"

echo "=== ③ 起临时隧道 → 本机 8443 ==="
pkill -f "cloudflared tunnel --url" 2>/dev/null
sleep 1
nohup cloudflared tunnel --url http://127.0.0.1:8443 --no-autoupdate > /tmp/cf_tunnel.log 2>&1 &
sleep 20
echo "===== 公网地址 ====="
grep -oE "https://[a-z0-9-]+\.trycloudflare\.com" /tmp/cf_tunnel.log | head -1
echo "===== 日志尾部 ====="
tail -6 /tmp/cf_tunnel.log
echo "===== 本机监听复查 ====="
curl -s -o /dev/null -w "  127.0.0.1:8443 → %{http_code}\n" --max-time 8 http://127.0.0.1:8443/
