Workarounds for config file problems.
[carnet-upgrade.git] / usr / share / carnet-upgrade / functions.sh
index 54e8903..16f3d23 100644 (file)
@@ -391,16 +391,68 @@ restore_config () {
   local file
 
   for file in "$@"; do
-    # backup changes
-    if [ -e "$file" -a ! -e "$file.cn3-upgrade" ]; then
-      mv "$file" "$file.cn3-upgrade"
+    if [ -e "$file" ]; then
+      # backup changes
+      [ ! -e "$file.cn3-upgrade" ] && mv "$file" "$file.cn3-upgrade"
+
+      # install original
+      cp "/usr/share/carnet-upgrade/files/$file" "$file"
     fi
+  done
+}
 
-    # install original
-    cp "/usr/share/carnet-upgrade/files/$file" "$file"
+# restore modified config to their package defaults
+# so the upgrade doesn't complain so much
+restore_configs () {
+  restore_config /etc/bind/named.conf.options
+  restore_config /etc/default/ntpdate
+  restore_config /etc/default/oidentd
+  restore_config /etc/default/postgrey
+  restore_config /etc/default/saslauthd
+  restore_config /etc/default/slapd
+  restore_config /etc/dovecot/dovecot.conf
+  restore_config /etc/init.d/mysql
+  restore_config /etc/init.d/slapd
+  restore_config /etc/issue
+  restore_config /etc/issue.net
+  restore_config /etc/logrotate.d/mysql-server
+  restore_config /etc/mysql/my.cnf
+  restore_config /etc/ntp.conf
+  restore_config /etc/pam.d/login
+  restore_config /etc/php4/apache/php.ini
+  restore_config /etc/php4/cgi/php.ini
+  restore_config /etc/php4/cli/php.ini
+  restore_config /etc/postgrey/whitelist_clients
+  restore_config /etc/security/limits.conf
+  restore_config /etc/squirrelmail/apache.conf
+  restore_config /etc/sysctl.conf
+  restore_config /etc/vsftpd.conf
+  restore_config /etc/xinetd.conf
+
+  # orphaned config file - no owner
+  rm -f /etc/logcheck/ignore.d.server/imap
+
+  # aide switched to ucf, move old configs aside
+  for file in /etc/aide/aide.conf /etc/cron.daily/aide /etc/default/aide; do
+      [ ! -e "$file.cn3-upgrade" ] && mv "$file" "$file.cn3-upgrade"
+      rm -f "$file"
   done
 }
 
+# make a silent installation of carnet and srce keyrings
+install_keyrings () {
+  pkgadd carnet-keyring srce-keyring
+  pkgadd dpkg apt
+
+  dpkg-reconfigure carnet-keyring srce-keyring
+  update
+}
+
+# make a silent upgrade to new libc6
+upgrade_libc () {
+  DEBIAN_FRONTEND=noninteractive pkgadd libc6
+}
+
 # upgrade apache -> apache2
 upgrade_apache () {
   # bugfix for apache2-cn postinst
@@ -408,16 +460,55 @@ upgrade_apache () {
   touch /etc/apache2/httpd.conf
 
   pkgadd php4-odbc php4-xslt mktemp
-  pkgadd apache2 squirrelmail apache2-cn squirrelmail-cn
+
+  # apache2 conflicts with these
+  pkgrm apache aosi-aai aosi-www-aai php4-cn squirrelmail-cn
+
+  # apache2-cn postinst needs new mktemp
+  pkgadd apache2-cn php5-cn aosi-aai aosi-www-aai # squirrelmail-cn
 }
 
-# restore amavis init script
-restore_amavis_init () {
+upgrade_amavis () {
   # remove diversion
   if [ -L /etc/init.d/amavis -a -f /etc/init.d/amavis.amavisd-new ]; then
     rm -f /etc/init.d/amavis
-    dpkg-divert --remove --package amavis-cn --rename /etc/init.d/amavis --quiet
-  fi 
+    dpkg-divert --quiet --remove /etc/init.d/amavis
+  fi
+
+  # move old config aside
+  local conf=/etc/amavis/amavisd.conf
+  if [ -e $conf -a ! -e $conf.cn3-upgrade ]; then
+    mv $conf $conf.cn3-upgrade
+  fi
+
+  pkgadd amavisd-cn amavisd-new
+}
+
+# fix openldap-aai postinst user handling
+upgrade_openldap () {
+  apt-get -y$s install openldap-aai || true
+  chown -R openldap:openldap /var/lib/ldap
+  /etc/init.d/slapd restart
+  dpkg --configure -a
+}
+
+# workaround postfix-cn dependencies
+upgrade_postfix () {
+  pkgadd sasl2-bin
+  pkgadd postfix postfix-cn
+}
+
+# workaround dovecot-cn dependencies
+upgrade_dovecot () {
+  pkgadd dovecot-imapd dovecot-pop3d
+  pkgadd dovecot-cn
+}
+
+# workaround ntp-cn dependencies
+upgrade_ntp () {
+  pkgadd ntp ntpdate
+  # pkgrm ntp-server
+  pkgadd ntp-cn
 }
 
 # instaliraj zadnji freeradius; uvjeti u queue fileovima
@@ -473,11 +564,11 @@ fix_aidexfer_conf() {
 
 fix_issue () {
   cat > /etc/issue <<EOF
-Debian GNU/\\s 3.1 (CARNet Debian 2.1) \\n \\l
+Debian GNU/Linux 4.0 (CARNet Debian 3.0) \\n \\l
 EOF
 
   cat > /etc/issue.net <<EOF
-Debian GNU/%s 3.1 (CARNet Debian 2.1) %h
+Debian GNU/Linux 4.0 (CARNet Debian 3.0) %h
 EOF
 }