#!/usr/bin/env bash
# 从 /data/wireguard 离线/半离线安装 WireGuard 依赖 + 写入 CN 路由
set -euo pipefail
BASE="${BASE:-/data/wireguard}"
export DEBIAN_FRONTEND=noninteractive

echo "[*] 同步 CN 路由"
bash "$BASE/sync-cn-routes.sh" || true

if command -v apt-get >/dev/null 2>&1; then
  DEB_DIR=$(find "$BASE/debian" -type d -name '*-amd64' 2>/dev/null | head -1)
  if [[ -n "${DEB_DIR:-}" ]] && ls "$DEB_DIR"/*.deb >/dev/null 2>&1; then
    echo "[*] 离线安装 Debian deb: $DEB_DIR"
    dpkg -i "$DEB_DIR"/*.deb 2>/dev/null || apt-get -f install -y -qq || true
    dpkg -i "$DEB_DIR"/wireguard*.deb "$DEB_DIR"/qrencode*.deb 2>/dev/null || true
  else
    echo "[!] 无 deb 缓存，回退在线 apt"
    apt-get update -qq || true
    apt-get install -y -qq wireguard wireguard-tools qrencode iptables iproute2 curl || true
  fi
elif command -v dnf >/dev/null 2>&1 || command -v yum >/dev/null 2>&1; then
  PKG=dnf; command -v dnf >/dev/null 2>&1 || PKG=yum
  echo "[*] RPM 系安装 ($PKG)"
  # 优先本地 rpm（含子目录 kmod-wireguard / wireguard-tools）
  shopt -s nullglob
  LOCAL_RPMS=( "$BASE"/rpm/el*/*.rpm "$BASE"/rpm/el*/wireguard-tools/*.rpm "$BASE"/elrepo/*.rpm "$BASE"/elrepo/kmod-wireguard/*.rpm )
  if [[ ${#LOCAL_RPMS[@]} -gt 0 ]]; then
    $PKG install -y "${LOCAL_RPMS[@]}" 2>/dev/null || \
      rpm -Uvh --force "${LOCAL_RPMS[@]}" 2>/dev/null || true
  fi
  # 补齐
  $PKG install -y epel-release 2>/dev/null || true
  $PKG install -y wireguard-tools qrencode iptables iproute curl 2>/dev/null || true
else
  echo "[ERR] 不支持的包管理器"; exit 1
fi

modprobe wireguard 2>/dev/null || true
if command -v wg >/dev/null 2>&1; then
  echo "[OK] wg 可用: $(wg --version 2>/dev/null | head -1)"
else
  echo "[ERR] wireguard-tools 仍不可用，请检查上面报错"
  exit 1
fi
echo "[OK] 完成。接着可运行: bash /root/wgk.sh"
