#!/bin/bash
# dsh-tunnel-server.sh — Termux 端 DSH 健康检查 + 服务端辅助脚本
# 用法: 在 Termux 跑这个, 查看 DSH 状态 + 输出手机 SSH 客户端配置
# 不开端口转发 (转发必须在客户端 ssh -L)
#
# 端口转发后浏览器开 http://localhost:3080

set -e

DSH_PORT=3080
DSH_HOST=127.0.0.1
TERMUX_HOST="192.168.4.50"
SSH_PORT=8022
SSH_USER="u0_a323"
KEY_PATH="$HOME/.ssh/dsh-mobile-tunnel"

echo "╔════════════════════════════════════════════╗"
echo "║   DSH Tunnel Server Health Check           ║"
echo "╚════════════════════════════════════════════╝"
echo ""

# 1. DSH 进程
echo "[1/4] DSH 进程状态:"
if pgrep -af "apps/cli/lib/bin.js web" | grep -v grep > /dev/null; then
  pgrep -af "apps/cli/lib/bin.js web" | grep -v grep | head -1 | awk '{print "  ✅ PID " $1 " — " $0}'
else
  echo "  ❌ DSH 未运行"
  exit 1
fi
echo ""

# 2. DSH HTTP
echo "[2/4] DSH HTTP 健康:"
DSH_HTTP=$(timeout 5 curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 "http://${DSH_HOST}:${DSH_PORT}/" 2>&1)
if [ "$DSH_HTTP" = "200" ]; then
  echo "  ✅ http://${DSH_HOST}:${DSH_PORT}/ → HTTP 200"
else
  echo "  ❌ DSH HTTP $DSH_HTTP"
  exit 1
fi
echo ""

# 3. settings.describe (loopback 验证)
echo "[3/4] settings.describe (loopback 应该 200):"
SETTINGS_RESP=$(timeout 5 curl -s -X POST "http://${DSH_HOST}:${DSH_PORT}/api/settings.describe" \
  -H "Content-Type: application/json" \
  -d '{"type":"client-request","rpcId":"t","method":"settings.describe","payload":{}}' 2>&1)
SETTINGS_OK=$(echo "$SETTINGS_RESP" | python3 -c "import json,sys; print(json.loads(sys.stdin.read())['result']['ok'])" 2>/dev/null || echo "false")
if [ "$SETTINGS_OK" = "True" ]; then
  NS_COUNT=$(echo "$SETTINGS_RESP" | python3 -c "import json,sys; print(len(json.loads(sys.stdin.read())['result']['value']['namespaces']))")
  echo "  ✅ settings.describe → ok=True, namespaces=$NS_COUNT"
else
  echo "  ❌ settings.describe 失败"
  echo "  raw: $SETTINGS_RESP" | head -c 200
fi
echo ""

# 4. SSH key
echo "[4/4] SSH key 状态:"
if [ -f "$KEY_PATH" ] && [ -f "${KEY_PATH}.pub" ]; then
  echo "  ✅ Private key: $KEY_PATH"
  echo "  ✅ Public key:  ${KEY_PATH}.pub"
  PUBKEY=$(cat "${KEY_PATH}.pub" | awk '{print $2}')
  if grep -q "$PUBKEY" "$HOME/.ssh/authorized_keys" 2>/dev/null; then
    echo "  ✅ Public key 已在 authorized_keys"
  else
    echo "  ⚠️  Public key 未在 authorized_keys, 手机连不上"
  fi
else
  echo "  ❌ SSH key 不存在, 跑 ssh-keygen 生成"
  exit 1
fi
echo ""

echo "════════════════════════════════════════════"
echo "  📱 手机 SSH 客户端配置:"
echo ""
echo "  Host:     $TERMUX_HOST"
echo "  Port:     $SSH_PORT"
echo "  User:     $SSH_USER"
echo "  Identity: ~/.ssh/dsh-mobile-tunnel (手机上)"
echo ""
echo "  端口转发 (在 SSH 客户端配置里加):"
echo "    Local port:    3080"
echo "    Remote host:   127.0.0.1"
echo "    Remote port:   3080"
echo ""
echo "  手机浏览器开: http://localhost:3080"
echo "════════════════════════════════════════════"