source: alternc-mailman/tags/1.6/debian/postinst @ 2440

Revision 2440, 4.9 KB checked in by anarcat, 4 years ago (diff)

fix SQL syntax error in postinst

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
Line 
1#!/bin/sh
2
3set -e
4
5. /usr/share/debconf/confmodule
6
7CONFIGFILE="/etc/alternc/local.sh"
8MENUFILE="/etc/alternc/menulist.txt"
9MAILMAN_SCRIPT="/var/lib/mailman/mail/mailman"
10MAILMAN_CONFIG="/etc/mailman/mm_cfg.py"
11MAILMAN_CONFIG_TEMPLATE="/etc/alternc/templates/mailman/mm_cfg.py"
12MAILMAN_CONFIG_BACKUP="/var/backups/alternc/etc-mailman-mm_cfg.py"
13MAILMAN_SCRIPT="/var/lib/mailman/mail/mailman"
14MAILMAN_PASS="`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..10)' `" # copy-pasted from alternc/debian/config
15
16case "$1" in
17  configure)
18    . "$CONFIGFILE"
19
20    echo "Installing mysql table"
21    mysql --defaults-file=/etc/alternc/my.cnf < /usr/share/alternc/install/mailman.sql
22   
23    # Install generated mailman configuration if it has not been modified since
24    # last package configuration
25    if [ -f "$MAILMAN_CONFIG_BACKUP" ]; then
26        if ! diff -q "$MAILMAN_CONFIG" "$MAILMAN_CONFIG_BACKUP"; then
27            echo "$MAILMAN_CONFIG has been modified since last alternc-mailman"
28            echo "configuration.  You should merge your changes to"
29            echo "$MAILMAN_CONFIG_TEMPLATE and delete $MAILMAN_CONFIG_BACKUP"
30            exit 1
31        fi
32    fi
33    sed -e "s/%%fqdn%%/$FQDN/" < "$MAILMAN_CONFIG_TEMPLATE" > "$MAILMAN_CONFIG"
34    cp -a -f "$MAILMAN_CONFIG" "$MAILMAN_CONFIG_BACKUP"
35
36    MAILMAN_VERSION=`dpkg -l mailman | grep ^ii | awk '{print $3}' | sed -e s/-.*//`
37    echo "detected mailman version $MAILMAN_VERSOIN"
38    PATCHFILE="/usr/share/alternc-mailman/patches/mailman-true-virtual-$MAILMAN_VERSION.patch"
39    PATCH_MARKER="/usr/share/alternc-mailman/patches/mailman-true-virtual.applied"
40    if [ -h $PATCH_MARKER ]; then
41        PATCH_VERSION=`readlink $PATCH_MARKER | sed -e 's/^.*-//;s/\.patch//'`
42        echo "mailman patch detected, version $PATCH_VERSION"
43        if [ "$PATCH_VERSION" = "$MAILMAN_VERSION" ]; then
44            echo "mailman already patched, will not patch again"
45        else
46            echo "wrong version of the patch, we assume that mailman was upgraded"
47            rm -f $PATCH_MARKER
48        fi
49    fi
50    if [ ! -r $PATCHFILE ]; then
51        echo "no patchfile for mailman $MAILMAN_VERSION"
52    fi
53    if [ -r $PATCHFILE -a ! -h $PATCH_MARKER ]; then
54        db_get alternc-mailman/patch-mailman || true
55        if [ "$RET" = "true" ]; then
56            {
57                cd /var/lib
58                echo "testing the patch"
59                if patch --dry-run -p0 < $PATCHFILE; then
60                    echo "applying patch"
61                    if patch -p0 < $PATCHFILE; then
62                        echo "patch applied sucessfully"
63                        # this will tell alternc-mailman the patch was applied successfully
64                        ln -fs $PATCHFILE $PATCH_MARKER
65                        invoke-rc.d mailman restart || true
66                    else
67                        echo "cannot apply patch, your mailman is probably broken now, aborting"
68                        false
69                    fi
70                else
71                    echo "patch will not apply cleanly, aborting"
72                fi
73            }
74        else
75            echo "not applying virtual mailman patch"
76        fi
77    fi
78    # tell debconf to go away, otherwise alternc.install will freeze
79    db_stop
80
81    # Create the "mailman" list if it does not exist yet
82    if [ ! -d /var/lib/mailman/lists/mailman ]; then
83        /var/lib/mailman/bin/newlist -q mailman "root@$FQDN" "${MAILMAN_PASS}"
84        ( echo "INSERT INTO mailman SET id=NULL, uid=2000, list='mailman', domain='${FQDN}', name='mailman';"
85          echo "INSERT INTO mail_domain SET mail='mailman@${FQDN}', alias='mailman_${FQDN}', uid=2000, pop=0, type=1;"
86          echo "INSERT INTO mail_alias SET mail='mailman_${FQDN}', alias='\"| $MAILMAN_SCRIPT post mailman\"';"
87          for kind in request owner admin bounces confirm join \
88                      leave subscribe unsubscribe; do
89              echo "INSERT INTO mail_domain SET mail='mailman-${kind}@${FQDN}', alias='mailman-${kind}_${FQDN}', uid=2000, pop=0, type=1;"
90              echo "INSERT INTO mail_alias SET mail='mailman-${kind}_${FQDN}', alias='\"| $MAILMAN_SCRIPT ${kind} mailman\"';" 
91          done
92        ) | mysql --defaults-file=/etc/alternc/my.cnf -f || true
93    fi
94
95    ln -sf /usr/lib/cgi-bin/mailman /var/alternc/cgi-bin/mailman
96    alternc.install
97
98    # Process the language compilation.
99    /usr/share/alternc/install/dopo.sh
100
101    # ADD Mailman menu item :
102    if ! grep -q "^menu_mailman.php$" "$MENUFILE"; then
103        rm -f $MENUFILE.alternc_mailman
104        sed -e "s/menu_ftp.php/&\\
105menu_mailman.php/" <$MENUFILE >$MENUFILE.alternc_mailman
106        mv -f $MENUFILE.alternc_mailman $MENUFILE
107    fi
108    ;;
109
110  abort-upgrade|abort-remove|abort-deconfigure)
111    ;;
112
113  *)
114    echo "postinst called with unknown argument \`$1'" >&2
115    exit 1
116    ;;
117esac
118
119# dh_installdeb will replace this with shell code automatically
120# generated by other debhelper scripts.
121#DEBHELPER#
122
123# vim: et sw=4
Note: See TracBrowser for help on using the repository browser.