#!/bin/sh set -e [ "$DEBIAN_SCRIPT_DEBUG" ] && set -x # Source debconf library. . /usr/share/debconf/confmodule case "$1" in configure) # continue below ;; abort-upgrade|abort-remove|abort-deconfigure) exit 0 ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 0 ;; esac PKG=squirrelmail-cn domainname=`dnsdomainname` FQDN=`hostname --fqdn` # Include CARNet functions . /usr/share/carnet-tools/functions.sh unset CP_ECHO_RETURN if [ -e /usr/share/apache2/apache2-maintscript-helper ]; then . /usr/share/apache2/apache2-maintscript-helper squirrelmail_enable() { cp_echo "CN: Enabling $PKG configuration for Apache2." return 0 } else cp_echo "CN: Could not load Apache 2.4 maintainer script helper." squirrelmail_enable() { return 1 } fi mv_old_backups () { # Clean up /etc, nove old jun^H^H^Hbackups where they belong local glob="$1.old.*-*-*.*:*:*" # ${glob%/*} (dirname $glob) does not work for files in root if [ -n "$(find ${glob%/*} -name ${glob##*/})" ]; then for i in $(find ${glob%/*} -name ${glob##*/}) do cp_backup_conffile "$i" "$2" rm -f "$i" done fi } # listconffiles () # # Recursively walks /etc/apache2/apache2.conf for Include and # IncludeOptional directives. # Returns all configfiles so defined. # listconffiles () { local i incs local base_dir="`dirname $1`" incs=`awk 'tolower($1) ~ /include(optional)?/ { sub("/$","/*",$2); print $2; }' $1` incs=`echo "$incs" | sed -r "s#^([^/])#${base_dir}/\1#"` if [ -n "$incs" ]; then for i in $incs; do if [ -e "$i" ]; then echo "`readlink -m -q $i`"; listconffiles "$i"; fi done fi } # genlocales () # # Update/generate localisation files from templates if locales-all # is not installed. # genlocales () { if [ -f /usr/lib/locales-all/supported.tar.lzma ] ; then cp_echo "CN: locales-all installed, skipping locales generation." else locale-gen fi } DATE=`date +%Y-%m-%d.%H:%M:%S` CONFDIR=/etc/squirrelmail CONF=$CONFDIR/apache.conf backup_name=squirrelmail_apache.conf mv_old_backups $CONF $backup_name # Check Apache2 web server configuration. # if [ -f "$CONF" ]; then # Backup first. if cp_check_and_backup "$CONF" "$backup_name"; then cp_echo "CN: Old $CONF saved as \"/var/backups/$backup_name.bak\"." fi # Check if we already modified apache.conf if ! egrep -q "^[ ]+RewriteRule \. https" "$CONF"; then echo -n "CN: Updating Apache2 configuration for Squirrelmail" perl -n -e 'print if ! m|^Alias\s*/webmail|' "$CONF" > $CONF.tmp cp-update -t $PKG $CONF.tmp <<-EOF # Force SSL for /webmail -> you can still use /squirrelmail Alias /webmail /usr/share/squirrelmail RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L] # # WARNING: This file is automatically included in each VirtualHost # entry you might have. Do not enable the VirtualHost example provided # in this file, it WILL break your Apache configuration. Copy the # VirtualHost section to the standard webserver configuration file # instead. # EOF cp_mv $CONF.tmp $CONF # This will break if cp_backup_conffile ever changes destination path if ! cmp -s "$CONF" "/var/backups/$backup_name.bak"; then echo "." cp_echo "CN: Updated Apache2 configuration for Squirrelmail." else echo "... no changes." fi fi fi hconf=/etc/apache2/apache2.conf sconf=/etc/apache2/sites-available/ssl # Remove obsolete symbolic link. # if [ "`readlink -q -m /etc/apache2/conf.d/$PKG.conf`" = "$CONF" ]; then rm -f /etc/apache2/conf.d/$PKG.conf fi # Include Squirrelmail apache.conf in Apache2 web server configuration, # but only if we are not present in Apache2 configuration at all. # apache2listconf=`listconffiles "$hconf" | grep "$CONF"` || true if [ -z "$apache2listconf" ]; then if [ ! -L /etc/apache2/conf-available/$PKG.conf -a ! -f /etc/apache2/conf-available/$PKG.conf ]; then ln -sf "$CONF" /etc/apache2/conf-available/$PKG.conf fi fi # Initial CARNet config tweaks. # CONF="$CONFDIR/config.php" TMPL="$CONFDIR/config_default.php" mv_old_backups "$CONF" "`basename $CONF`" if cp_check_and_backup "$CONF"; then cp_echo "CN: Old $CONF saved as \"/var/backups/${CONF##*/}.bak\"." fi # We use sed to replace old defaults with ours. # Must escape \$ because of shell expansion. # seddef="/^[ ]*\\\$org_logo[ ]*=/s/sm_logo\.jpg/sm_carnet_logo.png/; /^[ ]*\\\$org_logo[ ]*=/s/sm_logo\.png/sm_carnet_logo.png/; /^[ ]*\\\$org_logo[ ]*=/s/sm_carnet_logo\.jpg/sm_carnet_logo.png/; /^[ ]*\\\$domain[ ]*=/s/mydomain\.com/$domainname/; /^[ ]*\\\$default_charset[ ]*=/s/iso-8859-1/iso-8859-2/; /^[ ]*\\\$org_logo_width[ ]*=/s/308/0/; /^[ ]*\\\$org_logo_height[ ]*=/s/111/0/; /^[ ]*\\\$squirrelmail_default_language[ ]*=/s/en_US/hr_HR/; /^[ ]*\\\$data_dir[ ]*=/s/\.\.\/data\//\/var\/lib\/squirrelmail\/data\//; " # Left frame size to 220px. # $default_left_size = '220'; # db_get squirrelmail-cn/leftwidth || true if [ "$RET" = "true" ]; then seddef="$seddef/^[ ]*\\\$default_left_size[ ]*=/s/'[0-9]*'/'220'/; " fi # Change CSS file for Squirrelmail. # $theme_css = SM_PATH . 'themes/css/squirrelmail-cn.css'; # db_get squirrelmail-cn/themecss || true if [ "$RET" = "true" ]; then seddef="$seddef/^[ ]*\\\$theme_css[ ]*=/s/=.*/= SM_PATH . 'themes\/css\/squirrelmail-cn.css';/; " fi db_stop || true # Check for our dovecot package; if it is installed, assume it's used. # if dpkg -l dovecot-cn 2>/dev/null | grep -q '^ii'; then seddef="$seddef/^[ ]*\\\$imap_server_type[ ]*=/ {s/cyrus/dovecot/;s/other/dovecot/;s/uw/dovecot/} " fi cp_check_and_sed '.' "$seddef" "$CONF" || true # Check /etc/hostname and /etc/mailname, because # $domain = trim(implode('', file('/etc/'.(file_exists('/etc/mailname')?'mail':'host').'name'))); # nodots= nomailname= grep -q '\.' /etc/hostname || nodots=1 [ -e /etc/mailname ] || nomailname=1 # Check for hr_HR locale. # if [ -f /etc/locale.gen ]; then if ! egrep -q '^hr_HR ISO-8859-2\b' /etc/locale.gen; then echo "hr_HR ISO-8859-2" >> /etc/locale.gen cp_echo "CN: Added hr_HR locale to /etc/locale.gen." genlocales fi else echo "hr_HR ISO-8859-2" > /etc/locale.gen cp_echo "CN: /etc/locale.gen created." genlocales fi # Mailname info... # if [ "$nodots" -o "$nomailname" ]; then cp_echo cp_echo "CN: Make sure that /etc/mailname contains a fully qualified domain name" cp_echo "CN of this machine! Sending mail via squirrelmail might fail if the FQDN" cp_echo "CN cannot be found in either /etc/mailname or /etc/hostname." cp_echo "CN Read mailname(5) man page for details." cp_echo -mailonly "CN If this machine receives mail for both user@`hostname -f` and " cp_echo -mailonly "CN user@`hostname -d`, you can also put just the domain in there." cp_echo fi if squirrelmail_enable; then apache2_invoke enconf $PKG fi if ! apache2ctl configtest >/dev/null 2>&1; then cp_echo "CN: Your Apache2 configuration seems to be broken." cp_echo "CN: Please, check the service after the installation finishes!" fi # Mail root # cp_mail "$PKG" #DEBHELPER# exit 0