From 597e9f2358677c94ec0fee9e55c5c9ebcc869a6c Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 19 Sep 2007 16:35:26 +0000
Subject: [PATCH] When the user provides both the global administrator and the server specific authentication in non-interactive mode when enabling replication, try if the global administrator authentication can be used and prefer it to the server specific one.

---
 opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java |   44 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java b/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java
index 4259fa9..191740b 100644
--- a/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java
+++ b/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliMain.java
@@ -1523,10 +1523,24 @@
     }
     else
     {
-      String bindDn = getValue(argParser.getBindDn1(),
-          argParser.getDefaultBindDn1());
-      uData.setBindDn1(bindDn);
-      uData.setPwd1(pwd1);
+      // Best-effort: try to use admin, if it does not work, use bind DN.
+      try
+      {
+        InitialLdapContext ctx = createContext(uData.getHostName1(),
+            uData.getPort1(), uData.useSSL1(), uData.useStartTLS1(),
+            ADSContext.getAdministratorDN(adminUid), adminPwd,
+            getTrustManager());
+        uData.setBindDn1(ADSContext.getAdministratorDN(adminUid));
+        uData.setPwd1(adminPwd);
+        ctx.close();
+      }
+      catch (Throwable t)
+      {
+        String bindDn = getValue(argParser.getBindDn1(),
+            argParser.getDefaultBindDn1());
+        uData.setBindDn1(bindDn);
+        uData.setPwd1(pwd1);
+      }
     }
     int replicationPort1 = getValue(argParser.getReplicationPort1(),
         argParser.getDefaultReplicationPort1());
@@ -1548,10 +1562,24 @@
     }
     else
     {
-      String bindDn = getValue(argParser.getBindDn2(),
-          argParser.getDefaultBindDn2());
-      uData.setBindDn2(bindDn);
-      uData.setPwd2(pwd2);
+      // Best-effort: try to use admin, if it does not work, use bind DN.
+      try
+      {
+        InitialLdapContext ctx = createContext(uData.getHostName2(),
+            uData.getPort2(), uData.useSSL2(), uData.useStartTLS2(),
+            ADSContext.getAdministratorDN(adminUid), adminPwd,
+            getTrustManager());
+        uData.setBindDn2(ADSContext.getAdministratorDN(adminUid));
+        uData.setPwd2(adminPwd);
+        ctx.close();
+      }
+      catch (Throwable t)
+      {
+        String bindDn = getValue(argParser.getBindDn2(),
+            argParser.getDefaultBindDn2());
+        uData.setBindDn2(bindDn);
+        uData.setPwd2(pwd2);
+      }
     }
     int replicationPort2 = getValue(argParser.getReplicationPort2(),
         argParser.getDefaultReplicationPort2());

--
Gitblit v1.10.0