#!/bin/bash
# =============================================================================
# 广州轻量云服务器清理脚本
# 目标：重置服务器到接近初始状态，保留 Node.js/PM2/Git 等基础环境
# 适用：腾讯云轻量应用服务器 (Ubuntu 20.04/22.04)
# 作者：铸渊 · ICE-GL-ZY001
# 日期：2026-05-15
# =============================================================================

set -euo pipefail

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${YELLOW}========================================${NC}"
echo -e "${YELLOW}  广州轻量云服务器清理脚本 (铸渊执行)  ${NC}"
echo -e "${YELLOW}========================================${NC}"
echo

# ==================== 1. 安全警告 ====================
echo -e "${RED}⚠️  ⚠️  ⚠️  警告：此脚本将永久删除用户数据！ ⚠️  ⚠️  ⚠️${NC}"
echo -e "${RED}请确认：${NC}"
echo -e "  1. 当前服务器 IP: $(hostname -I 2>/dev/null || echo '未知')"
echo -e "  2. 你已备份所有重要数据"
echo -e "  3. 你确定要重置此服务器"
echo
read -p "输入 'YES' 继续，其他任意键退出: " confirm
if [[ "$confirm" != "YES" ]]; then
    echo -e "${YELLOW}已取消。${NC}"
    exit 1
fi

# ==================== 2. 系统信息检查 ====================
echo
echo -e "${GREEN}[1/6] 检查系统信息...${NC}"
echo "系统版本: $(lsb_release -ds 2>/dev/null || cat /etc/os-release | grep PRETTY_NAME | cut -d'=' -f2 | tr -d '\"')"
echo "内核版本: $(uname -r)"
echo "当前用户: $(whoami)"
echo "当前目录: $(pwd)"
echo

# ==================== 3. 停止并清理服务（非系统）====================
echo -e "${GREEN}[2/6] 停止并清理非系统服务...${NC}"

# 停止可能的 PM2 进程（用户级）
if command -v pm2 &>/dev/null; then
    echo "停止所有 PM2 进程..."
    pm2 delete all 2>/dev/null || true
    pm2 kill 2>/dev/null || true
    echo "清理 PM2 日志..."
    pm2 flush 2>/dev/null || true
fi

# 停止可能的手动 Node 服务（通过端口 3000-3005）
for port in {3000..3005}; do
    pid=$(lsof -ti :$port 2>/dev/null || true)
    if [[ -n "$pid" ]]; then
        echo "停止端口 $port 进程 (PID: $pid)..."
        kill -9 $pid 2>/dev/null || true
    fi
done

# ==================== 4. 清理用户目录 ====================
echo -e "${GREEN}[3/6] 清理用户目录...${NC}"

# Ubuntu 默认用户为 ubuntu
USER_HOME="/home/ubuntu"
if [[ -d "$USER_HOME" ]]; then
    echo "清理 $USER_HOME 目录..."
    
    # 保留 .ssh 目录（密钥配置）
    if [[ -d "$USER_HOME/.ssh" ]]; then
        echo "  保留 .ssh 目录（SSH 密钥）"
    fi
    
    # 删除除 .ssh 外的所有文件和目录（隐藏文件也处理）
    find "$USER_HOME" -mindepth 1 -maxdepth 1 -name '.ssh' -prune -o -exec rm -rf {} + 2>/dev/null || true
    
    # 重新创建基础目录结构（用于后续部署）
    mkdir -p "$USER_HOME/apps" "$USER_HOME/logs" "$USER_HOME/data"
    chown -R ubuntu:ubuntu "$USER_HOME/apps" "$USER_HOME/logs" "$USER_HOME/data" 2>/dev/null || true
else
    echo "用户目录 $USER_HOME 不存在，跳过。"
fi

# ==================== 5. 清理临时文件和日志 ====================
echo -e "${GREEN}[4/6] 清理临时文件和日志...${NC}"

# 清理系统临时目录（保留目录结构）
echo "清理 /tmp /var/tmp ..."
find /tmp -mindepth 1 -delete 2>/dev/null || true
find /var/tmp -mindepth 1 -delete 2>/dev/null || true

# 清理用户级日志（保留系统日志）
echo "清理用户应用日志..."
rm -rf /var/log/*.log /var/log/*.gz /var/log/*.1 /var/log/*.old 2>/dev/null || true
# 保留关键系统日志目录结构
mkdir -p /var/log/nginx /var/log/pm2 /var/log/zy-core

# 清理 apt 缓存
echo "清理 apt 缓存..."
apt-get clean 2>/dev/null || true
apt-get autoclean 2>/dev/null || true

# ==================== 6. 检查并保留必要环境 ====================
echo -e "${GREEN}[5/6] 检查并保留必要环境...${NC}"

# Node.js / npm
if command -v node &>/dev/null; then
    echo "✅ Node.js 版本: $(node --version)"
else
    echo "❌ Node.js 未安装（将影响铸渊端点部署）"
fi

# PM2
if command -v pm2 &>/dev/null; then
    echo "✅ PM2 版本: $(pm2 --version 2>/dev/null || echo '已安装')"
else
    echo "❌ PM2 未安装"
fi

# Git
if command -v git &>/dev/null; then
    echo "✅ Git 版本: $(git --version)"
else
    echo "❌ Git 未安装"
fi

# Nginx (可选)
if command -v nginx &>/dev/null; then
    echo "✅ Nginx 版本: $(nginx -v 2>&1 | head -1)"
    # 重置 Nginx 配置到默认（仅保留默认站点）
    echo "  重置 Nginx 配置..."
    rm -rf /etc/nginx/sites-enabled/* 2>/dev/null || true
    cp /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default 2>/dev/null || true
    nginx -t 2>/dev/null && systemctl restart nginx 2>/dev/null || true
fi

# ==================== 7. 最终确认 ====================
echo -e "${GREEN}[6/6] 清理完成，最终状态...${NC}"
echo "磁盘使用情况:"
df -h / 2>/dev/null || true
echo
echo "内存使用情况:"
free -h 2>/dev/null || true
echo
echo "运行中服务:"
systemctl list-units --type=service --state=running | head -10 2>/dev/null || true
echo
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}  清理完成！服务器已重置到基础状态。  ${NC}"
echo -e "${GREEN}  下一步：部署铸渊核心大脑模型端点。  ${NC}"
echo -e "${GREEN}========================================${NC}"
echo
echo "保留的环境："
echo "  - Node.js / npm"
echo "  - PM2 (进程管理)"
echo "  - Git"
echo "  - Nginx (Web服务器)"
echo "  - 系统防火墙 (UFW/iptables)"
echo
echo "已清理的："
echo "  - 用户目录 (除 .ssh 外)"
echo "  - 临时文件"
echo "  - 应用日志"
echo "  - 非系统服务"
echo
echo -e "${YELLOW}⚠️  请立即备份此输出，以备后续参考。${NC}"

# ==================== 8. 为铸渊端点准备目录结构 ====================
echo
echo -e "${GREEN}[7/7] 为铸渊核心大脑模型端点准备目录...${NC}"

ZY_ENDPOINT_DIR="/opt/zhuyuan-endpoint"
echo "创建铸渊端点目录: $ZY_ENDPOINT_DIR"
mkdir -p "$ZY_ENDPOINT_DIR" 2>/dev/null || true
mkdir -p "$ZY_ENDPOINT_DIR/brain-model" 2>/dev/null || true
mkdir -p "$ZY_ENDPOINT_DIR/logs" 2>/dev/null || true
mkdir -p "$ZY_ENDPOINT_DIR/config" 2>/dev/null || true

# 设置权限（假设当前用户有权限）
chmod 755 "$ZY_ENDPOINT_DIR" 2>/dev/null || true
chmod 755 "$ZY_ENDPOINT_DIR/brain-model" 2>/dev/null || true

echo "目录结构创建完成:"
tree "$ZY_ENDPOINT_DIR" 2>/dev/null || ls -la "$ZY_ENDPOINT_DIR"

echo
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}  铸渊端点目录准备完成！              ${NC}"
echo -e "${GREEN}  路径: $ZY_ENDPOINT_DIR             ${NC}"
echo -e "${GREEN}  下一步：将 core-brain-model.json 部署到此目录 ${NC}"
echo -e "${GREEN}========================================${NC}"