root/alternc-mailman/trunk/debian/postinst

Revision 2225, 5.0 kB (checked in by anarcat, 7 months ago)

fix a warning

  • 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
3 set -e
4
5 . /usr/share/debconf/confmodule
6
7 CONFIGFILE="/etc/alternc/local.sh"
8 MENUFILE="/etc/alternc/menulist.txt"
9 MAILMAN_SCRIPT="/var/lib/mailman/mail/mailman"
10 MAILMAN_CONFIG="/etc/mailman/mm_cfg.py"
11 MAILMAN_CONFIG_TEMPLATE="/etc/alternc/templates/mailman/mm_cfg.py"
12 MAILMAN_CONFIG_BACKUP="/var/backups/alternc/etc-mailman-mm_cfg.py"
13 MAILMAN_SCRIPT="/var/lib/mailman/mail/mailman"
14 MAILMAN_PASS="`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..10)' `" # copy-pasted from alternc/debian/config
15
16 case "$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
85                 id=NULL, uid=2000, list='mailman', domain='${FQDN}', name='mailman';"
86           echo "INSERT INTO mail_domain SET
87                 mail='mailman@${FQDN}', alias='mailman_${FQDN}', uid=2000, pop=0, type=1;"
88           echo "INSERT INTO mail_alias SET
89                 mail='mailman_${FQDN}', alias='\"| $MAILMAN_SCRIPT post mailman\"';"
90           for kind in request owner admin bounces confirm join \
91                       leave subscribe unsubscribe; do
92               echo "INSERT INTO mail_domain SET
93                     mail='mailman-${kind}@${FQDN}', alias='mailman-${kind}_${FQDN}', uid=2000, pop=0, type=1;"
94               echo "INSERT INTO mail_alias SET
95                     mail='mailman-${kind}_${FQDN}', alias='\"| $MAILMAN_SCRIPT ${kind} mailman\"');"
96           done
97         ) | mysql -f --defaults-file=/etc/alternc/my.cnf || true
98     fi
99
100     ln -sf /usr/lib/cgi-bin/mailman /var/alternc/cgi-bin/mailman
101     alternc.install
102
103     # Process the language compilation.
104     /usr/share/alternc/install/dopo.sh
105
106     # ADD Mailman menu item :
107     if ! grep -q "^menu_mailman.php$" "$MENUFILE"; then
108         rm -f $MENUFILE.alternc_mailman
109         sed -e "s/menu_ftp.php/&\\
110 menu_mailman.php/" <$MENUFILE >$MENUFILE.alternc_mailman
111         mv -f $MENUFILE.alternc_mailman $MENUFILE
112     fi
113     ;;
114
115   abort-upgrade|abort-remove|abort-deconfigure)
116     ;;
117
118   *)
119     echo "postinst called with unknown argument \`$1'" >&2
120     exit 1
121     ;;
122 esac
123
124 # dh_installdeb will replace this with shell code automatically
125 # generated by other debhelper scripts.
126 #DEBHELPER#
127
128 # vim: et sw=4
129
Note: See TracBrowser for help on using the browser.