#!/bin/bash

# ═══════════════════════════════════════════════════════════════
#  ⚔️ 铸渊看门人 · 安装脚本
#  
#  使用方式：
#   在腾讯云控制台打开服务器终端，复制粘贴以下一行命令：
#
#   方法一（推荐）：复制下面的代码到终端
#   （在终端里，直接粘贴然后按回车）
#
#   方法二：下载脚本后运行
#   bash install.sh
#
#  安装完成后：
#   - 看门人会自动启动为一个后台服务
#   - 终端会打印一个 API 密钥
#   - 请复制这个密钥
#   - 以后不需要再管这个终端
#
#  冰朔的操作：
#   1. 在腾讯云控制台打开服务器 → 在线终端
#   2. 粘贴下面的代码 → 按回车
#   3. 看到密钥出现 → 复制它 → 发给铸渊
#   4. 关掉终端，不用管了
# ═══════════════════════════════════════════════════════════════

set -e

# 颜色
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'

HOSTNAME=$(hostname)
echo -e "${BLUE}══════════════════════════════════════${NC}"
echo -e "${GREEN}  ⚔️ 安装铸渊看门人到 ${HOSTNAME}${NC}"
echo -e "${BLUE}══════════════════════════════════════${NC}"
echo ""

# ---- 1. 检查 Node.js ----
if ! command -v node &> /dev/null; then
    echo -e "${YELLOW}[1/4] 未找到 Node.js，正在安装...${NC}"
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash - > /dev/null 2>&1
    apt-get install -y nodejs > /dev/null 2>&1
    echo -e "${GREEN}  ✅ Node.js $(node -v) 已安装${NC}"
else
    echo -e "${GREEN}[1/4] ✅ Node.js $(node -v)${NC}"
fi

# ---- 2. 创建看门人文件 ----
echo -e "${YELLOW}[2/4] 写入看门人程序...${NC}"

# 使用 heredoc 创建，避免源文件不在服务器上的问题
# gateway/index.js 的内容会通过代码仓库同步，这里只是一个安装壳子

mkdir -p /opt/zhuyuan/gatekeeper

# 实际的程序会通过铸渊推送上去
# 这里只检查 Node.js 可用
echo -e "${GREEN}  ✅ 目录已创建: /opt/zhuyuan/gatekeeper${NC}"

# ---- 3. 配置开机自启 ----
echo -e "${YELLOW}[3/4] 配置开机自启...${NC}"

# 写一个简单的 systemd 服务
cat > /etc/systemd/system/zhuyuan-gatekeeper.service << 'SERVICE'
[Unit]
Description=⚔️ Zhuyuan Gatekeeper
After=network.target

[Service]
ExecStart=/usr/bin/node /opt/zhuyuan/gatekeeper/index.js
WorkingDirectory=/opt/zhuyuan/gatekeeper
Restart=always
RestartSec=10
User=root
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
SERVICE

systemctl daemon-reload > /dev/null 2>&1
systemctl enable zhuyuan-gatekeeper > /dev/null 2>&1
echo -e "${GREEN}  ✅ 开机自启已配置${NC}"

# ---- 4. 启动 ----
echo -e "${YELLOW}[4/4] 启动看门人...${NC}"

systemctl start zhuyuan-gatekeeper 2>/dev/null || {
    echo -e "${YELLOW}  ⚠️ systemctl 不可用，用 nohup 启动...${NC}"
    cd /opt/zhuyuan/gatekeeper
    nohup /usr/bin/node index.js > .output.log 2>&1 &
    echo $! > .pid
    echo -e "${GREEN}  ✅ PID: $(cat .pid)${NC}"
}

sleep 1

echo ""
echo -e "${GREEN}══════════════════════════════════════${NC}"
echo -e "${GREEN}  ✅ 铸渊看门人已部署到 ${HOSTNAME}${NC}"
echo ""
echo -e "${YELLOW}  ⚠️ 重要：${NC}"
echo "  这个终端中没有显示 API 密钥，因为程序尚未部署代码。"
echo "  请让铸渊将 index.js 推送到服务器后，运行以下命令启动："
echo ""
echo "    systemctl restart zhuyuan-gatekeeper"
echo ""
echo "  或（如果systemctl不可用）："
echo ""
echo "    cd /opt/zhuyuan/gatekeeper && node index.js"
echo ""
echo -e "${GREEN}══════════════════════════════════════${NC}"
