#!/bin/sh
# postinst script for lurker
#

set -e

. /usr/share/debconf/confmodule

# debhelper stuff
#DEBHELPER#

case "$1" in
  configure)
    # create the systemgroup 'lurker'
    # sg lurker -c true 2> /dev/null || addgroup --system lurker
    [ $LURKER_GROUP ] || LURKER_GROUP=lurker
    if ! getent group | grep -q "^$LURKER_GROUP:"; then
      echo -n "Adding group $LURKER_GROUP .."
      addgroup --quiet --system $LURKER_GROUP
      echo "..done"
    fi

    # adjust directory permissions
    if ! dpkg-statoverride --list /var/lib/lurker >/dev/null; then
      chown -R root:$LURKER_GROUP /var/lib/lurker
      chmod u=rwx,g=rwxs,o=rx /var/lib/lurker
    fi

    www_data_files="attach list lurker.docroot mbox message mindex search splash thread zap"
    for f in $www_data_files; do
      chown -R www-data:www-data /var/lib/lurker/www/$f
    done

    # apache2 configuration section
    CONF="lurker"
    COMMON_STATE=$(dpkg-query -f '${Status}' -W 'apache2.2-common' 2>/dev/null | awk '{print $3}' || true)

    if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
      . /usr/share/apache2/apache2-maintscript-helper
      apache2_invoke enmod cgi || exit $?
      apache2_invoke enmod rewrite || exit $?
      apache2_invoke enconf $CONF || exit $?
    elif [ "$COMMON_STATE" = "installed" ] || [ "$COMMON_STATE" = "unpacked" ] ; then
      if [ -d /etc/apache2/conf.d/ -a ! -L /etc/apache2/conf.d/$CONF.conf ]; then
        a2enmod -q cgi || exit $?
        a2enmod -q rewrite || exit $?
        ln -s ../conf-available/$CONF.conf /etc/apache2/conf.d/$CONF.conf
      fi
    fi

    # lurker configuration section

    db_get lurker/archive; archive=$RET
    db_get lurker/admin_name; admin_name=$RET
    db_get lurker/admin_address; admin_address=$RET

    # safely create a temporary file
    tempfile=`tempfile -m 644`

    sed -e "s/^[[:space:]]*archive[[:space:]]*=.*/archive = $archive/" \
    	-e "s/^[[:space:]]*admin_name[[:space:]]*=.*/admin_name    = $admin_name/" \
    	-e "s/^[[:space:]]*admin_address[[:space:]]*=.*/admin_address = $admin_address/" \
    	< /usr/share/lurker/lurker.conf.template > $tempfile
    
    # ucf section
    ucf --debconf-ok --three-way $tempfile /etc/lurker/lurker.conf

    # remove tempfile
    rm -f $tempfile

    # set the lurker system group password
    db_get lurker/group_passwd
    echo "lurker:$RET" | chgpasswd
    RET=""

    db_stop

    # clean web cache
    if [ -x /usr/bin/lurker-prune ] && [ -f /etc/lurker/lurker.conf ] && [ -f /var/lib/lurker/db ]; then
      echo "Pruning the lurker webserver cache."
      su - www-data -s /bin/sh -c "/usr/bin/lurker-prune -p"
    fi
  ;;
  abort-upgrade|abort-remove|abort-deconfigure)

  ;;
  *)
    echo "postinst called with unknown argument \`$1'" >&2
    exit 0
  ;;
esac
