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