#!/bin/bash
. /usr/share/debconf/confmodule

set -euo pipefail

OWRX_USER="openwebrx"
OWRX_DATADIR="/var/lib/openwebrx"
OWRX_USERS_FILE="${OWRX_DATADIR}/users.json"
OWRX_SETTINGS_FILE="${OWRX_DATADIR}/settings.json"
OWRX_BOOKMARKS_FILE="${OWRX_DATADIR}/bookmarks.json"

case "$1" in
  configure|reconfigure)
    adduser --system --group --no-create-home --home /nonexistent --quiet "${OWRX_USER}"
    usermod -aG plugdev "${OWRX_USER}"

    # create OpenWebRX data directory and set the correct permissions
    if [ ! -d "${OWRX_DATADIR}" ] && [ ! -L "${OWRX_DATADIR}" ]; then mkdir "${OWRX_DATADIR}"; fi
    chown "${OWRX_USER}". ${OWRX_DATADIR}

    # create empty config files now to avoid permission problems later
    if [ ! -e "${OWRX_USERS_FILE}" ]; then
      echo "[]" > "${OWRX_USERS_FILE}"
      chown "${OWRX_USER}". "${OWRX_USERS_FILE}"
      chmod 0600 "${OWRX_USERS_FILE}"
    fi

    if [ ! -e "${OWRX_SETTINGS_FILE}" ]; then
      echo "{}" > "${OWRX_SETTINGS_FILE}"
      chown "${OWRX_USER}". "${OWRX_SETTINGS_FILE}"
    fi

    if [ ! -e "${OWRX_BOOKMARKS_FILE}" ]; then
      touch "${OWRX_BOOKMARKS_FILE}"
      chown "${OWRX_USER}". "${OWRX_BOOKMARKS_FILE}"
    fi

    db_get openwebrx/admin_user_password
    if [ ! -z "${RET}" ]; then
      if ! openwebrx admin --silent hasuser admin; then
        # create initial openwebrx user
        OWRX_PASSWORD="${RET}" openwebrx admin --noninteractive adduser admin
      else
        # change existing user's password
        OWRX_PASSWORD="${RET}" openwebrx admin --noninteractive resetpassword admin
      fi
    fi
    # remove password from debconf database
    db_unregister openwebrx/admin_user_password
    # set a marker that admin is configured to avoid future questions
    db_set openwebrx/admin_user_configured true
  ;;
  *)
    echo "postinst called with unknown argument '$1'" 1>&2
    exit 1
  ;;
esac

#DEBHELPER#