. /usr/share/debconf/confmodule
. /usr/share/dbconfig-common/dpkg/postinst
dbc_generate_include=php:/etc/roundcube/debian-db.php
-dbc_generate_include_owner="www-data:www-data"
+dbc_generate_include_owner="root:www-data"
dbc_generate_include_perms="640"
dbc_dbfile_owner="www-data:www-data"
dbc_dbfile_perms="0660"
case "$1" in
configure)
- # We try to fix an incomplete upgrade (see #610725)
- if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.5-2; then
+ # We try to fix an incomplete upgrade (see #610725 and #613586)
+ if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.5.1+dfsg-5; then
db_get roundcube/dbconfig-upgrade || true
if [ x"$RET" = x"true" ]; then
- # Ok, we may need to do some upgrade steps. Let's get
- # database parameters
- eval `sed -n 's/^\$\(.*\);$/\1/p' /etc/roundcube/debian-db.php`
- if [ x"$dbtype" = x"mysql" ]; then
- echo "Fixing MySQL indexes (you can ignore errors)..."
- MYSQLARGS="-f -u $dbuser -p$dbpass $dbname"
- [ -z "$dbserver" ] || MYSQLARGS="-h $dbserver $MYSQLARGS"
- [ -z "$dbport" ] || MYSQLARGS="-P $dbport $MYSQLARGS"
- cat <<EOF | mysql $MYSQLARGS || true
+ 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 \`session\` CHANGE \`vars\` \`vars\` MEDIUMTEXT NOT NULL;
ALTER TABLE \`contacts\`ADD INDEX \`user_contacts_index\` (\`user_id\`,\`email\`);
+ALTER TABLE \`identities\` ADD \`changed\` datetime NOT NULL DEFAULT '1000-01-01 00:00:00' AFTER \`user_id\`;
ALTER TABLE \`identities\` ADD INDEX \`user_identities_index\` (\`user_id\`, \`del\`);
EOF
fi
done
# 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
+ cat /usr/share/roundcube/main.inc.php.dist | while read line; do
+ case "$line" in
+ "\$rcmail_config['default_host'] = "*)
+ printf "\$rcmail_config['default_host'] = %s;\n" "${hosts}"
+ ;;
+ "\$rcmail_config['des_key'] = "*)
+ printf "\$rcmail_config['des_key'] = '%s';\n" "${deskey}"
+ ;;
+ "\$rcmail_config['language'] = "*)
+ printf "\$rcmail_config['language'] = '%s';\n" "${language}"
+ ;;
+ *)
+ printf "%s\n" "$line"
+ ;;
+ esac
+ done >> $CONFFILE.ucftmp
ucf --debconf-ok $CONFFILE.ucftmp $CONFFILE
chown root:www-data $CONFFILE