Handle radiusd.conf upgrade.
[carnet-upgrade.git] / src / functions.sh
index cbb8be2..b29e43e 100644 (file)
@@ -1039,7 +1039,7 @@ upgrade_amavis () {
 
 # handle freerdius config files upgrade
 upgrade_freeradius () {
-  local template config_new password realm
+  local template config_new password realm hostname basedn
 
   pkg freeradius-aai lt 2.1.3-0lenny0 || return 0
 
@@ -1047,10 +1047,24 @@ upgrade_freeradius () {
   restore_config freeradius-aai freeradius 2.1.3-0lenny0 \
     /etc/freeradius/clients.conf \
     /etc/freeradius/hints \
-    /etc/freeradius/ldap.attrmap \
-    /etc/freeradius/radiusd.conf
+    /etc/freeradius/ldap.attrmap
 
   # handle template based configs
+  template=/usr/share/carnet-upgrade/files/etc/freeradius/radiusd.conf.template
+  config_new=$(mktemp /var/lib/carnet-upgrade/radiusd.conf.XXXXXX)
+  basedn=$(sed -n '/^[[:space:]]*suffix[[:space:]]*/ { 
+    s///; s/"//g; p; q }' /etc/ldap/slapd.conf)
+  hostname=$(hostname -f)
+  cp $template $config_new
+  sed -i "s/#HOSTNAME#/$hostname/" $config_new
+  sed -i "s/#BASEDN#/$basedn/" $config_new
+  if cmp -s $config_new /etc/freeradius/radiusd.conf >/dev/null; then
+     log "Restoring config file /etc/freeradius/radiusd.conf"
+     cp -v /usr/share/carnet-upgrade/files/etc/freeradius/radiusd.conf.restore \
+           /etc/freeradius/radiusd.conf
+  fi
+  rm -f $config_new
+
   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:]]*=' \