#!/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 $@ 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 /usr/sbin/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 < $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%,} if [ "$webserver" = "lighttpd" ] ; then lighttpd_install else apache_install $webserver fi test -x /usr/sbin/$webserver || continue 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