#!/bin/bash
# postinst script for lx-office-erp-svn
#
# see: dh_installdeb(1)

# e = exit on error
set -e
# x = xtrace
#set -x

debugfile=$(mktemp /tmp/lx-erp.log.XXXXXX)
echo " ! "`date`" Postinst $1 !" >> $debugfile

source /usr/share/debconf/confmodule

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


config_postgresql_factory_script() {

  echo "Starting factory postgresql config script: scripts/inst_postgres_deb.sh.."
  cd /usr/lib/lx-office-erp/
  ./scripts/inst_postgres_deb.sh
  echo "Factory postgresql config script done."
}


set_lx_office_erp_web_admin_password() {
  db_get lx-office-erp/admin-password
  ADMINPASSWORD="$RET"

  sed --in-place --expression "s/^admin_password.*=.*/admin_password = $ADMINPASSWORD/" /etc/lx-office-erp/lx_office.conf
}


set_lx_office_erp_authentication_db_user_password() {
  db_get lx-office-erp/lx-office-erp-user-postgresql-password
  PASSWORD="$RET"

  sed --in-place --expression "s/^password.*=.*/password = $PASSWORD/" /etc/lx-office-erp/lx_office.conf
  sed --in-place --expression "s/^user.*=.*postgres/user = lxoffice/g" /etc/lx-office-erp/lx_office.conf
}


set_user_rights() {
  chown -R www-data:www-data /usr/lib/lx-office-erp/users
  chown -R www-data:www-data /usr/lib/lx-office-erp/templates
  chown www-data:www-data /etc/lx-office-erp/lx_office.conf
  chown www-data:www-data /usr/lib/lx-office-erp/menu.ini
  chmod 0600 /etc/lx-office-erp/lx_office.conf
}

mk_new_menu() {
  if [ -e /usr/lib/lx-office-crm ] ; then
        #crm vorhanden, dann die menu.ini mit der höchsten VersNr nehmen
    for i in `ls -1 /usr/lib/lx-office-crm/update/menu*ini` ; do
      cat $i > /usr/lib/lx-office-erp/menu.ini
    done;
    cat /usr/lib/lx-office-erp/menu.default >> /usr/lib/lx-office-erp/menu.ini
  else
    cp /usr/lib/lx-office-erp/menu.default /usr/lib/lx-office-erp/menu.ini
  fi
}

mk_new_config() {
  if ! [ -f /etc/lx-office-erp/lx_office.conf ] ; then
    cp /etc/lx-office-erp/lx_office.conf.default /etc/lx-office-erp/lx_office.conf
  fi
}

mk_links() {
  for file in lx_office.conf lx_office.conf.default ; do
    test -f /usr/lib/lx-office-erp/config/${file} || ln -s /etc/lx-office-erp/${file} /usr/lib/lx-office-erp/config/${file}
  done
  for file in lx-erp.conf authentication.pl ; do
    if [ -f /usr/lib/lx-office-erp/config/${file} ] ; then
      rm /usr/lib/lx-office-erp/config/${file}
    fi
  done
  if [ -e /etc/apache2 ] ; then
    if ! [ -f /etc/apache2/conf.d/lx-office-erp.apache2.conf ] ; then
      ln -s /etc/lx-office-erp/lx-office-erp.apache2.conf /etc/apache2/conf.d/lx-office-erp.apache2.conf
    fi;
  fi;
  if [ -e /etc/cherokee/sites-available ] ; then
    if ! [ -f /etc/cherokee/sites-available/lx-office-erp.cherokee ] ; then
      cat /etc/lx-office-erp/lx-office-erp.cherokee.handler >> /etc/cherokee/sites-available/default
      ln -s /etc/lx-office-erp/lx-office-erp.cherokee /etc/cherokee/sites-available/lx-office-erp.cherokee
    fi;
  fi;
  if [ -e /etc/lighttpd ] ; then
    if ! [ -f /etc/lighttpd/conf-enabled/lx-office-erp.lighttpd ] ; then
      ln -s /etc/lx-office-erp/lx-office-erp.lighttpd /etc/lighttpf/conf-enabled/10-lx-office-erp
    fi;
  fi;
}
web_server_ctrl() {
  local action=$1
  if [ -x "/etc/init.d/apache2" ]; then
    if [ -x /usr/sbin/invoke-rc.d ]; then
      invoke-rc.d apache2 $action ||true
    else
      /etc/init.d/apache2 $action ||true
    fi
  fi
  if [ -f /etc/init.d/cherokee ] ; then
    /etc/init.d/cherokee $action || true
  fi
  if [ -f /etc/init.d/lighttpd ] ; then
    /etc/init.d/lighttpd $action || true
  fi

  # if [ $action = restart ] ; then
  #   echo Sleeping
  #   sleep 5
  #   echo Awake
  # fi
}

enable_fcgi() {
  if [ -x /usr/sbin/a2enmod -a -f /usr/lib/apache2/modules/mod_fcgid.so ] ; then
    /usr/sbin/a2enmod fcgid
    # web_server_ctrl restart
  fi
}

case "$1" in

  upgrade)
    echo " ! "`date`" $1 !" >> $debugfile

    enable_fcgi

    VER=`cat /var/www/lx-office-erp/VERSION | cut -d '.' -f2`
    if [ $VER = '6' ]; then
      echo " ! 2.6 !" >> $debugfile
      echo "Version 2.6.x"
      mk_new_menu
    else
      mk_new_menu
      mk_new_config
      config_postgresql_factory_script
      set_lx_office_erp_web_admin_password
      set_lx_office_erp_authentication_db_user_password
      mk_links
    fi;

    set_user_rights
    ps auxw

    db_stop || true
    web_server_ctrl restart

    ;;

  install|configure)
    echo " ! "`date`" $1 !" >> $debugfile

    enable_fcgi

    mk_new_menu
    mk_new_config
    config_postgresql_factory_script
    set_lx_office_erp_web_admin_password
    set_lx_office_erp_authentication_db_user_password
    mk_links

    set_user_rights

    db_stop || true
    web_server_ctrl restart

    ;;

  abort-upgrade|abort-remove|abort-deconfigure)
    ;;

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

echo "done!!"

exit 0
