#!/bin/sh

set -e

CONFIGFILE="/etc/alternc/local.sh"
MENUFILE="/etc/alternc/menulist.txt"
MAILMAN_SCRIPT="/var/lib/mailman/mail/mailman"
MAILMAN_CONFIG="/etc/mailman/mm_cfg.py"
MAILMAN_CONFIG_TEMPLATE="/etc/alternc/templates/mailman/mm_cfg.py"
MAILMAN_CONFIG_BACKUP="/var/backups/alternc/etc-mailman-mm_cfg.py"
MAILMAN_SCRIPT="/var/lib/mailman/mail/mailman"

# Add mailman aliases to the apache configuration file given as argument
function configure {
    if ! grep -Eq "\*\*\*MAILMAN\*\*\*" $1; then
	cp -a -f $1 $1.tmp
	sed -e "s/\*\*\*ALTERNC_ALIASES\*\*\*/&\\
	    # ***MAILMAN*** \\
	Alias \/marchives\/ \/var\/lib\/mailman\/archives\/public\/ \\
        Alias \/mimages\/ \/usr\/share\/images\/mailman\//" < $1 > $1.tmp
	mv -f $1.tmp $1
    fi
}


case "$1" in
  configure)
    . "$CONFIGFILE"

    echo "Installing mysql table"
    mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" -h"$MYSQL_HOST" "$MYSQL_DATABASE" \
        < /usr/share/alternc/install/mailman.sql
    
    # Install generated mailman configuration if it has not been modified since
    # last package configuration
    if [ -f "$MAILMAN_CONFIG_BACKUP" ]; then
        if ! diff -q "$MAILMAN_CONFIG" "$MAILMAN_CONFIG_BACKUP"; then
            echo "$MAILMAN_CONFIG has been modified since last alternc-mailman"
            echo "configuration.  You should merge your changes to"
            echo "$MAILMAN_CONFIG_TEMPLATE and delete $MAILMAN_CONFIG_BACKUP"
            exit 1
        fi
    fi
    sed -e "s/%%fqdn%%/$FQDN/" < "$MAILMAN_CONFIG_TEMPLATE" > "$MAILMAN_CONFIG"
    cp -a -f "$MAILMAN_CONFIG" "$MAILMAN_CONFIG_BACKUP"

    # Create the "mailman" list if it does not exist yet
    if [ ! -d /var/lib/mailman/lists/mailman ]; then
        /var/lib/mailman/bin/newlist -q mailman "root@$FQDN" "$MYSQL_PASS"
        ( echo "INSERT INTO mailman
                VALUES (NULL, 2000, 'mailman', '${FQDN}', 'mailman');"
          echo "INSERT INTO mail_domain
                VALUES ('${user}@${FQDN}', '${user}_${FQDN}', 2000, 0, 1);"
          echo "INSERT INTO mail_alias
                VALUES ('${user}_${FQDN}',
                        '\"| $MAILMAN_SCRIPT post mailman\"');"
          for kind in request owner admin bounces confirm join \
                      leave subscribe unsubscribe; do
              echo "INSERT INTO mail_domain
                         VALUES ('mailman-${kind}@${FQDN}',
                                 'mailman-${kind}_${FQDN}', 2000, 0, 1);"
              echo "INSERT INTO mail_alias
                         VALUES ('mailman-${kind}_${FQDN}',
                                 '\"| $MAILMAN_SCRIPT ${kind} mailman\"');" 
          done
        ) | mysql -f -u"$MYSQL_USER" -p"$MYSQL_PASS" -h"$MYSQL_HOST" \
              "$MYSQL_DATABASE" || true
    fi

    # Refresh apache configuration
    configure /etc/alternc/templates/apache/httpd.conf
    configure /etc/alternc/templates/apache-ssl/httpd.conf
    ln -sf /usr/lib/cgi-bin/mailman /var/alternc/cgi-bin/mailman
    alternc.install

    # Process the language compilation.
    /usr/share/alternc/install/dopo.sh

    # ADD Mailman menu item : 
    if ! grep -q "^menu_mailman.php$" "$MENUFILE"; then
        rm -f $MENUFILE.alternc_mailman
        sed -e "s/menu_ftp.php/&\\
menu_mailman.php/" <$MENUFILE >$MENUFILE.alternc_mailman
        mv -f $MENUFILE.alternc_mailman $MENUFILE
    fi
    ;;

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

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

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

# vim: et sw=4
