#!/bin/sh

set -e

if [ -n "$S9Y_DBG" ]; then
#  echo "now debugging $0 $@"
  set -x
fi

hook_apache2_install_0 () {
    apache2ctl configtest
    if [ "$?" -ne 0 ] ; then
        echo "[!] Apache config failed, please check"
        return 1
    fi
}
hook_lighttpd_install_0 () {
    lighty-enable-mod $@
}

run_hook () {
    local webserver=$1
    shift
    local mode=$1
    shift
    local stage=$1
    shift
    
    hook_${webserver}_${mode}${stage:+_$stage} $@ >/dev/null 2>&1
    if [ "$?" -ne 0 ] ; then
        echo $0: "Could not run hook hook_${webserver}_${mode}${stage:+_$stage} (probably does not exist)"
    fi
}

# inspired from phpbb3 postinst
install_webserver_config () {
    local package=$1
    local webserver=$2
    local prio=$3

    local confdir
    local wfile

    case "$webserver" in
        "lighttpd" )
            confdir=conf-available
            wfile=${prio}-$package.conf
            ;;
        "apache2" )
            confdir=conf.d
            wfile=$package.conf
            ;;
        * )
            echo Webserver $webserver is not supported.
            exit 1
            ;;
    esac
    if [ -d /etc/$webserver/$confdir ] && [ ! -L /etc/$webserver/$confdir/$wfile ] ; then
        if [ ! -x /usr/sbin/$webserver ] ; then
            echo "$webserver not installed, skipping"
        else
            ln -s ../../$package/$webserver.conf /etc/$webserver/$confdir/$wfile
            run_hook $webserver install 0 $package
        fi
    fi
}

reload_webserver () {
    local webserver=$1

    if [ -x /usr/sbin/invoke-rc.d ]; then
        invoke-rc.d $webserver reload 3>/dev/null || true
    else
        /etc/init.d/$webserver reload 3>/dev/null || true
    fi
}

postgres_update_seqs () {
    if db_get serendipity/dbconfig-install && [ "$RET" = "true" ]; then
        db_get serendipity/database-type
        if [ "$RET" = "pgsql" ]; then
            db_get serendipity/db/dbname
            /usr/share/serendipity/postgres_update_seqs.sh /usr/share/dbconfig-common/data/serendipity/install/pgsql | su - postgres -c "psql -d $RET -q >/dev/null"
        fi
    fi
}

. /usr/share/debconf/confmodule
. /usr/share/dbconfig-common/dpkg/postinst

if [ "$1" = "configure" ]; then
    dbc_generate_include="php:/etc/serendipity/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"
    
    if ! dbc_go serendipity $@ ; then
        echo 'dbc_go (postinst) failed!'
    fi
    postgres_update_seqs

# do special stuff on update
    UCF=ucf
    if dpkg --compare-versions "$2" lt-nl "1.5.3-1"; then
        for i in $(find /etc/apache2/conf.d -type l); do 
            [ "$(readlink -fn $i)" = "/etc/serendipity/apache.conf" ] && rm $i
        done
        [ -f /etc/serendipity/apache.conf ] && mv /etc/serendipity/apache.conf /etc/serendipity/apache2.conf
        ucft=$(mktemp -t)
        echo "3761ea8f307cf83362e96475348d1df2  /etc/serendipity/apache2.conf" > $ucft
        UCF="ucf --sum-file $ucft"

        # copied from rules because it seems not to apply on upgrade
        chmod u=rwx,g=wx,o= \
            /var/cache/serendipity/templates \
            /var/lib/serendipity/archives
        chmod u=rwx,g=rwx,o= \
            /var/lib/serendipity/uploads
    fi

# lend from phpbb3 - configure and restart webserver(s) - the quick variant without debconf
    supported_webservers_auto="apache2"
    for webserver in ${supported_webservers_auto}; do
        webserver=${webserver%,}
        test -x /usr/sbin/$webserver || continue
        $UCF --debconf-ok --three-way /usr/share/doc/serendipity/examples/$webserver.conf /etc/serendipity/$webserver.conf
        ucfr serendipity /etc/serendipity/$webserver.conf
        install_webserver_config serendipity $webserver 50
        reload="$reload $webserver"
    done
    for webserver in $reload; do
        webserver=${webserver%,}
        reload_webserver $webserver
    done
    echo

# Create dummy htaccess, if none exists yet
    if [ ! -e /var/lib/serendipity/htaccess ]; then
        touch /var/lib/serendipity/htaccess
        chgrp www-data /var/lib/serendipity/htaccess
        chmod 0660 /var/lib/serendipity/htaccess
    fi

# clean up special upgrade actions
    if dpkg --compare-versions "$2" lt-nl "1.5.3-1"; then
        rm $ucft
    fi

# purge the caches
    rm -f /var/cache/serendipity/templates/*
fi

#DEBHELPER#
