--- /dev/null
+#!/bin/sh
+# postinst script for roundcube
+#
+# see: dh_installdeb(1)
+
+set -e
+
+. /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_dbfile_owner="www-data:www-data"
+dbc_dbfile_perms="0660"
+dbc_dbuser=roundcube
+dbc_dbname=roundcube
+
+dbc_go roundcube $@
+
+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);
+
+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
+ }
+
+ CONFFILE=/etc/roundcube/main.inc.php
+ touch $CONFFILE.ucftmp
+ chmod 640 $CONFFILE.ucftmp
+
+ db_get roundcube/hosts || true
+ hosts="$RET"
+ if [ "$hosts" != "" ]; then
+ hosts="array(\"$(echo $hosts | sed 's/ /\",\"/g')\")"
+ else
+ hosts="''"
+ fi
+
+ db_get roundcube/language || true
+ language="$RET"
+
+ # Get current 3DES key from /etc/roundcube/main.inc.php
+ [ -f /etc/roundcube/main.inc.php ] && {
+ deskey=$(sed -n "s+^\$rcmail_config\['des_key'\] = '\(.*\)';\$+\1+p" \
+ /etc/roundcube/main.inc.php)
+ }
+ # If this is the default key, forget it !
+ [ "$deskey" = "rcmail-!24ByteDESkey*Str" ] && unset deskey
+ # Generate a new one
+ while [ -z "$deskey" ]; do
+ deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | \
+ tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
+ 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
+
+ ucf --debconf-ok $CONFFILE.ucftmp $CONFFILE
+ chown root:www-data $CONFFILE
+ rm -f $CONFFILE.ucftmp
+
+ # Handle webserver reconfiguration/restart ; stolen from zabbix package
+ db_get roundcube/reconfigure-webserver || true
+ webservers="$RET"
+ restart=""
+
+ for webserver in $webservers; do
+ webserver=${webserver%,}
+ 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
+
+ db_get roundcube/restart-webserver || true
+ res="$RET"
+ db_stop || true
+ if [ "$res" = "true" ]; then
+ for webserver in $restart; do
+ webserver=${webserver%,}
+ if [ -x /usr/sbin/invoke-rc.d ]; then
+ invoke-rc.d $webserver restart
+ else
+ /etc/init.d/$webserver restart
+ fi
+ done
+ fi
+
+ chown -R www-data:adm /var/log/roundcube
+ 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
+
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+
+#DEBHELPER#
+
+exit 0
+
+