#!/usr/bin/env bash
# Installazione dell'Archivio documenti su Ubuntu (22.04 / 24.04).
# Uso:  sudo bash deploy/install.sh     (dalla cartella del progetto)
set -euo pipefail

APP_DIR=/opt/gestionale
DATA_DIR=/srv/gestionale/data
ENV_FILE=/etc/gestionale.env
SRC_DIR="$(cd "$(dirname "$0")/.." && pwd)"

if [[ $EUID -ne 0 ]]; then echo "Esegui lo script con sudo."; exit 1; fi

echo "==> Pacchetti di sistema"
apt-get update -y
apt-get install -y python3 python3-venv nginx rsync

echo "==> Utente di servizio 'gestionale'"
id gestionale &>/dev/null || useradd --system --home /srv/gestionale --shell /usr/sbin/nologin gestionale

echo "==> Copia dell'applicazione in $APP_DIR"
mkdir -p "$APP_DIR"
rsync -a --delete --exclude venv --exclude '__pycache__' "$SRC_DIR/" "$APP_DIR/"
python3 -m venv "$APP_DIR/venv"
"$APP_DIR/venv/bin/pip" install --upgrade pip -q
"$APP_DIR/venv/bin/pip" install -r "$APP_DIR/requirements.txt" -q
chown -R root:root "$APP_DIR"
chmod -R a+rX "$APP_DIR"

echo "==> Cartella dati $DATA_DIR"
mkdir -p "$DATA_DIR"
chown -R gestionale:gestionale /srv/gestionale
chmod 750 /srv/gestionale "$DATA_DIR"

if [[ ! -f "$ENV_FILE" ]]; then
  echo "==> Configurazione $ENV_FILE"
  cat > "$ENV_FILE" <<CONF
GESTIONALE_DATA=$DATA_DIR
GESTIONALE_SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(32))')
GESTIONALE_MAX_UPLOAD_MB=200
# Impostare a 1 dopo aver attivato HTTPS
GESTIONALE_HTTPS=0
CONF
  chmod 640 "$ENV_FILE"
  chown root:gestionale "$ENV_FILE"
fi

echo "==> Database"
sudo -u gestionale env $(grep -v '^#' "$ENV_FILE" | xargs) "$APP_DIR/venv/bin/flask" --app "$APP_DIR/app.py" inizializza

echo "==> Servizio systemd"
cp "$APP_DIR/deploy/gestionale.service" /etc/systemd/system/gestionale.service
systemctl daemon-reload
systemctl enable --now gestionale
systemctl restart gestionale

echo "==> Nginx"
cp "$APP_DIR/deploy/nginx-gestionale.conf" /etc/nginx/sites-available/gestionale
ln -sf /etc/nginx/sites-available/gestionale /etc/nginx/sites-enabled/gestionale
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx

echo
echo "Installazione completata."
echo "Crea il primo amministratore con:"
echo "  sudo -u gestionale env \$(grep -v '^#' $ENV_FILE | xargs) $APP_DIR/venv/bin/flask --app $APP_DIR/app.py crea-utente"
