#! /bin/sh
# postinst script for cyrus
#
# see: dh_installdeb(1)

set -e

# 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>
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see /usr/doc/packaging-manual/
#
# quoting from the policy:
#     Any necessary prompting should almost always be confined to the
#     post-installation script, and should be protected with a conditional
#     so that unnecessary prompting doesn't happen if a package's
#     installation fails and the `postinst' is called with `abort-upgrade',
#     `abort-remove' or `abort-deconfigure'.

case "$1" in
    configure)

	# Add the cyrus user and setup the directories
	# This is a bit problematic if the machine is using NIS, LDAP, etc...
   if ! grep -q "^cyrus:" /etc/passwd; then
		echo "Adding Cyrus user to the system..."
      adduser --system --ingroup mail --disabled-password --no-create-home \
			--gecos "Cyrus User" --home /var/spool/cyrus cyrus
	fi

	# We do it this way to handle re-installation (the cyrus user will exist 
	#in that case, but the dirs won't)
	if ! ([ -d "/var/lib/cyrus" ] || [ -L "/var/lib/cyrus" ]); then
		echo "Configuring Cyrus directories..."
		#mkdir -p /var/lib/cyrus /var/spool/cyrus/{mail,news}
		#chown cyrus.mail /var/lib/cyrus /var/spool/cyrus/{mail,news}
		#chmod 750 /var/lib/cyrus /var/spool/cyrus/{mail,news}
		mkdir -p /var/lib/cyrus /var/spool/cyrus/mail /var/spool/cyrus/news
		chown cyrus.mail /var/lib/cyrus /var/spool/cyrus/mail /var/spool/cyrus/news
		chmod 750 /var/lib/cyrus /var/spool/cyrus/mail /var/spool/cyrus/news

		echo "Initialising mailboxes..."
		touch /var/lib/cyrus/mailboxes
		#mkdir /var/lib/cyrus/{user,quota,proc,log,msg,deliverdb}
		(cd /var/lib/cyrus && mkdir user quota proc log msg deliverdb)
		chown cyrus.mail /var/lib/cyrus/*

		# Setup sync writes
		# chattr +S /var/lib/cyrus /var/lib/cyrus/user /var/lib/cyrus/quota
		# chattr +S /var/spool/cyrus
		# chattr +S /var/spool/{mqueue,exim,postfix}
   fi

# I think pwcheck is dead now.. but i'm not 100%
#
#	# /var/lib/cyrus could exist independently of /var/state/pwcheck, so we
#	# handle it separately
#	if ! ([ -d "/var/state/pwcheck" ] || [ -L "/var/state/pwcheck" ]); then
#		echo "Configuring pwcheck daemon..."
#		mkdir -p /var/state/pwcheck
#		chown cyrus.mail /var/state/pwcheck
#		chmod 700 /var/state/pwcheck
#	fi

	 # Fix permissions on pwcheck_{standard,pam} and cyrdeliver
	 if [ -e /etc/suid.conf -a -x /usr/sbin/suidregister ]; then
#		suidregister -s cyrus-common /usr/sbin/pwcheck_standard cyrus shadow 2754
##		suidregister -s cyrus-common /usr/sbin/pwcheck_pam cyrus shadow 2754
		suidregister -s cyrus-common /usr/sbin/cyrdeliver cyrus mail 6754
#		elif [ -e /usr/sbin/pwcheck_standard ]; then
#			chown cyrus.shadow /usr/sbin/pwcheck_standard
#			chmod 2754 /usr/sbin/pwcheck_standard
#			chown cyrus.shadow /usr/sbin/pwcheck_pam
#			chmod 2754 /usr/sbin/pwcheck_pam
			chown cyrus.mail /usr/sbin/cyrdeliver
			chmod 6754 /usr/sbin/cyrdeliver	
	 fi

#	 update-alternatives --install /usr/sbin/pwcheck pwcheck /usr/sbin/pwcheck_standard 30
#	 update-alternatives --install /usr/sbin/pwcheck pwcheck /usr/sbin/pwcheck_pam 20


    ;;

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

    ;;

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

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

# Automatically added by dh_installdocs
if [ "$1" = "configure" ]; then
	if [ -d /usr/doc -a ! -e /usr/doc/cyrus-common -a -d /usr/share/doc/cyrus-common ]; then
		ln -sf ../share/doc/cyrus-common /usr/doc/cyrus-common
	fi
fi
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && command -v install-docs >/dev/null 2>&1; then
	install-docs -i /usr/share/doc-base/cyrus-manual
fi
# End automatically added section


exit 0



