. /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_perms="660"
+dbc_generate_include_owner="root:www-data"
+dbc_generate_include_perms="640"
dbc_dbfile_owner="www-data:www-data"
dbc_dbfile_perms="0660"
dbc_dbuser=roundcube
dbc_go roundcube $@
+lighttpd_install() {
+ if [ ! -f /etc/lighttpd/conf-available/50-roundcube.conf ] ; then
+ if [ ! -x /usr/sbin/lighty-enable-mod ] ; then
+ echo "Lighttpd not installed, skipping"
+ else
+ ln -s /etc/roundcube/lighttpd.conf /etc/lighttpd/conf-available/50-roundcube.conf
+ lighty-enable-mod roundcube
+ fi
+ fi
+}
+
+apache_install() {
+ webserver=$1
+ if [ -d /etc/$webserver/conf.d ] && [ ! -e /etc/$webserver/conf.d/roundcube ]; then
+ ln -s /etc/roundcube/apache.conf /etc/$webserver/conf.d/roundcube
+ fi
+}
+
+
case "$1" in
configure)
- # From 0.1-beta2.2 to 0.1-rc1, a column was added to table
- # `identities'. For MySQL and PostgreSQL, this is handled by
- # dbconfig-common but for sqlite, there is no way to add a
- # column to a table. Therefore, we dump here the table and add
- # the column.
- [ "$dbc_upgrade" = "true" ] && {
- case "$dbc_dbtype" in
- sqlite)
- db="${dbc_basepath}/${dbc_dbname}"
- # OK, we need to check if the table contains html_signature
- if ! sqlite "$db" '.schema identities' | grep -q html_signature; then
- # We need to add it
- echo -n "Need to upgrade 'identities' table in $db... "
- upgrade_tmp=$(mktemp -t roundcube.sqlite.XXXXXXXXXX)
- (
- cat <<EOF
-BEGIN TRANSACTION;
-DROP TABLE identities;
-CREATE TABLE identities (
- identity_id integer NOT NULL PRIMARY KEY,
- user_id integer NOT NULL default '0',
- del tinyint NOT NULL default '0',
- standard tinyint NOT NULL default '0',
- name varchar(128) NOT NULL default '',
- organization varchar(128) default '',
- email varchar(128) NOT NULL default '',
- "reply-to" varchar(128) NOT NULL default '',
- bcc varchar(128) NOT NULL default '',
- signature text NOT NULL default '',
- html_signature tinyint NOT NULL default '0'
-);
-
-CREATE INDEX ix_identities_user_id ON identities(user_id);
-
+ # 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
+ 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
- # We dump and keep only inserts
- sqlite "$db" '.dump identities' | \
- awk '/^INSERT INTO/ {start = 1} {if (start == 1) print}' | \
- head -n -2 | \
- sed 's/^\(INSERT INTO identities \)/\1(identity_id, user_id, del, standard, name, organization, email, "reply-to", bcc, signature) /'
- echo 'COMMIT;' ) > $upgrade_tmp
- sqlite "$db" < $upgrade_tmp
- rm $upgrade_tmp
- echo "OK"
- fi
- ;;
- *)
- # Do nothing
- ;;
- esac
- }
+ 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 \`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
+ fi
+ fi
CONFFILE=/etc/roundcube/main.inc.php
touch $CONFFILE.ucftmp
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\['locale_string'\] = '\).*\(';\)\$+\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
for webserver in $webservers; do
webserver=${webserver%,}
+ if [ "$webserver" = "lighttpd" ] ; then
+ lighttpd_install
+ else
+ apache_install $webserver
+ fi
test -x /usr/sbin/$webserver || continue
-
- if [ ! -f /etc/$webserver/conf.d/roundcube ] && [ ! -h /etc/$webserver/conf.d/roundcube ]; then
- ln -s /etc/roundcube/apache.conf /etc/$webserver/conf.d/roundcube
- fi
restart="$restart $webserver"
done
if [ "$res" = "true" ]; then
for webserver in $restart; do
webserver=${webserver%,}
+ # Redirection of 3 is needed because Debconf uses it and it might
+ # be inherited by webserver. See bug #446324.
if [ -x /usr/sbin/invoke-rc.d ]; then
- invoke-rc.d $webserver restart
+ invoke-rc.d $webserver reload 3>/dev/null || true
else
- /etc/init.d/$webserver restart
+ /etc/init.d/$webserver reload 3>/dev/null || true
fi
done
fi
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
;;