'Network User' is now 'Normal User'
[citadel.git] / citadel / debian / citadel-server.postinst
index fe8ce88880c7f8b4068fcee7789b0f5d17f495c9..b07a655f510f3b1ee2325b94d1c579d5358104c9 100644 (file)
-#! /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
-#
-
-       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
-       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"
-       echo "applying your settings."
-       echo "/usr/sbin
-$admin
-citadel
-$ip_addr
-
-" | \
-       /usr/lib/citadel-server/setup -q
-
-    #### 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".
-    #:
+        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
 
+        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