#! /bin/bash

function start_misc
{
  _notify 'inf' 'Starting miscellaneous tasks'
  for FUNC in "${FUNCS_MISC[@]}"
  do
    ${FUNC}
  done
}

# consolidate all states into a single directory
# (/var/mail-state) to allow persistence using docker volumes
function _misc_save_states
{
  local STATEDIR FILE FILES

  STATEDIR='/var/mail-state'

  if [[ ${ONE_DIR} -eq 1 ]] && [[ -d ${STATEDIR} ]]
  then
    _notify 'inf' "Consolidating all state onto ${STATEDIR}"

    FILES=(
      spool/postfix
      lib/postfix
      lib/amavis
      lib/clamav
      lib/spamassassin
      lib/fail2ban
      lib/postgrey
      lib/dovecot
    )

    for FILE in "${FILES[@]}"
    do
      DEST="${STATEDIR}/${FILE//\//-}"
      FILE="/var/${FILE}"

      if [[ -d ${DEST} ]]
      then
        _notify 'inf' "Destination ${DEST} exists, linking ${FILE} to it"
        rm -rf "${FILE}"
        ln -s "${DEST}" "${FILE}"
      elif [[ -d ${FILE} ]]
      then
        _notify 'inf' "Moving contents of ${FILE} to ${DEST}:" "$(ls "${FILE}")"
        mv "${FILE}" "${DEST}"
        ln -s "${DEST}" "${FILE}"
      else
        _notify 'inf' "Linking ${FILE} to ${DEST}"
        mkdir -p "${DEST}"
        ln -s "${DEST}" "${FILE}"
      fi
    done

    _notify 'inf' 'Fixing /var/mail-state/* permissions'
    chown -R clamav /var/mail-state/lib-clamav
    chown -R postfix /var/mail-state/lib-postfix
    chown -R postgrey /var/mail-state/lib-postgrey
    chown -R debian-spamd /var/mail-state/lib-spamassassin
    chown -R postfix /var/mail-state/spool-postfix
  fi
}