]> git.donarmstrong.com Git - roundcube.git/blobdiff - debian/roundcube-core.postinst
Imported Debian patch 0.5.1+dfsg-2
[roundcube.git] / debian / roundcube-core.postinst
index 33d691264f9babc88cf8f1e86c472f189c36aa7f..64bdf5d8a2192883e81cdefb693787177bc91af8 100644 (file)
@@ -9,7 +9,7 @@ set -e
 . /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_perms="640"
 dbc_dbfile_owner="www-data:www-data"
 dbc_dbfile_perms="0660"
 dbc_dbuser=roundcube
@@ -17,60 +17,49 @@ 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
+                       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)
+       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
+               # 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
+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 INDEX \`user_identities_index\` (\`user_id\`, \`del\`);
 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
-       }
+               fi
+           fi
+       fi
 
        CONFFILE=/etc/roundcube/main.inc.php
        touch $CONFFILE.ucftmp
@@ -104,7 +93,7 @@ EOF
        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
+               -e "s+^\(\$rcmail_config\['language'\] = \).*\(;\)\$+\1'${language}'\2+" >> $CONFFILE.ucftmp
 
        ucf --debconf-ok $CONFFILE.ucftmp $CONFFILE
        chown root:www-data $CONFFILE
@@ -117,11 +106,12 @@ EOF
 
        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
 
@@ -131,10 +121,12 @@ EOF
        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
@@ -143,7 +135,6 @@ EOF
        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
 
     ;;