X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=7b9eae40e8cd9ac829431395352eebed83514ff0;hb=6a3a2c168191ec411b938cc271535e692003dc2c;hp=f68c54bc5a6955a87e246f38106054e75a73d51f;hpb=c6c3f07205a4eed5df6cf6d9d30ab27120f3e490;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index f68c54b..7b9eae4 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -487,7 +487,6 @@ restore_config () { restore_configs () { pkg base-files lt 4 && restore_config /etc/issue /etc/issue.net pkg bind9 lt 1:9.3.4 && restore_config /etc/bind/named.conf.options - pkg dovecot-common lt 1.0 && restore_config /etc/dovecot/dovecot.conf pkg libpam-modules lt 0.79 && restore_config /etc/security/limits.conf pkg login lt 1:4.0.18.1 && restore_config /etc/pam.d/login pkg mysql-server lt 5.0.3 && restore_config /etc/init.d/mysql \ @@ -654,6 +653,50 @@ upgrade_openldap () { dpkg --configure -a # try postinst again } +get_variable () { + name=$1 + file=$2 + + if [ -f "$file" ]; then + val=$(sed -n "/^[[:space:]]*$name[[:space:]]*=/s/[[:space:]]*//gp" $file) + val=${val#*=} + fi + + echo $val +} + +# preserve mail location on upgrade +upgrade_dovecot () { + local default_mail_env mail_location + + # check if already upgraded + if ! pkg dovecot-common lt 1.0; then + return + fi + + # save old mail location + default_mail_env=$(get_variable default_mail_env /etc/dovecot/dovecot.conf) + + # silently upgrade package + restore_config /etc/dovecot/dovecot.conf + pkgadd dovecot-cn + + # insert old mail location + mail_location=$(get_variable mail_location /etc/dovecot/dovecot.conf) + if [ "$default_mail_env" -a ! "$mail_location" ]; then + check_and_sed '^#mail_location[[:space:]]*=' \ + "s|#mail_location[[:space:]]*=.*|mail_location = $default_mail_env|" /etc/dovecot/dovecot.conf || return 0 + + if [ -x /etc/init.d/dovecot ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + /usr/sbin/invoke-rc.d dovecot restart + else + /etc/init.d/dovecot restart + fi + fi + fi +} + # fix /etc/dpkg/dpkg.cfg comment_force_overwrite () { if [ -f /etc/dpkg/dpkg.cfg ]; then