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# |