/etc/init.d/amavis restart
}
-# fix openldap-aai postinst user handling
-upgrade_openldap () {
+# handle freerdius config files upgrade
+upgrade_freeradius () {
+ local template config_new password realm
+
+ pkg freeradius-aai lt 2.1.3-0lenny0 || return 0
+
+ # handle static configs
+ restore_config freeradius-aai freeradius 2.1.3-0lenny0 \
+ /etc/freeradius/clients.conf \
+ /etc/freeradius/hints \
+ /etc/freeradius/ldap.attrmap \
+ /etc/freeradius/radiusd.conf
+
+ # handle template based configs
+ template=/usr/share/carnet-upgrade/files/etc/freeradius/eap.conf.template
+ config_new=$(mktemp /var/lib/carnet-upgrade/eap.conf.XXXXXX)
+ password=$(grep -s '^[[:space:]]*private_key_password[[:space:]]*=' \
+ /etc/freeradius/eap.conf)
+ cp $template $config_new
+ sed -i "s/.*#PASSWORD#.*/$password/" $config_new
+ if cmp -s $config_new /etc/freeradius/eap.conf >/dev/null; then
+ log "Restoring config file /etc/freeradius/eap.conf"
+ cp -v /usr/share/carnet-upgrade/files/etc/freeradius/eap.conf.restore \
+ /etc/freeradius/eap.conf
+ fi
+ rm -f $config_new
+
+ template=/usr/share/carnet-upgrade/files/etc/freeradius/proxy.conf.template
+ config_new=$(mktemp /var/lib/carnet-upgrade/proxy.conf.XXXXXX)
+ realm=$(sed -n '/^[[:space:]]*suffix[[:space:]]*/ {
+ s///; s/"//g; s/,dc=/./g; s/dc=//; s/.hr$//; p; q }' /etc/ldap/slapd.conf)
+ cp $template $config_new
+ sed -i "s/#REALM#/$realm/" $config_new
+ if cmp -s $config_new /etc/freeradius/proxy.conf >/dev/null; then
+ log "Restoring config file /etc/freeradius/proxy.conf"
+ cp -v /usr/share/carnet-upgrade/files/etc/freeradius/proxy.conf.restore \
+ /etc/freeradius/proxy.conf
+ fi
+ rm -f $config_new
+
+ # install the new packages
+ if ! apt-get -y install freeradius; then
+ # freeradius upgrade fails here, try to fix it by creating certificates
+ [ -x /etc/freeradius/certs/bootstrap ] && /etc/freeradius/certs/bootstrap
+
+ dpkg --configure -a
+ apt-get -y -f install
+ fi
+
+ # finally try to cleanup this mess
+ pkgadd freeradius-aai
+}
+
+# prepare for slapd upgrade (caused by freeradius installation)
+prepare_openldap () {
pkg openldap-aai lt 2.4 || return 0
# openldap-aai expects org.ldif to exists
if [ -f $ldif ]; then
cp -v $ldif $ldif_backup
fi
+}
+
+# fix openldap-aai postinst user handling
+upgrade_openldap () {
+ pkg openldap-aai lt 2.4 || return 0
# slapd postinst fails if move_old_database is false
echo 'slapd slapd/move_old_database boolean true' | debconf-set-selections
pkgadd slapd
# slapd removes org.ldif during switch from ldap -> openldap user
+ local ldif=/var/lib/ldap/org.ldif
+ local ldif_backup=/var/lib/carnet-upgrade/org.ldif
if [ -f $ldif_backup -a ! -f $ldif ]; then
cp -v $ldif_backup $ldif
fi