910c21557af8cde68dd77a0b4f5b623d3060058a
[mailman-cn.git] / debian / postinst
1 #!/bin/sh -e
2
3 set -e
4
5 [ "$1" = "configure" ] || exit 0
6
7 # Load CARNet tools
8 . /usr/share/carnet-tools/functions.sh
9 # Load Debconf
10 . /usr/share/debconf/confmodule
11
12 # Fri, 18 Feb 2005 11:48:51 +0100
13 MM_CFG="/etc/mailman/mm_cfg.py"
14
15 if [ ! -L /usr/lib/mailman/Mailman/mm_cfg.py -a -f /usr/lib/mailman/Mailman/mm_cfg.py ]; then
16   mv /usr/lib/mailman/Mailman/mm_cfg.py /usr/lib/mailman/Mailman/mm_cfg.py.cn-bak
17   ln -sf /etc/mailman/mm_cfg.py /usr/lib/mailman/Mailman/mm_cfg.py
18 fi
19
20 if [ ! -L /etc/apache2/conf.d/mailman-cn.conf -a ! -f /etc/apache2/conf.d/mailman-cn.conf ]; then
21   ln -sf /etc/mailman/apache.conf /etc/apache2/conf.d/mailman-cn.conf
22 fi
23
24 HOSTNAME="`hostname --fqdn`"
25
26 mmcfg_add () {
27   opt="$1"
28   val="$2"
29   if ( grep -E -q "^$opt " $MM_CFG && ! grep -E -q "^$opt = $val$" $MM_CFG ) || grep -E -q "^#$opt " $MM_CFG; then
30     perl -ne \
31 "if (/^#?$opt /) {
32    if (! \$found) {
33      \$found = 1;
34      \$_ = \"$opt = $val\\n\";
35    } else {
36      next;
37    }
38  }
39  print \$_;
40 " < $MM_CFG > ${MM_CFG}.$$
41     if ! cmp -s $MM_CFG ${MM_CFG}.$$; then
42       cp_mv ${MM_CFG}.$$ $MM_CFG
43       restart=yes
44     else
45       rm -f ${MM_CFG}.$$
46       exit 1 # shouldn't happen
47     fi
48   elif ! grep -E -q "^$opt = $val$" $MM_CFG; then
49     echo "$opt = $val" >> $MM_CFG
50     restart=yes
51   fi
52 }
53
54 cp_backup_conffile -p -d mailman $MM_CFG || true
55
56 # ocisti smece od prosle verzije
57 if dpkg --compare-versions "$2" lt 2:2.1.5-9; then
58   HN="'$HOSTNAME'"
59   grep -v -E 'DEFAULT_(URL_PATTERN|URL_HOST|EMAIL_HOST) =' $MM_CFG | \
60   awk '/^# Default host for web interface of newly created MLs/ { print $0; print "DEFAULT_EMAIL_HOST = '$HN'"; getline } { print $0 }' | \
61   awk '/^# Default domain for email addresses of newly created MLs/ { print $0;  print "DEFAULT_URL_HOST = '$HN'"; getline } { print $0 }' \
62       > ${MM_CFG}.$$
63   cp_mv ${MM_CFG}.$$ $MM_CFG
64 fi
65
66 # stavi hrvatski kao jezik
67 mmcfg_add "DEFAULT_SERVER_LANGUAGE" "'hr'"
68
69 # sredi DEFAULT_URL_PATTERN
70 mmcfg_add "DEFAULT_URL_PATTERN" "'http://%s/mailman/'"
71
72 # sredi VIRTUAL_HOST_OVERVIEW
73 mmcfg_add "VIRTUAL_HOST_OVERVIEW" "Off"
74
75 # sredi DEFAULT_URL_HOST
76 mmcfg_add "DEFAULT_URL_HOST" "'$HOSTNAME'"
77
78 # sredi DEFAULT_EMAIL_HOST
79 mmcfg_add "DEFAULT_EMAIL_HOST" "'$HOSTNAME'"
80
81 # sredi PRIVATE_ARCHIVE_URL
82 mmcfg_add "PRIVATE_ARCHIVE_URL" "'/mailman/private'"
83
84 # kreirati link za smrsh
85 if [ -d /etc/mail/smrsh/ ]; then
86   ln -sf /var/lib/mailman/mail/mailman /etc/mail/smrsh/mailman
87 fi
88
89 # zakomentiraj prastare opcije
90 if [ -f $MM_CFG ]; then
91   cp_check_and_sed '^DEFAULT_MAIL_HOST ' \
92                    's/^DEFAULT_MAIL_HOST .*/d' \
93                    $MM_CFG || true
94   cp_check_and_sed '^DEFAULT_URL ' \
95                    's/^\(DEFAULT_URL .*\)/#\1/g' \
96                    $MM_CFG || true
97 fi
98
99 # kreirati mailman listu
100 if [ -z "`list_lists | grep -i mailman`" ]; then
101   newlist -q mailman mailman@$HOSTNAME `pwgen 8 1` > /dev/null
102 fi
103
104 # kreirati aliase
105 if ! grep -q "mailman.*/var/lib/mailman/mail/mailman" /etc/aliases; then
106   cat >> /etc/aliases <<EOF
107 ## mailman mailing list
108 mailman:              "|/var/lib/mailman/mail/mailman post mailman"
109 mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
110 mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
111 mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
112 mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
113 mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
114 mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
115 mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
116 mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
117 mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"
118 EOF
119   newaliases > /dev/null
120 fi
121
122 withlist mailman > /dev/null 2> /dev/null << EOF
123 m.advertised = False
124 m.Lock()
125 m.Save()
126 m.Unlock()
127 EOF
128
129 # dodati roota na mailman listu:
130 if [ ! "`list_members mailman | wc -l`" -ge 1 ]; then
131   add_members -r - mailman <<EOF
132 root@$HOSTNAME
133 EOF
134 fi
135
136 # sredi debconf da site bude na hrvatskom
137 db_get mailman/site_languages || true
138 site_languages="$RET"
139 if ! echo $site_languages | grep -q 'hr'; then
140   site_languages="$site_languages, hr"
141   db_set mailman/site_languages "$site_languages" || true
142   db_go || true
143 fi
144 db_set mailman/default_server_language "hr" || true
145 db_go || true
146 db_stop || true
147
148 site_languages="`echo $site_languages | tr -d ','`"
149 mm_etc=/etc/mailman
150 mm_dist=/usr/share/mailman
151
152 for lang in ${site_languages}; do
153   [ -d "${mm_dist}/${lang}" ] || break
154   echo -n "Installing site language ${lang} " >&2
155   mkdir -p ${mm_etc}/${lang}
156   for file in $(ls ${mm_dist}/${lang}); do
157     echo -n . >&2
158     langfile=${lang}/${file}
159     ucf --debconf-ok --three-way ${mm_dist}/${langfile} ${mm_etc}/${langfile} 2>/dev/null
160     # Upon install ucf leaves a duplicate in .dpkg-dist (Bug #238730), remove it
161     cmp -s ${mm_etc}/${langfile} ${mm_etc}/${langfile}.dpkg-dist \
162       && rm ${mm_etc}/${langfile}.dpkg-dist
163   done
164   echo " done." >&2
165 done
166
167
168 # restart mailman
169 if [ "$restart" = "yes" -a -x /etc/init.d/mailman ]; then
170   /etc/init.d/mailman stop
171   /etc/init.d/mailman start
172 fi
173
174 # restartat apache2
175 if [ -x /etc/init.d/apache2 ]; then
176   /etc/init.d/apache2 reload || true
177 fi
178
179 # promjena passworda
180 echo
181 if [ ! -f /var/lib/mailman/data/adm.pw ]; then
182   echo "CN: IMPORTANT: Change your site administrator password using the command:"
183   echo "CN:"
184   echo "CN:     # mmsitepass"
185   echo "CN:"
186 fi
187 echo "CN: Web interface is at http://$HOSTNAME/mailman/admin/"