From 486ffa6d0abfa0b91dc7ab22ee71758b5eecfb88 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 26 Sep 2007 18:57:15 +0000
Subject: [PATCH] Fix for 2306: configure replication encryption on or off in dsreplication and setup-gui

---
 opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java |   83 ++++++++++++++++++++++++++++++++---------
 1 files changed, 65 insertions(+), 18 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
index b308ee7..e51b652 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -1400,12 +1400,12 @@
         for (ReplicaDescriptor replica : suffix.getReplicas())
         {
           ServerDescriptor server = replica.getServer();
-          Integer replicationPort
+          AuthenticationData repPort
                   = getUserData().getRemoteWithNoReplicationPort().get(server);
-          if (replicationPort != null)
+          if (repPort != null)
           {
-            h.add(server.getHostName()+":"+replicationPort);
-            adsServers.add(server.getHostName()+":"+replicationPort);
+            h.add(server.getHostName()+":"+repPort.getPort());
+            adsServers.add(server.getHostName()+":"+repPort.getPort());
           }
         }
         replicationServers.put(suffix.getDN(), h);
@@ -1422,6 +1422,7 @@
       ctx = createLocalContext();
       helper.configureReplication(ctx, dns, replicationServers,
           getUserData().getReplicationOptions().getReplicationPort(),
+          getUserData().getReplicationOptions().useSecureReplication(),
           getLocalHostPort(),
           knownReplicationServerIds, knownServerIds);
     }
@@ -1480,14 +1481,28 @@
         Integer v = (Integer)server.getServerProperties().get(
             ServerDescriptor.ServerProperty.REPLICATION_SERVER_PORT);
         int replicationPort;
+        boolean enableSecureReplication;
         if (v != null)
         {
           replicationPort = v;
+          enableSecureReplication = false;
         }
         else
         {
-          replicationPort =
+          AuthenticationData authData =
             getUserData().getRemoteWithNoReplicationPort().get(server);
+          if (authData != null)
+          {
+            replicationPort = authData.getPort();
+            enableSecureReplication = authData.useSecureConnection();
+          }
+          else
+          {
+            replicationPort = Constants.DEFAULT_REPLICATION_PORT;
+            enableSecureReplication = false;
+            LOG.log(Level.WARNING, "Could not find replication port for: "+
+                server.getHostPort(true));
+          }
         }
         dns = new HashSet<String>();
         for (ReplicaDescriptor replica : hm.get(server))
@@ -1499,8 +1514,9 @@
         ctx = getRemoteConnection(server, getTrustManager());
         ConfiguredReplication repl =
           helper.configureReplication(ctx, dns, replicationServers,
-              replicationPort, server.getHostPort(true),
-              knownReplicationServerIds, knownServerIds);
+              replicationPort, enableSecureReplication,
+              server.getHostPort(true), knownReplicationServerIds,
+              knownServerIds);
         hmConfiguredRemoteReplication.put(server, repl);
 
         try
@@ -2610,6 +2626,7 @@
       throws UserDataException {
     boolean hasGlobalAdministrators = false;
     Integer replicationPort = -1;
+    boolean secureReplication = false;
     String host = null;
     Integer port = null;
     String dn = null;
@@ -2628,6 +2645,8 @@
     {
       // Check replication port
       replicationPort = checkReplicationPort(qs, errorMsgs);
+      secureReplication =
+        (Boolean)qs.getFieldValue(FieldName.REPLICATION_SECURE);
     }
 
     UserDataConfirmationException confirmEx = null;
@@ -2693,8 +2712,30 @@
       auth.setPwd(pwd);
       auth.setUseSecureConnection(isSecure);
 
-      DataReplicationOptions repl = new DataReplicationOptions(type,
-          auth, replicationPort);
+      DataReplicationOptions repl;
+      switch (type)
+      {
+      case IN_EXISTING_TOPOLOGY:
+      {
+        repl = DataReplicationOptions.createInExistingTopology(auth,
+            replicationPort, secureReplication);
+        break;
+      }
+      case STANDALONE:
+      {
+        repl = DataReplicationOptions.createStandalone();
+        break;
+      }
+      case FIRST_IN_TOPOLOGY:
+      {
+        repl = DataReplicationOptions.createFirstInTopology(replicationPort,
+            secureReplication);
+        break;
+      }
+      default:
+        throw new IllegalStateException("Do not know what to do with type: "+
+            type);
+      }
       getUserData().setReplicationOptions(repl);
 
       getUserData().createAdministrator(!hasGlobalAdministrators &&
@@ -3205,13 +3246,15 @@
       throws UserDataException
   {
     ArrayList<Message> errorMsgs = new ArrayList<Message>();
-    Map<ServerDescriptor, Integer> servers =
+    Map<ServerDescriptor, AuthenticationData> servers =
       getUserData().getRemoteWithNoReplicationPort();
     Map hm = (Map) qs.getFieldValue(FieldName.REMOTE_REPLICATION_PORT);
+    Map hmSecure = (Map) qs.getFieldValue(FieldName.REMOTE_REPLICATION_SECURE);
     for (ServerDescriptor server : servers.keySet())
     {
       String hostName = server.getHostName();
       int replicationPort = -1;
+      boolean secureReplication = (Boolean)hmSecure.get(server.getId());
       String sPort = (String)hm.get(server.getId());
       try
       {
@@ -3242,7 +3285,10 @@
                           .get(server.getHostPort(true)));
           }
         }
-        servers.put(server, replicationPort);
+        AuthenticationData authData = new AuthenticationData();
+        authData.setPort(replicationPort);
+        authData.setUseSecureConnection(secureReplication);
+        servers.put(server, authData);
       } catch (NumberFormatException nfe)
       {
         errorMsgs.add(INFO_INVALID_REMOTE_REPLICATION_PORT_VALUE_RANGE.get(
@@ -3656,11 +3702,11 @@
     return generatedChar;
   }
 
-  private Map<ServerDescriptor, Integer> getRemoteWithNoReplicationPort(
-      UserData userData)
+  private Map<ServerDescriptor, AuthenticationData>
+  getRemoteWithNoReplicationPort(UserData userData)
   {
-    Map<ServerDescriptor, Integer> servers =
-      new HashMap<ServerDescriptor, Integer>();
+    Map<ServerDescriptor, AuthenticationData> servers =
+      new HashMap<ServerDescriptor, AuthenticationData>();
     Set<SuffixDescriptor> suffixes =
       userData.getSuffixesToReplicateOptions().getSuffixes();
     for (SuffixDescriptor suffix : suffixes)
@@ -3672,7 +3718,10 @@
             ServerDescriptor.ServerProperty.IS_REPLICATION_SERVER);
         if (!Boolean.TRUE.equals(v))
         {
-          servers.put(server, 8989);
+          AuthenticationData authData = new AuthenticationData();
+          authData.setPort(Constants.DEFAULT_REPLICATION_PORT);
+          authData.setUseSecureConnection(false);
+          servers.put(server, authData);
         }
       }
     }
@@ -4101,9 +4150,7 @@
             "ds-task-log-message",
             "ds-task-state"
         });
-    Message lastDisplayedMsg = null;
     String lastLogMsg = null;
-    long lastTimeMsgDisplayed = -1;
     while (!isOver)
     {
       try

--
Gitblit v1.10.0