+
+}
+
+# upgrade the IMAP server
+upgrade_dovecot() {
+ # Funkcija koju je dodao Valentin da popravi propuste u dovecot-cn
+ # Mičem zaostale konfiguracije iz conf.d i izlazim prije njegovih akcija jer ubiju certifikate
+
+ test -f /etc/dovecot/conf.d/95-cn6-upgrade.conf && mv /etc/dovecot/conf.d/95-cn6-upgrade.conf* /var/backups || true
+ test -f /etc/dovecot/conf.d/95-cn7-upgrade.conf && mv /etc/dovecot/conf.d/95-cn7-upgrade.conf* /var/backups || true
+ test -f /etc/dovecot/conf.d/95-cn8-upgrade.conf && mv /etc/dovecot/conf.d/95-cn8-upgrade.conf* /var/backups || true
+ test -f /etc/dovecot/conf.d/95-cn9-upgrade.conf && mv /etc/dovecot/conf.d/95-cn9-upgrade.conf* /var/backups || true
+
+ return 0
+
+# ostatak se nikada ne izvrši
+
+ local local_conf=/etc/dovecot/conf.d/95-${backup_ext}.conf
+
+ if [ -f /etc/dovecot/conf.d/95-local -a ! -f $local_conf ]; then
+ mv /etc/dovecot/conf.d/95-local $local_conf
+ sed -i 's/\/usr\/lib\/dovecot\/modules\/imap/\/usr\/lib\/dovecot\/modules/g' $local_conf
+ /etc/init.d/dovecot restart
+ fi
+
+ if [ ! -f $local_conf ]; then
+ pkgrm dovecot-cn
+
+ # restore config
+ if [ ! -f /etc/dovecot/dovecot.conf.$backup_ext ]; then
+ mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.$backup_ext
+ cp /usr/share/dovecot/dovecot.conf /etc/dovecot/dovecot.conf
+ fi
+
+ # copy SSL certificates
+ OLD_SSL_CERT="/etc/ssl/certs/dovecot.pem"
+ OLD_SSL_KEY="/etc/ssl/private/dovecot.pem"
+ SSL_CERT="/etc/dovecot/dovecot.pem"
+ SSL_KEY="/etc/dovecot/private/dovecot.pem"
+ if [ -f $OLD_SSL_CERT -a -f $OLD_SSL_KEY -a ! -f $SSL_CERT -a ! -f $SSL_KEY ]; then
+ if [ ! -e /etc/dovecot/private ]; then
+ install -d -o root -g root -m0700 /etc/dovecot/private
+ fi
+
+ cp -av $OLD_SSL_CERT $SSL_CERT
+ cp -av $OLD_SSL_KEY $SSL_KEY
+
+ chown root:dovecot $SSL_CERT
+ chmod 0644 $SSL_CERT
+ chown root:dovecot $SSL_KEY
+ chmod 0600 $SSL_KEY
+ fi
+
+ # install new version and restore local changes
+ pkgadd dovecot-core
+ doveconf -n -c /etc/dovecot/dovecot.conf.$backup_ext > $local_conf
+ sed -i 's/\/user\/lib\/dovecot\/modules\/imap/\/usr\/lib\/dovecot\/modules/g' $local_conf
+
+ pkgadd dovecot-cn
+ fi
+}
+
+# upgrade bind separately so DNS is not down for too long
+# or breaks postinst scripts of other cn packages that depend on
+# working resolver
+upgrade_bind() {
+ pkgadd bind9-cn
+}
+
+# handle fail2ban upgrade due to error:
+# trying to overwrite '/etc/fail2ban/filter.d/dovecot.conf', which is also in package fail2ban-cn
+upgrade_fail2ban() {
+ if pkg fail2ban-cn && dpkg -L fail2ban-cn | grep -qF dovecot.conf; then
+ pkgrm fail2ban-cn
+ pkgadd fail2ban
+ pkgadd fail2ban-cn
+ fi
+}
+
+# manual upgrade of mailman to avoid two copies of mailman running
+# first started by python upgrade and second started by mailman itself
+upgrade_mailman() {
+ if pkg mailman-cn lt 2:2.1.15~cn0; then
+ /etc/init.d/mailman stop || true
+ pkgadd python
+ pkgadd mailman mailman-cn
+ fi
+}
+
+# manual upgrade of kernel due to new packet name
+upgrade_kernel() {
+ if pkg kernel-2.6-cn; then
+ pkgrm kernel-2.6-cn
+
+ if pkg grub-pc; then
+ pkgadd kernel-cn grub-pc
+ else
+ pkgadd kernel-cn
+ fi
+ fi
+}
+
+get_variable () {
+ local name=$1 file=$2 val
+
+ if [ -f "$file" ]; then
+ val=$(sed -n "/^[[:space:]]*$name[[:space:]]*=/s/[[:space:]]*//gp" $file)
+ val=${val#*=}
+ fi
+
+ echo $val
+}
+
+# switch to rsyslog
+upgrade_syslog() {
+ # libc6-dev prevents upgrade
+ if pkg libc6-dev; then
+ pkgrm libc6-dev
+ fi
+
+ pkgadd rsyslog
+ dpkg -P sysklogd klogd > /dev/null 2>&1
+}
+
+# restore munin configs for silent upgrade
+upgrade_munin () {
+ local config backup hostname domain
+
+ # new htmldir location
+ if [ -d /var/www/munin -a ! -e /var/cache/munin/www ]; then
+ mkdir -p /var/cache/munin
+ mv /var/www/munin /var/cache/munin/www
+ fi
+
+ for pkg_name in munin munin-node; do
+ pkg $pkg_name lt '1.4.5-3' || continue
+
+ config=/etc/munin/$pkg_name.conf
+ backup=$config.$backup_ext
+ if [ -f $config -a ! -f $backup ]; then
+ hostname=$(hostname)
+ domain=$(hostname --domain)
+
+ cp -av $config $backup
+ check_and_sed "$hostname.$domain" \
+ "s/$hostname.$domain/localhost.localdomain/g" $config
+ fi
+ pkgadd $pkg_name
+ done
+
+ # force localhost -> hostname replacement in config files
+ pkgadd munin-cn
+ dpkg-reconfigure munin-cn
+}
+
+check_archives_space() {
+ local available_disk_space archives_size
+ available_disk_space=$(free_space /var/cache/apt/archives/)
+ archives_size=$(download_size dist-upgrade)
+
+ if [ $? -ne 0 ]; then
+ log "Failed to get download size, skipping check."
+ return 0
+ fi
+
+ log "Archives space: ${available_disk_space}MB"
+ log "Download size: ${archives_size}MB"
+
+ if [ $available_disk_space -lt $archives_size ]; then
+ log "carnet-upgrade aborted: not enough space in /var/cache/apt/archives/ (have ${available_disk_space}MB, need ${archives_size}MB)"
+ notice "Premalo slobodnog mjesta u /var/cache/apt/archives/ za skidanje paketa (potrebno je barem ${archives_size}MB). Procitajte poglavlje 'Izvanredne situacije' u dokumentaciji."
+ exit 1
+ fi