#!/bin/bash
set -e

# ============================================================
# noVNC 一键安装脚本
# 安装 TigerVnc + noVNC + websockify + XFCE4 桌面
# 配置 xstartup + index.html 软链
# ============================================================

echo "========== noVNC 一键安装 =========="
echo ""

# ---------- 0. 系统检查 ----------
echo "[0/5] 系统环境检查..."
if ! command -v apt-get &>/dev/null; then
    echo "❌ 非 Debian/Ubuntu 系统，退出"
    exit 1
fi
ARCH=$(uname -m)
echo "  架构: $ARCH"
if [ "$ARCH" != "x86_64" ] && [ "$ARCH" != "aarch64" ]; then
    echo "  ⚠️ 非常见架构，可能需要适配"
fi

# ---------- 1. 安装依赖包 ----------
echo ""
echo "[1/5] 安装依赖包（apt）..."
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -qq \
    tigervnc-standalone-server \
    tigervnc-common \
    novnc \
    python3-websockify \
    websockify \
    xfce4 \
    xfce4-terminal \
    xterm \
    dbus-x11 \
    locales \
    fonts-noto-cjk \
    2>&1 | tail -5
echo "  ✅ 依赖安装完成"

# ---------- 2. 生成中文 locale ----------
echo ""
echo "[2/5] 生成中文 locale..."
sed -i 's/^# *\(zh_CN.UTF-8\)/\1/' /etc/locale.gen 2>/dev/null || true
locale-gen zh_CN.UTF-8 2>/dev/null || true
echo "  ✅ locale 配置完成"

# ---------- 3. 配置 xstartup ----------
echo ""
echo "[3/5] 配置 VNC xstartup..."
mkdir -p /root/.vnc
cat > /root/.vnc/xstartup << 'XSTARTUP'
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:zh
export LC_ALL=zh_CN.UTF-8
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
exec startxfce4
XSTARTUP
chmod +x /root/.vnc/xstartup
echo "  ✅ xstartup 已写入 (/root/.vnc/xstartup)"

# ---------- 4. 建立 index.html 软链 ----------
echo ""
echo "[4/5] 建立 index.html → vnc.html 软链（关键！）..."
NOVNC_WEB_DIR="/usr/share/novnc"
if [ -d "$NOVNC_WEB_DIR" ]; then
    cd "$NOVNC_WEB_DIR"
    if [ ! -e index.html ]; then
        ln -sf vnc.html index.html
        echo "  ✅ 软链已建立: $NOVNC_WEB_DIR/index.html → vnc.html"
    else
        echo "  ⏭️ index.html 已存在，跳过"
    fi
else
    echo "  ❌ $NOVNC_WEB_DIR 不存在，novnc 可能未正确安装"
    exit 1
fi

# ---------- 5. 提示设置密码 ----------
echo ""
echo "[5/5] 检查 VNC 密码..."
if [ -f /root/.vnc/passwd ]; then
    echo "  ✅ 密码文件已存在 (/root/.vnc/passwd)"
    echo "  如需修改密码，运行: vncpasswd"
else
    echo ""
    echo "  ⚠️  尚未设置 VNC 密码！"
    echo "  请手动运行以下命令设置密码（6-8 位）："
    echo ""
    echo "      vncpasswd"
    echo ""
    echo "  设置完成后，继续执行 start-novnc.sh 启动服务。"
fi

echo ""
echo "========== 安装完成 =========="
echo ""
echo "下一步："
echo "  1. 设置密码（如未设置）：vncpasswd"
echo "  2. 启动服务：./start-novnc.sh"
echo "  3. 暴露公网：./expose-novnc.sh"
echo ""
