############################################
# PREINST  (POSIX /bin/sh)
############################################
#!/bin/sh
set -e

SERVICE="vpnclient.service"

log() {
  # dpkg capture stdout/stderr, et on log aussi dans syslog/journal si possible
  echo "PREINST: $*"
  if command -v logger >/dev/null 2>&1; then
    logger -t vpnclient-installer "PREINST: $*"
  fi
}

is_systemd() {
  command -v systemctl >/dev/null 2>&1 && [ -d /run/systemd/system ]
}

svc_stop() {
  if is_systemd; then
    if command -v deb-systemd-invoke >/dev/null 2>&1; then
      deb-systemd-invoke stop "$SERVICE" >/dev/null 2>&1 || true
    else
      systemctl stop "$SERVICE" >/dev/null 2>&1 || true
    fi
  fi
}

kill_leftovers() {
  # best effort (évite verrou sqlite / fichiers ouverts)
  killall -q vpnclient-ui 2>/dev/null || true
  pkill -f vpnclient-ui 2>/dev/null || true
  killall -q vpnclient-daemon 2>/dev/null || true
  pkill -f vpnclient-daemon 2>/dev/null || true
}

backup_sqlite() {
  BACKUP_DIR="/var/lib/nacxwan/VpnClient/.upgrade-backup"
  BACKUP_DB="$BACKUP_DIR/vpnclient_data.db"

  rm -rf "$BACKUP_DIR" 2>/dev/null || true
  mkdir -p "$BACKUP_DIR" 2>/dev/null || true

  for CAND in \
    "/var/lib/nacxwan/VpnClient/vpnclient_data.db" \
    "/usr/local/nacxwan/vpnclient/vpnclient_data.db" \
    "/usr/share/nacxwan/vpnclient/vpnclient_data.db"
  do
    if [ -f "$CAND" ]; then
      log "backup DB depuis $CAND (+wal/+shm)"
      for EXT in "" "-wal" "-shm"; do
        if [ -f "${CAND}${EXT}" ]; then
          cp -f "${CAND}${EXT}" "${BACKUP_DB}${EXT}" 2>/dev/null || true
        fi
      done
      return 0
    fi
  done
  return 0
}

log "$1 ${2:-}"

case "$1" in
  upgrade)
    svc_stop
    kill_leftovers
    backup_sqlite
    ;;

  install)
    # première install : stop best-effort si un vieux process traîne
    svc_stop
    kill_leftovers
    ;;

  abort-upgrade|abort-install|abort-remove|deconfigure|triggered)
    ;;
esac

exit 0
