]> git.donarmstrong.com Git - roundcube.git/blobdiff - debian/roundcube-core.postinst
Use awk instead of sed to modify main.inc.php. Closes: #615277.
[roundcube.git] / debian / roundcube-core.postinst
index cb7e507b465c9b46241751f4802f390f360e8994..843a1859a9b38ea87fc4541bb1bacf1280a4112f 100644 (file)
@@ -39,6 +39,38 @@ apache_install() {
 case "$1" in
     configure)
 
+       # We try to fix an incomplete upgrade (see #610725 and #613586)
+       if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.5.1+dfsg-2; then
+           db_get roundcube/dbconfig-upgrade || true
+           if [ x"$RET" = x"true" ]; then
+               if [ x"$dbc_dbtype" = x"mysql" ]; then
+                   # Ok, we may need to do some upgrade steps.
+                   echo "Fixing MySQL installation..."
+                   if dpkg --compare-versions "$2" ge 0.5; then
+                       # Hack (ugly) to replace "mysql" by "mysql -f"
+                       real_mysql="$(which mysql)"
+                       workdir="$(mktemp -d)"
+                       oldpath="$PATH"
+                       cat <<EOF > "$workdir/mysql"
+#!/bin/sh
+"$real_mysql" "\$@" -f
+EOF
+                       chmod +x "$workdir/mysql"
+                       PATH="$workdir:$PATH"
+                       dbc_mysql_exec_file \
+                           /usr/share/dbconfig-common/data/roundcube/upgrade/mysql/0.5-1 || true
+                       PATH="$oldpath"
+                       rm -rf "$workdir"
+                    fi
+                   cat <<EOF | while read command; do dbc_mysql_exec_command "$command" || true ; done
+ALTER TABLE \`messages\` ADD INDEX \`index_index\` (\`user_id\`, \`cache_key\`, \`idx\`);
+ALTER TABLE \`contacts\`ADD INDEX \`user_contacts_index\` (\`user_id\`,\`email\`);
+ALTER TABLE \`identities\` ADD INDEX \`user_identities_index\` (\`user_id\`, \`del\`);
+EOF
+               fi
+           fi
+       fi
+
        CONFFILE=/etc/roundcube/main.inc.php
        touch $CONFFILE.ucftmp
        chmod 640 $CONFFILE.ucftmp
@@ -69,9 +101,10 @@ case "$1" in
 
        # Put hosts, language and key in main.inc.php
        cat /usr/share/roundcube/main.inc.php.dist | \
-           sed -e "s+^\(\$rcmail_config\['default_host'\] = \)''\(;\)\$+\1${hosts}\2+" \
-               -e "s+^\(\$rcmail_config\['des_key'\] = '\).*\(';\)\$+\1$deskey\2+" \
-               -e "s+^\(\$rcmail_config\['language'\] = \).*\(;\)\$+\1'${language}'\2+" >> $CONFFILE.ucftmp
+           awk "/^.rcmail_config\['default_host'\] =/ {print \$1\" = ${hosts};\" ; next}
+                 /^.rcmail_config\['des_key'\] =/ {print \$1\" = '${deskey}';\" ; next}
+                 /^.rcmail_config\['language'\] =/ {print \$1\" = '${language}';\" ; next}
+                 {print}" >> $CONFFILE.ucftmp
 
        ucf --debconf-ok $CONFFILE.ucftmp $CONFFILE
        chown root:www-data $CONFFILE
@@ -113,7 +146,6 @@ case "$1" in
        chmod -R 750 /var/log/roundcube
        chown -R www-data:www-data /var/lib/roundcube/temp
        chmod -R 750 /var/lib/roundcube/temp
-       chown www-data:adm /var/lib/roundcube/skins
 
     ;;