X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=debian%2Fpostinst;h=1f77371fe89b197ea650d5f5fdff40dc8eee8237;hb=5c9cb61bd99bcc06acd6d775ce2ab28175f9fe09;hp=d387dabd7f871409ce06e7b0d534e6fdcb82c66d;hpb=b7fe69afa6e818bca5ff957fe212b5e3c6f2b075;p=squirrelmail-cn.git diff --git a/debian/postinst b/debian/postinst index d387dab..1f77371 100644 --- a/debian/postinst +++ b/debian/postinst @@ -4,6 +4,9 @@ set -e [ "$DEBIAN_SCRIPT_DEBUG" ] && set -x +# Source debconf library. +. /usr/share/debconf/confmodule + case "$1" in configure) # continue below @@ -28,7 +31,7 @@ FQDN=`hostname --fqdn` . /usr/share/carnet-tools/functions.sh unset CP_ECHO_RETURN -mv_old_backups() { +mv_old_backups () { # Clean up /etc, nove old jun^H^H^Hbackups where they belong glob="$1.old.*-*-*.*:*:*" @@ -43,8 +46,39 @@ mv_old_backups() { fi } +# listconffiles () +# +# Recursively walks /etc/apache2/apache2.conf for Include 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 +} + +# 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 + /usr/sbin/locale-gen + fi +} + -reload="" +need_restart=0 DATE=`date +%Y-%m-%d.%H:%M:%S` CONFDIR=/etc/squirrelmail CONF=$CONFDIR/apache.conf @@ -95,7 +129,7 @@ if [ -f "$CONF" ]; then if ! cmp -s "$CONF" "/var/backups/$backup_name.bak"; then echo "." cp_echo "CN: Updated Apache2 configuration for Squirrelmail." - reload="reload" + need_restart=1 else echo "... no changes." fi @@ -110,15 +144,16 @@ sconf=/etc/apache2/sites-available/ssl # (directory /etc/apache2/conf.d/), but only if we are not present in # Apache2 configuration at all. # -# We're using listconffiles from apache-common Debian package. Yes, -# it works with Apache2 configurations too. +# 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. # -apache2listconf=`/usr/share/apache/listconffiles -V $hconf | tr '' ' ' | grep "$CONF"` || true +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 - reload=reload + need_restart=1 fi @@ -145,13 +180,26 @@ seddef="/^[ ]*\\\$org_logo[ ]*=/s/sm_logo\.jpg/sm_carnet_logo.png/; /^[ ]*\\\$data_dir[ ]*=/s/\.\.\/data\//\/var\/lib\/squirrelmail\/data\//; " -# Check for our uw-imap package; if it is installed, assume it's used. +# 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'; # -if dpkg -l uw-imap-ssl-cn 2>/dev/null | grep -q '^ii'; then - seddef="$seddef/^[ ]*\\\$imap_server_type[ ]*=/ {s/cyrus/uw/;s/other/uw/;} +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 @@ -162,107 +210,51 @@ fi # Would there be any changes, perhaps? # if cp_check_and_sed '.' "$seddef" "$CONF"; then - changed=1 -fi - -if grep -q x62 "$CONF"; then - really_old_config=1 -fi - - -# -# MORE FIXES... -# - -# Global $config_version; -# -if ! egrep -q '^[ ]*global[ ]+\$config_version' "$CONF"; then - really_old_config=1 - #echo "CN: Adding \"global \$config_version;\" to config.php." - perl -p -e 'print "global \$config_version;\n" if (/^\s*\$config_version/);' \ - "$CONF" > "$CONF.tmp" - cp_mv "$CONF.tmp" "$CONF" + need_restart=1 fi -# This was missing on some machines -# -if ! egrep -q '^[ ]*\$allow_thread_sort' $CONF; then - to_add='\$allow_thread_sort = false;\n' - cp_echo "CN: Adding \"\$allow_thread_sort\"." - perl -p -e 'if (! $a && /^\s*\$edit_name/) { - $_ .= "'"$to_add"'"; $a = 1; } - elsif (! $a && /^\?>/) { - $_ = "'"$to_add"'" . $_; $a = 1; }' \ - $CONF > "$CONF.tmp" - cp_mv "$CONF.tmp" "$CONF" -fi -# Shouldn't use /etc/hostname, especially if it contains only the host part -# replace -# $domain = implode('', file('/etc/hostname')); -# with -# $domain = trim(implode('',file('/etc/'.(file_exists('/etc/mailname')?'mail':'host').'name'))); +# Check /etc/hostname and /etc/mailname, because +# $domain = trim(implode('', file('/etc/'.(file_exists('/etc/mailname')?'mail':'host').'name'))); # -if egrep -q "^[[:blank:]]*\\\$domain[[:blank:]]*=[[:blank:]]*implode\\('',[[:blank:]]*file\\('/etc/hostname'\\)\\);" $CONF; then - nodots= - nomailname= - grep -q '\.' /etc/hostname || nodots=1 - [ -e /etc/mailname ] || nomailname=1 - if cp_check_and_sed "^[[:blank:]]*\\\$domain[[:blank:]]*=[[:blank:]]*implode\\('',[[:blank:]]*file\\('/etc/hostname'\\)\\);" \ - "s|^[ \t]*\\\$domain[ \t]*=[ \t]*implode('',[ \t]*file('/etc/hostname'));|\$domain = trim(implode('',file('/etc/'.(file_exists('/etc/mailname')?'mail':'host').'name')));|" \ - $CONF; then - cp_echo "CN: config.php updated to use either /etc/mailname or /etc/hostname" - fi -fi +nodots= +nomailname= +grep -q '\.' /etc/hostname || nodots=1 +[ -e /etc/mailname ] || nomailname=1 -# Generate hr_HR locale if needed. +# Check for hr_HR locale. # -if ! egrep -q '^hr_HR ISO-8859-2\b' /etc/locale.gen; then - if [ -f /etc/locale.gen ]; then - echo "hr_HR ISO-8859-2" >> /etc/locale.gen - cp_echo "CN: Added hr_HR locale to /etc/locale.gen." - else - echo "hr_HR ISO-8859-2" > /etc/locale.gen - cp_echo "CN: /etc/locale.gen created." - fi - dpkg-reconfigure -f noninteractive locales +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." + genlocales + need_restart=1 fi -# Check Apache2 web server for restart/reload. +# Check Apache2 web server for restart. # -if [ -n "$reload" ]; then +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 "$reload" || exit $? + invoke-rc.d apache2 restart || exit $? else - /etc/init.d/apache2 "$reload" || exit $? + /etc/init.d/apache2 restart || exit $? fi fi fi -# Warn user of really old config file -# -if [ "$really_old_config" ]; then - echo - echo "CN: You have a really old config file." - cp_echo -m "CN: Old \"$CONF\" detected during installation." - cp_echo "CN The known bad options were fixed, but it is _strongly_ recommended that" - cp_echo "CN you either copy over the new template, and reconfigure this package" - cp_echo - cp_echo " cp $TMPL $CONF" - cp_echo " dpkg-reconfigure squirrelmail-cn" - cp_echo - cp_echo "CN or use squirrelmail-configure (conf.pl) to generate a fresh" - cp_echo " ${CONF} file." - echo -fi - - # Mailname info... # if [ "$nodots" -o "$nomailname" ]; then