set -e

APP_DIR="/home1/dlfile"
VENV_DIR="$APP_DIR/.venv"
SERVICE_NAME="dl-download-site"

echo "========== 1. 检查目录 =========="
cd "$APP_DIR"
test -f admin_server.py || { echo "错误：admin_server.py 不在 $APP_DIR"; exit 1; }

echo "========== 2. 安装基础环境 =========="
if ! command -v python3 >/dev/null 2>&1; then
    echo "错误：系统没有 python3"
    exit 1
fi

python3 -m venv "$VENV_DIR"
source "$VENV_DIR/bin/activate"
pip install -U pip setuptools wheel

if [ -f "$APP_DIR/requirements.txt" ]; then
    pip install -r "$APP_DIR/requirements.txt"
else
    pip install flask gunicorn
fi

echo "========== 3. 生成 wsgi.py =========="
cat > "$APP_DIR/wsgi.py" <<'EOF'
from admin_server import app
EOF

echo "========== 4. 生成 gunicorn.conf.py =========="
cat > "$APP_DIR/gunicorn.conf.py" <<'EOF'
bind = "127.0.0.1:5000"
workers = 2
threads = 4
timeout = 600
accesslog = "-"
errorlog = "-"
capture_output = True
EOF

echo "========== 5. 生成 systemd 服务 =========="
cat > "/etc/systemd/system/${SERVICE_NAME}.service" <<EOF
[Unit]
Description=dl.100ask.net admin server
After=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=$APP_DIR
Environment=HOST=127.0.0.1
Environment=PORT=5000
Environment=DEBUG=false
ExecStart=$VENV_DIR/bin/gunicorn -c $APP_DIR/gunicorn.conf.py wsgi:app
Restart=always
RestartSec=5
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target
EOF

echo "========== 6. 停掉旧的临时 python 进程（如果有） =========="
pkill -f "python3 admin_server.py" || true
pkill -f "gunicorn.*wsgi:app" || true

echo "========== 7. 启用并启动 systemd 服务 =========="
systemctl daemon-reload
systemctl enable "$SERVICE_NAME"
systemctl restart "$SERVICE_NAME"

echo "========== 8. 查看服务状态 =========="
systemctl status "$SERVICE_NAME" --no-pager

echo "========== 9. 本机自检 =========="
sleep 2
curl -I http://127.0.0.1:5000/login || true

echo "========== 完成 =========="
echo "服务名: $SERVICE_NAME"
echo "启动: systemctl start $SERVICE_NAME"
echo "重启: systemctl restart $SERVICE_NAME"
echo "停止: systemctl stop $SERVICE_NAME"
echo "状态: systemctl status $SERVICE_NAME"
echo "日志: journalctl -u $SERVICE_NAME -f"
