Prva inacica paketa za Debian jessie distribuciju.
[squirrelmail-cn.git] / debian / postinst
old mode 100644 (file)
new mode 100755 (executable)
index 1f77371..1f30bd6
@@ -2,24 +2,24 @@
 
 set -e
 
-[ "$DEBIAN_SCRIPT_DEBUG" ] && set -x 
+[ "$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
-               ;;
+    configure)
+        # continue below
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+        exit 0
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 0
+        ;;
 esac
 
 
@@ -31,36 +31,53 @@ FQDN=`hostname --fqdn`
 . /usr/share/carnet-tools/functions.sh
 unset CP_ECHO_RETURN
 
-mv_old_backups () {
 
-       # Clean up /etc, nove old jun^H^H^Hbackups where they belong
-       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
+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 directives.
+#   Recursively walks /etc/apache2/apache2.conf for Include and
+#   IncludeOptional directives.
 #   Returns all configfiles so defined.
 #
 listconffiles () {
-
-        local i incs
-
-        incs=`awk 'tolower($1) == "include" { sub("/$","/*",$2); print $2; }' $1`
-        if [ -n "$incs" ]; then
-            for i in $incs; do
-                if [ -e "$i" ]; then echo "$i"; listconffiles "$i"; fi
-            done
-        fi
+    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 ()
@@ -69,16 +86,14 @@ listconffiles () {
 #   is not installed.
 #
 genlocales () {
-
-        if [ -f /usr/lib/locales-all/supported.tar.lzma ] ; then
-            cp_echo "CN: locales-all installed, skipping locales generation."
-        else
-            /usr/sbin/locale-gen
-        fi
+    if [ -f /usr/lib/locales-all/supported.tar.lzma ] ; then
+        cp_echo "CN: locales-all installed, skipping locales generation."
+    else
+        locale-gen
+    fi
 }
 
 
-need_restart=0
 DATE=`date +%Y-%m-%d.%H:%M:%S`
 CONFDIR=/etc/squirrelmail
 CONF=$CONFDIR/apache.conf
@@ -90,70 +105,69 @@ mv_old_backups $CONF $backup_name
 #
 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 squirrelmail-cn $CONF.tmp <<-EOF
-       # Force SSL for /webmail -> you can still use /squirrelmail
-       Alias /webmail /usr/share/squirrelmail
-       
-       <IfModule mod_rewrite.c>
-         <IfModule mod_ssl.c>
-           <Location /webmail>
-             RewriteEngine on
-             RewriteCond %{HTTPS} !=on
-             RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
-           </Location>
-         </IfModule>
-       </IfModule>
-       
-       #
-       # 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."
-                       need_restart=1
-               else
-                       echo "... no changes."
-               fi
+    # 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
+
+<IfModule mod_rewrite.c>
+  <IfModule mod_ssl.c>
+    <Location /webmail>
+      RewriteEngine on
+      RewriteCond %{HTTPS} !=on
+      RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
+    </Location>
+  </IfModule>
+</IfModule>
+
+#
+# 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
 
-# Include Squirrelmail apache.conf in Apache2 web server configuration
-# (directory /etc/apache2/conf.d/), but only if we are not present in 
-# Apache2 configuration at all.
+# Remove obsolete symbolic link.
 #
-# We're not using listconffiles from apache-common Debian package.
-# apache-common is no longer available in Debian Lenny. We're using
-# listconffiles() function instead.
+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
-apache2squirrel=`ls -l /etc/apache2/conf.d/ | grep "$CONF"` || true
 
-if [ -z "$apache2listconf" -a -z "$apache2squirrel" ]; then
-       ln -s "$CONF" /etc/apache2/conf.d/squirrelmail-cn.conf
-       need_restart=1
+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
 
 
@@ -163,30 +177,30 @@ 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\"."
+    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\//;
-       "
+        /^[    ]*\\\$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'/;
-       "
+    seddef="$seddef/^[         ]*\\\$default_left_size[        ]*=/s/'[0-9]*'/'220'/;
+        "
 fi
 
 # Change CSS file for Squirrelmail.
@@ -194,8 +208,8 @@ fi
 #
 db_get squirrelmail-cn/themecss || true
 if [ "$RET" = "true" ]; then
-  seddef="$seddef/^[   ]*\\\$theme_css[        ]*=/s/=.*/= SM_PATH . 'themes\/css\/squirrelmail-cn.css';/;
-       "
+    seddef="$seddef/^[         ]*\\\$theme_css[        ]*=/s/=.*/= SM_PATH . 'themes\/css\/squirrelmail-cn.css';/;
+        "
 fi
 
 db_stop || true
@@ -203,15 +217,11 @@ 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/}
-       "
+    seddef="$seddef/^[         ]*\\\$imap_server_type[         ]*=/ {s/cyrus/dovecot/;s/other/dovecot/;s/uw/dovecot/}
+        "
 fi
 
-# Would there be any changes, perhaps?
-#
-if cp_check_and_sed '.' "$seddef" "$CONF"; then
-       need_restart=1
-fi
+cp_check_and_sed '.' "$seddef" "$CONF" || true
 
 
 # Check /etc/hostname and /etc/mailname, because
@@ -226,49 +236,44 @@ grep -q '\.' /etc/hostname || nodots=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
-            need_restart=1
-        fi
-else
-        echo "hr_HR ISO-8859-2" > /etc/locale.gen
-        cp_echo "CN: /etc/locale.gen created."
+    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
-        need_restart=1
+    fi
+else
+    echo "hr_HR ISO-8859-2" > /etc/locale.gen
+    cp_echo "CN: /etc/locale.gen created."
+    genlocales
 fi
 
 
-# Check Apache2 web server for restart.
+# Mailname info...
 #
-if [ $need_restart -eq 1 ]; then
-
-       # Restart Apache2 web server.
-       if [ -x "/etc/init.d/apache2" ]; then
-               if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
-                    invoke-rc.d apache2 restart || exit $?
-               else
-                    /etc/init.d/apache2 restart || exit $?
-               fi
-       fi
+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
 
-# 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."
+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