-#! /bin/sh
-# postinst.skeleton
-# Skeleton maintainer script showing all the possible cases.
-# Written by Charles Briscoe-Smith, March-June 1998. Public Domain.
+#!/bin/sh
+# postinst script for citadel-server
-# Abort if any command returns an error value
set -e
-# Use debconf.
+# source debconf stuff
. /usr/share/debconf/confmodule
+db_version 2.0
-# This script is called as the last step of the installation of the
-# package. All the package's files are in place, dpkg has already done
-# its automatic conffile handling, and all the packages we depend of
-# are already fully installed and configured.
-
-# The following idempotent stuff doesn't generally need protecting
-# against being run in the abort-* cases.
-
-#### Install info files into the dir file
-###: install-info --quiet --section "section pattern" "Section Title" \
-###: --description="Name of the document" /usr/info/foo.info
-###
-#### Create stub directories under /usr/local
-###: if test ! -d /usr/local/lib/foo; then
-###: if test ! -d /usr/local/lib; then
-###: if mkdir /usr/local/lib; then
-###: chown root.staff /usr/local/lib || true
-###: chmod 2775 /usr/local/lib || true
-###: fi
-###: fi
-###: if mkdir /usr/local/lib/foo; then
-###: chown root.staff /usr/local/lib/foo || true
-###: chmod 2775 /usr/local/lib/foo || true
-###: fi
-###: fi
-###
-#### Ensure the menu system is updated
-###: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus
-###
-#### Arrange for a daemon to be started at system boot time
-###: update-rc.d foo default >/dev/null
-###
-
-
+move_file()
+{
+ [ ! -f $1 ] && return
+ [ -f $2 ] && return
+ mv -f $1 $2
+}
case "$1" in
- configure)
- # Configure this package. If the package must prompt the user for
- # information, do it here.
- if ! getent group citadel >/dev/null; then
- groupadd citadel
- fi
- if ! getent passwd citadel >/dev/null; then
- adduser --system --ingroup citadel --home /var/lib/citadel \
- --gecos "Citadel system user" --shell /bin/sh \
- --disabled-password citadel
- fi
- mkdir -p /etc/citadel
- chown citadel:citadel /etc/citadel
- # Activate menu-methods script
- #: chmod a+x /etc/menu-methods/foo
-
- # Update ld.so cache
- #: ldconfig
-
- # Make our version of a program available
- #: update-alternatives \
- #: --install /usr/bin/program program /usr/bin/alternative 50 \
- #: --slave /usr/share/man/man1/program.1.gz program.1.gz \
- #: /usr/share/man/man1/alternative.1.gz
-
- # Tell ucf that the file in /usr/share/foo is the latest
- # maintainer version, and let it handle how to manage the real
- # confuguration file in /etc. This is how a static configuration
- # file can be handled:
- ucf /usr/share/doc/citadel-server/examples/mail.aliases /etc/citadel/mail.aliases
- ucf /usr/share/doc/citadel-server/examples/public_clients /etc/citadel/public_clients
-
- #: !TODO: should network/systems go to /etc/citadel?
-
- mkdir -p \
- /var/lib/citadel/help \
- /var/lib/citadel/messages \
- /var/lib/citadel/data/ \
- /var/lib/citadel/bio/ \
- /var/lib/citadel/bitbucket/ \
- /var/lib/citadel/files/ \
- /var/lib/citadel/images/ \
- /var/lib/citadel/info/ \
- /var/lib/citadel/userpics/ \
- /var/spool/citadel/network/spoolin \
- /var/spool/citadel/network/spoolout \
- /var/spool/citadel/network/spoolsystems \
- /var/run/citadel
-
-
- mkdir -p /var/lib/citadel/help
- for i in aide floors hours intro.gz mail network nice.gz policy software summary.gz; do
- case $i in
- *.gz)
- j=`echo $i|sed "s;.gz;;"`
- gunzip -c "/usr/share/doc/citadel-server/examples/help/$i" >"/tmp/$j"
- i=$j
- ;;
- *)
- cp "/usr/share/doc/citadel-server/examples/help/$i" "/tmp"
- ;;
- esac
- ucf "/tmp/$i" "/var/lib/citadel/help/$i"
- rm -f "/tmp/$i"
+ configure)
+ chown -R citadel:citadel /etc/citadel
+ chown -R citadel:citadel /var/lib/citadel /var/spool/citadel
+ move_file /var/run/refcount_adjustments.dat /etc/citadel/data/refcount_adjustments.dat
+ move_file /etc/citadel/citadel.control /var/lib/citadel/data/citadel.control
+ move_file /etc/citadel/citadel.config /var/lib/citadel/data/citadel.config
+ invoke-rc.d citadel start
+
+ db_get citadel/Administrator && admin="$RET"
+ db_get citadel/ServerIPAddress && ip_addr="$RET"
+ db_get citadel/LoginType && ENABLE_UNIX_AUTH="$RET"; export ENABLE_UNIX_AUTH
+ db_get citadel/LDAPServer && LDAP_HOST="$RET"; export LDAP_HOST
+ db_get citadel/LDAPServerPort && LDAP_PORT="$RET"; export LDAP_PORT
+ db_get citadel/LDAPBaseDN && LDAP_BASE_DN="$RET"; export LDAP_BASE_DN
+ db_get citadel/LDAPBindDN && LDAP_BIND_DN="$RET"; export LDAP_BIND_DN
+ db_get citadel/LDAPBindDNPassword && LDAP_BIND_PW="$RET"; export LDAP_BIND_PW
+
+
+ export IP_ADDR=$ip_addr
+ export CITADEL='/var/run/citadel'
+ export CITADEL_PORT=504
+ export CITADEL_INSTALLER=yes
+ export CITADEL_UID=`grep ^citadel: /etc/passwd | cut -d : -f 3`
+ export ACT_AS_MTA=no
+ export SYSADMIN_NAME=$admin
+ export CREATE_XINETD_ENTRY=no
+ export CREATE_INITTAB_ENTRY=no
+ export NO_INIT_SCRIPTS=yes
+
+ while test ! -S /var/run/citadel/citadel-admin.socket; do
+ sleep 1
+ echo -n :
done
-
-# # TODO: there is a file named '?'. this gives trouble with ucf, so do it by hand for now.
-# if test ! -e '/var/lib/citadel/help/?'; then
-# cp '/usr/share/doc/citadel/examples/data/help/?' '/var/lib/citadel/help'
-# fi
- mkdir -p /var/lib/citadel/messages
- for i in aideopt changepw dotopt entermsg entopt goodbye hello help mainmenu newuser readopt register roomaccess unlisted; do
- ucf "/usr/share/doc/citadel-server/examples/messages/$i" "/var/lib/citadel/messages/$i"
- done
-
- chown -R citadel:citadel /var/lib/citadel /var/run/citadel /var/spool/citadel
-
- ### We could also do this on the fly. The following is from Tore
- ### Anderson:
-
- #. /usr/share/debconf/confmodule
-
- ### find out what the user answered.
- # db_get foo/run_on_boot
- # run_on_boot=$RET
- # db_stop
-
- ### safely create a temporary file to generate our suggested
- ### configuration file.
- # tempfile=`tempfile`
- # cat << _eof > $tempfile
- ### Configuration file for Foo.
-
- ### this was answered by you, the user in a debconf dialogue
- # RUNONBOOT=$run_on_boot
-
- ### this was not, as it has a sane default value.
- # COLOUROFSKY=blue
-
- #_eof
-
- ### Note that some versions of debconf do not release stdin, so
- ### the following invocation of ucf may not work, since the stdin
- ### is never coneected to ucfr.
-
- ### now, invoke ucf, which will take care of the rest, and ask
- ### the user if he wants to update his file, if it is modified.
- #ucf $tempfile /etc/foo.conf
-
- ### done! now we'll just clear up our cruft.
- #rm -f $tempfile
-
- db_get citadel/Administrator && admin="$RET"
- db_get citadel/ServerIPAddress && ip_addr="$RET"
- export IP_ADDR=$ip_addr
- export CITADEL=''
- export CITADEL_INSTALLER=yes
- export ACT_AS_MTA=no
- export SYSADMIN_NAME=$admin
- export CREATE_XINETD_ENTRY=no
- export CREATE_INITTAB_ENTRY=no
- export NO_INIT_SCRIPTS=yes
- echo "applying your settings."
-# citadel home
-# sysadmin
-# uid
-# server ip
-# port
-# postfix?
-# exim?
-# echo "/usr/sbin
-#$admin
-#citadel
-#$ip_addr
-#
-#no
-#no
-#" | \
- /usr/lib/citadel-server/setup -q
- if test -S /var/run/citadel/citadel.socket; then
- /usr/sbin/sendcommand "DOWN"
+ echo -n "applying your settings.... "
+ /usr/lib/citadel-server/setup -q
+ echo "done"
+ # this is a new installation
+ if test -z "$2"; then
+ i=0;
+ while test ! -S /var/run/citadel/lmtp.socket -a "$i" -lt "10"; do
+ sleep 1
+ i=$(($i + 1))
+ done
+ if test -S /var/run/citadel/lmtp.socket ; then
+ echo "sending welcome mail"
+ export SEPERATOR=2600908b3f21ae7f692b973ed26e212d
+ export WELCOMEHTML=/usr/share/doc/citadel-server/welcomemail.html
+ export WELCOMETXT=/usr/share/doc/citadel-server/welcomemail.txt
+ export FROM=nobody@example.com
+ export TO=room_lobby
+ (
+ printf "MIME-Version: 1.0\r\nContent-Type: multipart/alternative; \r\n boundary=$SEPERATOR\r\n\r\nThis is a multi-part message in MIME format.\r\n\r\n--$SEPERATOR\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n";
+ cat $WELCOMETXT
+ printf "\r\n\r\n--$SEPERATOR\r\nContent-Type: text/html; charset=US-ASCII\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n"
+ cat $WELCOMEHTML;
+ printf "\r\n\r\n--$SEPERATOR--\r\n\r\n") | \
+ /usr/sbin/citmail -bm -r "$FROM" "$TO"
+ fi
fi
- update-rc.d citadel defaults >/dev/null
-
- echo "run /etc/init.d/citadel start to start citadel service."
- #### There are three sub-cases:
- ###if test "${2+set}" != set; then
- ### # We're being installed by an ancient dpkg which doesn't remember
- ### # which version was most recently configured, or even whether
- ### # there is a most recently configured version.
- ### :
- ###
- ###elif test -z "$2" -o "$2" = "<unknown>"; then
- ### # The package has not ever been configured on this system, or was
- ### # purged since it was last configured.
- ### :
- ###
- ###else
- ### # Version $2 is the most recently configured version of this
- ### # package.
- ### :
- ###
- ###fi
- ;;
- abort-upgrade)
- # Back out of an attempt to upgrade this package FROM THIS VERSION
- # to version $2. Undo the effects of "prerm upgrade $2".
- #:
-
+ db_stop
;;
- abort-remove)
- ###if test "$2" != in-favour; then
- ### echo "$0: undocumented call to \`postinst $*'" 1>&2
- ### exit 0
- ###fi
- #### Back out of an attempt to remove this package, which was due to
- #### a conflict with package $3 (version $4). Undo the effects of
- #### "prerm remove in-favour $3 $4".
- ###:
+ abort-upgrade|abort-remove|abort-deconfigure)
;;
- abort-deconfigure)
- ###if test "$2" != in-favour -o "$5" != removing; then
- ### echo "$0: undocumented call to \`postinst $*'" 1>&2
- ### exit 0
- ###fi
- #### Back out of an attempt to deconfigure this package, which was
- #### due to package $6 (version $7) which we depend on being removed
- #### to make way for package $3 (version $4). Undo the effects of
- #### "prerm deconfigure in-favour $3 $4 removing $6 $7".
- ###:
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
;;
- *) echo "$0: didn't understand being called with \`$1'" 1>&2
- exit 0;;
esac
+#DEBHELPER#
exit 0