diff options
Diffstat (limited to 'debian/phpbb3.postinst')
| -rwxr-xr-x | debian/phpbb3.postinst | 184 | 
1 files changed, 184 insertions, 0 deletions
| diff --git a/debian/phpbb3.postinst b/debian/phpbb3.postinst new file mode 100755 index 0000000..6445141 --- /dev/null +++ b/debian/phpbb3.postinst @@ -0,0 +1,184 @@ +#!/bin/sh +# postinst script for phpbb3 +# By Jeroen van Wolffelaar <jeroen@wolffelaar.nl> and J.M. Roth <jmroth@iip.lu> +# +# possible calls: configure, abort-upgrade, abort-remove, abort-deconfigure + +set -e + +if [ "$PB3DEBUG" = "maint" ]; then +  echo "[maint] $0 $@" >&2 +  dbc_debug=true +fi +if [ "$PB3DEBUG" = "sh" ]; then +  set -x +fi + +randminmax () { +    local min=$1 +    local max=$2 +    local var=0 +    while ([ "$var" -le $min ] || [ "$var" -ge $max ]); do +        var=$(dd if=/dev/urandom count=1 2>/dev/null | cksum | cut -c1-2) +    done +    echo $var +} + + +if [ "$1" = "configure" ]; then + +    ## libraries +    . /usr/share/phpbb3/maint-libs/webapps-config +    . /usr/share/phpbb3/maint-libs/dbapps-lib + +    . /usr/share/debconf/confmodule # calls phpbb3.config +    . /usr/share/dbconfig-common/dpkg/postinst +    db_version 2.0 + +# have to do this here since we cannot convert from a directory +# to a link by simple means between versions +    ln -fs /var/lib/phpbb3/images /usr/share/phpbb3/www/ + +## set random background for captcha (J.M.Roth 2010) +    RANDX=$(randminmax 10 25) +    RANDY=$(randminmax 5 25) +    DBCCP=/usr/share/dbconfig-common/data/phpbb3 +    cp -a /usr/share/phpbb3/dbconfig-common/data/phpbb3 /usr/share/dbconfig-common/data/ +    for i in mysql pgsql sqlite; do +        sed -i "s/@DEB_CAPTCHA_X_RAND@/${RANDX}/" $DBCCP/install/$i +        sed -i "s/@DEB_CAPTCHA_Y_RAND@/${RANDY}/" $DBCCP/install/$i +    done + +    UCF=ucf + +## DATABASE SETUP +    dbc_generate_include="php:/etc/phpbb3/database.inc.php" +    dbc_generate_include_owner="root:www-data" +    dbc_generate_include_perms="0640" +# for sqlite: make sure that the database is readable for the webserver +    dbc_dbfile_owner="root:www-data" +    dbc_dbfile_perms="0660" + +dc_dbg + +    if ! dbc_go phpbb3 $@ ; then +        echo 'Automatic configuration using dbconfig-common failed!' +    else +        postgres_update_seqs +# act on the provided admin password +        if dc_true phpbb3/dbconfig-install ; then +            pass=$(dc_get phpbb3/admin-pass) +            if [ -n "$pass" ] ; then +                echo "Setting admin password" >&2 +                run_sql "UPDATE phpbb_users SET user_password='$(_md5 $pass)' WHERE username='admin';" +                if [ "$ERR" != "fail" ] && [ "${DEBIAN_FRONTEND}" = "noninteractive" ]; then +                    echo "Admin password set to $pass" >&2 +                fi +            fi +            dc_forget phpbb3/admin-pass +            dc_forget phpbb3/admin-pass-confirm +        fi +    fi + +dc_dbg + +# /etc/apache2/conf.d/phpbb3.conf symlink moved to /etc/apache2/conf-available +    if dpkg --compare-versions "$2" lt-nl "3.0.11-5"; then +        [ -L /etc/apache2/conf.d/phpbb3.conf ] && rm /etc/apache2/conf.d/phpbb3.conf +    fi + +## WEBSERVER SETUP +# initially inspired from phpmyadmin's postinst +    webservers=$(dc_get phpbb3/httpd) +    reload="" + +    # determine inexistant, removed, added and non-changed webservers +    webservers_old_tmp=$(dc_get phpbb3/httpd-old) +    db_reset phpbb3/httpd-old +    db_unregister phpbb3/httpd-old +    # remove servers from list that don't exist anymore anyhow +    # db_reset in phpbb3.config should have sufficed +    #webservers_old="" +    #for ow in $webservers_old_tmp; do +    #    ow=${ow%,} +    #    for aw in $AVAILABLE_WEBSERVERS; do +    #        aw=${aw%,} +    #        if [ "$ow" = "$aw" ] ; then +    #            webservers_old="$webservers_old $ow" +    #            break +    #        fi +    #    done +    #done +    # find removed servers (elements from old list not in new list) +    for ow in $webservers_old_tmp; do +        ow=${ow%,} +        for w in $webservers; do +            w=${w%,} +            [ "$ow" = "$w" ] && continue 2 +        done +        reload="$reload $ow" +    done +    # find added servers (elements from new list not in old list) +    for w in $webservers; do +        w=${w%,} +        for ow in $webservers_old_tmp; do +            ow=${ow%,} +            [ "$ow" = "$w" ] && continue 2 +        done +        reload="$reload $w" +    done +    # if we're all but reconfigured, +    # everything that is selected has to be reloaded anyhow +    if [ -z "$DEBCONF_RECONFIGURE" ] ; then +        for webserver in $webservers; do +            webserver=${webserver%,} +            reload="$reload $webserver" +        done +    fi + +    ## to correctly account for the case in which +    ## webservers have been chosen to be NO LONGER configured +    ## (e.g. via dpkg-reconfigure) +    # first, remove all symlinks +    purge_webserver_config phpbb3 all 50 +    # then restore all selected configs +    for webserver in $webservers; do +        webserver=${webserver%,} +        test -x /usr/sbin/$webserver || continue +        $UCF --debconf-ok --three-way /usr/share/phpbb3/webserver-examples/$webserver.conf /etc/phpbb3/$webserver.conf +        ucfr phpbb3 /etc/phpbb3/$webserver.conf +        install_webserver_config phpbb3 $webserver 50 +    done +    # finally reload the changed servers +    for r in $reload; do +        reload_webserver phpbb3 $r +    done + +    if [ ! -h /usr/share/phpbb3/www/install-* ]; then +	ln -s /usr/share/phpbb3/install /usr/share/phpbb3/www/install-$(</dev/urandom tr -dc A-NP-Za-km-z0-9 | head -c 10) +    fi + +# set permissions that are appropriate for multisite too +    chgrp www-data /var/lib/phpbb3/images/avatars/upload +    chmod g=wx,o= /var/lib/phpbb3/images/avatars/upload +    chmod 0755 /var/lib/phpbb3/images/ranks +    chgrp -R www-data /var/cache/phpbb3/cache +    for i in $(find /var/cache/phpbb3/cache -type d); do +	chmod g=rwx,o= $i +    done +    chgrp www-data /var/lib/phpbb3/files +    chmod g=wx,o= /var/lib/phpbb3/files +    chgrp www-data /var/lib/phpbb3/store +    chmod g=wx,o= /var/lib/phpbb3/store +fi + +# Replace example directory with symlink +# cannot be dropped before Jessie gets released +docdir="/usr/share/doc/phpbb3/examples" +if [ -d $docdir ] && [ ! -L $docdir ]; then +    if rmdir $docdir 2>/dev/null; then +        ln -sf ../../phpbb3/webserver-examples $docdir +    fi +fi + +#DEBHELPER# | 
