From 0d30ef62770e3d73744f6b29f1e89eb380726411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Sat, 16 Apr 2016 17:52:45 +0200 Subject: [PATCH] [fix] Compare current with new LDAP backend and process as needed in conf_regen --- data/hooks/conf_regen/06-slapd | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/data/hooks/conf_regen/06-slapd b/data/hooks/conf_regen/06-slapd index 778b32eea..0a8b41a2a 100755 --- a/data/hooks/conf_regen/06-slapd +++ b/data/hooks/conf_regen/06-slapd @@ -23,25 +23,30 @@ do_pre_regen() { } do_post_regen() { - # retrieve current backend - #backend=$(sudo slapcat -n 0 | sed -n 's/^dn: olcDatabase={1}\(.*\),cn=config$/\1/p') - backend=$(grep '^database' /etc/ldap/slapd.conf | awk '{print $2}') - - # save current database in case of a backend change - backend_change=0 - backup_dir="/var/backups/dc=yunohost,dc=org-${backend}-$(date +%s)" - if [[ -n "$backend" && "$backend" != "mdb" ]]; then - backend_change=1 - sudo mkdir -p "$backup_dir" - sudo slapcat -b dc=yunohost,dc=org \ - -l "${backup_dir}/dc=yunohost-dc=org.ldif" - fi + regen_conf_files=$1 # fix some permissions sudo chown root:openldap /etc/ldap/slapd.conf sudo chown -R openldap:openldap /etc/ldap/schema/ sudo chown -R openldap:openldap /etc/ldap/slapd.d/ + [ -z "$regen_conf_files" ] && exit 0 + + # retrieve current and new backends + curr_backend=$(sudo slapcat -n 0 \ + | sed -n 's/^dn: olcDatabase={1}\(.*\),cn=config$/\1/p') + new_backend=$(grep '^database' /etc/ldap/slapd.conf | awk '{print $2}') + + # save current database in case of a backend change + backend_change=0 + backup_dir="/var/backups/dc=yunohost,dc=org-${curr_backend}-$(date +%s)" + if [[ -n "$curr_backend" && "$curr_backend" != "$new_backend" ]]; then + backend_change=1 + sudo mkdir -p "$backup_dir" + sudo slapcat -b dc=yunohost,dc=org \ + -l "${backup_dir}/dc=yunohost-dc=org.ldif" + fi + # check the slapd config file at first sudo slaptest -Q -u -f /etc/ldap/slapd.conf @@ -73,7 +78,7 @@ case "$1" in do_pre_regen $3 ;; post) - do_post_regen + do_post_regen $3 ;; *) echo "hook called with unknown argument \`$1'" >&2