#!/usr/bin/env bash
set -euo pipefail

install_pkg() {
  if command -v dnf >/dev/null 2>&1; then
    dnf install -y --disablerepo=docker-ce-stable "$@" || dnf install -y "$@"
  else
    yum install -y --disablerepo=docker-ce-stable "$@" || yum install -y "$@"
  fi
}

install_pkg nginx nodejs zip unzip

mkdir -p /opt/campus-express-miniapp
mkdir -p /var/lib/campus-express/uploads
mkdir -p /var/www/campus-express-site
mkdir -p /var/www/campus-express-miniapp

if [ ! -f /etc/campus-express-miniapp.env ]; then
  cat >/etc/campus-express-miniapp.env <<'ENV'
CAMPUS_EXPRESS_WECHAT_APP_ID=wxec5a78d7d6156e23
CAMPUS_EXPRESS_WECHAT_APP_SECRET=
CAMPUS_EXPRESS_STRICT_AUTH=0
ENV
  chmod 600 /etc/campus-express-miniapp.env
fi

cat >/etc/systemd/system/campus-express-api.service <<'SERVICE'
[Unit]
Description=Campus Express Miniapp API
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/campus-express-miniapp
Environment=HOST=127.0.0.1
Environment=PORT=3000
Environment=CAMPUS_EXPRESS_DATA_DIR=/var/lib/campus-express
EnvironmentFile=-/etc/campus-express-miniapp.env
ExecStart=/usr/bin/node /opt/campus-express-miniapp/server/index.js
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
SERVICE

if command -v firewall-cmd >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then
  firewall-cmd --permanent --add-service=http
  firewall-cmd --reload
fi

systemctl daemon-reload
systemctl enable nginx
systemctl enable campus-express-api
