X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fdebian%2Fcitadel-server.postinst;h=b07a655f510f3b1ee2325b94d1c579d5358104c9;hb=a2ae8dfea31fc1495e3a97b28f3ddca01f491bef;hp=9c2e09c9728ff358f66380fd4596d83118c97fce;hpb=d623511140cbd2a395feff7fcd84b2ef8c2700ac;p=citadel.git diff --git a/citadel/debian/citadel-server.postinst b/citadel/debian/citadel-server.postinst index 9c2e09c97..b07a655f5 100644 --- a/citadel/debian/citadel-server.postinst +++ b/citadel/debian/citadel-server.postinst @@ -1,243 +1,93 @@ -#! /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" - 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" - + 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 - 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" - db_get citadel/LoginType && enable_unix_auth="$RET" - if test "$enable_unix_auth" = "true"; then - export ENABLE_UNIX_AUTH=yes - else - export ENABLE_UNIX_AUTH=no - fi - 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." - /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 - while test -S /var/run/citadel/citadel.socket; do - sleep 1 - done - - update-rc.d citadel defaults >/dev/null -# /etc/init.d/citadel start - 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" = ""; 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