#!/usr/bin/env bash
# ============================================================
# Komari 手动指定架构部署脚本 (Linux)
# 用法: bash <(curl -s http://8.134.130.124/komari/linux-deploy.sh) <包名>
# 示例: bash <(curl -s http://8.134.130.124/komari/linux-deploy.sh) komari-linux-amd64
# ============================================================
set -euo pipefail

MIRROR="http://8.134.130.124/komari"
PACKAGE="${1:-}"
INSTALL_DIR="/opt/komari"
SERVICE_FILE="/etc/systemd/system/komari.service"
LISTEN_ADDR="0.0.0.0:25774"

RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
info()  { echo -e "${CYAN}[INFO]${NC} $*"; }
ok()    { echo -e "${GREEN}[OK]${NC} $*"; }
warn()  { echo -e "${YELLOW}[WARN]${NC} $*"; }
err()   { echo -e "${RED}[ERR]${NC} $*" >&2; exit 1; }

if [ -z "$PACKAGE" ] || [ "$PACKAGE" = "-h" ] || [ "$PACKAGE" = "--help" ]; then
    echo "Komari 手动部署脚本 (Linux)"
    echo ""
    echo "用法: bash $0 <包名>"
    echo ""
    echo "Server 包名:"
    echo "  komari-linux-amd64       x86_64"
    echo "  komari-linux-arm64       ARM64"
    echo "  komari-linux-386         x86 32-bit"
    echo "  komari-linux-loong64     LoongArch"
    echo "  komari-linux-riscv64     RISC-V"
    echo ""
    echo "Agent 包名:"
    echo "  komari-agent-linux-amd64   x86_64"
    echo "  komari-agent-linux-arm64   ARM64"
    echo "  komari-agent-linux-386     x86 32-bit"
    echo "  komari-agent-linux-arm     ARMv7"
    echo ""
    echo "示例:"
    echo "  bash $0 komari-linux-amd64"
    exit 0
fi

[ "$(id -u)" -eq 0 ] || err "需要 root 权限"

info "下载: $PACKAGE"
curl -#fSL "$MIRROR/$PACKAGE" -o "/tmp/$PACKAGE" || err "下载失败"

info "校验 SHA256..."
CHECKSUMS=$(curl -sS "$MIRROR/checksums.txt" 2>/dev/null || true)
EXPECTED=$(echo "$CHECKSUMS" | grep " $PACKAGE\$" | awk '{print $1}')
if [ -n "$EXPECTED" ]; then
    ACTUAL=$(sha256sum "/tmp/$PACKAGE" | awk '{print $1}')
    [ "$EXPECTED" = "$ACTUAL" ] || err "SHA256 不匹配\n  期望: $EXPECTED\n  实际: $ACTUAL"
    ok "SHA256 校验通过"
else
    warn "未找到 $PACKAGE 的校验值，跳过"
fi

case "$PACKAGE" in
    komari-linux-*)
        info "安装 Server 到 $INSTALL_DIR"
        mkdir -p "$INSTALL_DIR/data"
        cp "/tmp/$PACKAGE" "$INSTALL_DIR/komari"
        chmod +x "$INSTALL_DIR/komari"

        info "配置 systemd 服务..."
        cat > "$SERVICE_FILE" << EOF
[Unit]
Description=Komari Monitor
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=$INSTALL_DIR
ExecStart=$INSTALL_DIR/komari server -l $LISTEN_ADDR
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF
        systemctl daemon-reload
        systemctl enable komari.service
        systemctl restart komari.service
        sleep 2
        ok "Server 已启动"
        echo ""
        echo "  Web 面板: http://0.0.0.0:$LISTEN_ADDR"
        echo "  用户名:   admin"
        echo "  密码:     Admin123456"
        echo ""
        ;;
    komari-agent-linux-*)
        info "安装 Agent"
        cp "/tmp/$PACKAGE" /usr/local/bin/komari-agent
        chmod +x /usr/local/bin/komari-agent
        ok "Agent 已安装到 /usr/local/bin/komari-agent"
        echo "  启动: komari-agent --server http://<SERVER_IP>:25774"
        ;;
    *)
        err "不支持的包名: $PACKAGE"
        ;;
esac

rm -f "/tmp/$PACKAGE"
ok "部署完成"
