diff --git a/scripts/init-replication.sh b/scripts/init-replication.sh index 6c4dbc4..95aeb54 100755 --- a/scripts/init-replication.sh +++ b/scripts/init-replication.sh @@ -91,13 +91,30 @@ IFS="$OLD_IFS" # Configure syncrepl and mirrormode on the database log_info "Configuring syncrepl and mirrormode..." + +# Check if olcSyncRepl attribute already exists +if ldapsearch -Y EXTERNAL -H "$LDAPI_SOCKET" -b "olcDatabase={1}mdb,cn=config" -s base "(olcSyncRepl=*)" olcSyncRepl 2>/dev/null | grep -q "olcSyncRepl:"; then + SYNCREPL_OP="replace" + log_info "Updating existing syncrepl configuration..." +else + SYNCREPL_OP="add" + log_info "Adding new syncrepl configuration..." +fi + +# Check if olcMirrorMode attribute already exists +if ldapsearch -Y EXTERNAL -H "$LDAPI_SOCKET" -b "olcDatabase={1}mdb,cn=config" -s base "(olcMirrorMode=*)" olcMirrorMode 2>/dev/null | grep -q "olcMirrorMode:"; then + MIRRORMODE_OP="replace" +else + MIRRORMODE_OP="add" +fi + cat > /tmp/repl-syncrepl.ldif << EOF dn: olcDatabase={1}mdb,cn=config changetype: modify -replace: olcSyncRepl +${SYNCREPL_OP}: olcSyncRepl ${SYNCREPL_CONFIG} - -replace: olcMirrorMode +${MIRRORMODE_OP}: olcMirrorMode olcMirrorMode: TRUE EOF