You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/02/16 16:42:47 UTC

svn commit: r1071291 - in /incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr: HttpPoster.java SolrConnector.java

Author: kwright
Date: Wed Feb 16 15:42:47 2011
New Revision: 1071291

URL: http://svn.apache.org/viewvc?rev=1071291&view=rev
Log:
Add support for ssl sockets, based on the keystore parameter.

Modified:
    incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
    incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java

Modified: incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java?rev=1071291&r1=1071290&r2=1071291&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java (original)
+++ incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java Wed Feb 16 15:42:47 2011
@@ -57,6 +57,7 @@ public class HttpPoster
 
   private String protocol;
   private String host;
+  private javax.net.ssl.SSLSocketFactory socketFactory;
   private int port;
   private String encodedCredentials;
   private String realm;
@@ -104,12 +105,12 @@ public class HttpPoster
 
   /** This is the secure socket factory we will use.  I'm presuming it's thread-safe, but
   * if not, synchronization blocks are in order when it's used. */
-  protected static javax.net.ssl.SSLSocketFactory secureSocketFactory = null;
+  protected static javax.net.ssl.SSLSocketFactory openSecureSocketFactory = null;
   static
   {
     try
     {
-      secureSocketFactory = getSecureSocketFactory();
+      openSecureSocketFactory = getOpenSecureSocketFactory();
     }
     catch (ManifoldCFException e)
     {
@@ -127,7 +128,8 @@ public class HttpPoster
   public HttpPoster(String protocol, String server, int port, String webappName,
     String updatePath, String removePath, String statusPath,
     String realm, String userID, String password,
-    String allowAttributeName, String denyAttributeName, String idAttributeName)
+    String allowAttributeName, String denyAttributeName, String idAttributeName,
+    IKeystoreManager keystoreManager)
     throws ManifoldCFException
   {
     this.allowAttributeName = allowAttributeName;
@@ -137,6 +139,11 @@ public class HttpPoster
     this.host = server;
     this.port = port;
     this.protocol = protocol;
+    if (keystoreManager != null)
+      this.socketFactory = keystoreManager.getSecureSocketFactory();
+    else
+      // Use the "trust everything" one.
+      this.socketFactory = openSecureSocketFactory;
 
     if (userID != null && userID.length() > 0 && password != null)
     {
@@ -685,7 +692,7 @@ public class HttpPoster
 
   /** Build a secure socket factory based on no keystore and a lax trust manager.
   * This allows use of SSL for privacy but not identification. */
-  protected static javax.net.ssl.SSLSocketFactory getSecureSocketFactory()
+  protected static javax.net.ssl.SSLSocketFactory getOpenSecureSocketFactory()
     throws ManifoldCFException
   {
     try
@@ -713,12 +720,12 @@ public class HttpPoster
     throws IOException, ManifoldCFException
   {
     Socket socket;
-    if (protocol.equals("https"))
+    if (protocol.equals("https") && socketFactory != null)
     {
       try
       {
-        SocketFactory factory = SSLSocketFactory.getDefault();
-        socket = factory.createSocket(host,port);
+        //SocketFactory factory = SSLSocketFactory.getDefault();
+        socket = socketFactory.createSocket(host,port);
       }
       catch (InterruptedIOException e)
       {

Modified: incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java?rev=1071291&r1=1071290&r2=1071291&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java (original)
+++ incubator/lcf/branches/CONNECTORS-160-branch/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java Wed Feb 16 15:42:47 2011
@@ -141,6 +141,12 @@ public class SolrConnector extends org.a
       String userID = params.getParameter(SolrConfig.PARAM_USERID);
       String password = params.getObfuscatedParameter(SolrConfig.PARAM_PASSWORD);
       String realm = params.getParameter(SolrConfig.PARAM_REALM);
+      String keystoreData = params.getParameter(SolrConfig.PARAM_KEYSTORE);
+      IKeystoreManager keystoreManager;
+      if (keystoreData != null)
+        keystoreManager = KeystoreManagerFactory.make("",keystoreData);
+      else
+        keystoreManager = null;
       
       if (core != null)
       {
@@ -152,7 +158,7 @@ public class SolrConnector extends org.a
       try
       {
         poster = new HttpPoster(protocol,server,Integer.parseInt(port),webapp,updatePath,removePath,statusPath,realm,userID,password,
-          allowAttributeName,denyAttributeName,idAttributeName);
+          allowAttributeName,denyAttributeName,idAttributeName,keystoreManager);
       }
       catch (NumberFormatException e)
       {