You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/12/13 15:03:06 UTC

git commit: should fix MARMOTTA-405 (SSL resources in LDClient)

Updated Branches:
  refs/heads/develop 54670f4c9 -> 3bd9c85f1


should fix MARMOTTA-405 (SSL resources in LDClient)


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/3bd9c85f
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/3bd9c85f
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/3bd9c85f

Branch: refs/heads/develop
Commit: 3bd9c85f18831d4d570b5f29deeabf0674f26420
Parents: 54670f4
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Fri Dec 13 15:02:59 2013 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Fri Dec 13 15:02:59 2013 +0100

----------------------------------------------------------------------
 .../ldclient/services/ldclient/LDClient.java    | 38 +++++++++++---------
 .../endpoint/FacebookGraphEndpoint.java         |  2 +-
 .../test/facebook/FacebookProviderTest.java     |  9 ++---
 .../ldclient/test/facebook/movie.sparql         |  2 +-
 .../endpoint/rdf/LinkedDataEndpoint.java        |  2 +-
 .../test/rdf/TestLinkedDataProvider.java        | 30 +++++++++++-----
 6 files changed, 48 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java
----------------------------------------------------------------------
diff --git a/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java b/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java
index 13f2421..e57f10e 100644
--- a/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java
+++ b/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java
@@ -17,11 +17,7 @@
  */
 package org.apache.marmotta.ldclient.services.ldclient;
 
-import org.apache.http.Header;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.ProtocolException;
+import org.apache.http.*;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.HttpRequestRetryHandler;
 import org.apache.http.client.methods.HttpGet;
@@ -31,6 +27,7 @@ import org.apache.http.conn.ClientConnectionManager;
 import org.apache.http.conn.scheme.PlainSocketFactory;
 import org.apache.http.conn.scheme.Scheme;
 import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.client.DefaultRedirectStrategy;
 import org.apache.http.impl.conn.PoolingClientConnectionManager;
@@ -48,13 +45,11 @@ import org.apache.marmotta.ldclient.model.ClientResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.net.ssl.SSLContext;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.ServiceLoader;
-import java.util.Set;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
@@ -128,8 +123,19 @@ public final class LDClient implements LDClientService {
             httpParams.setIntParameter(ClientPNames.MAX_REDIRECTS,3);
 
             SchemeRegistry schemeRegistry = new SchemeRegistry();
-            schemeRegistry.register(
-                    new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
+            schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
+
+            try {
+                SSLContext sslcontext = SSLContext.getInstance("TLS");
+                sslcontext.init(null, null, null);
+                SSLSocketFactory sf = new SSLSocketFactory(sslcontext, SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
+
+                schemeRegistry.register(new Scheme("https", 443, sf));
+            } catch (NoSuchAlgorithmException e) {
+                e.printStackTrace();
+            } catch (KeyManagementException e) {
+                e.printStackTrace();
+            }
 
             PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
             cm.setMaxTotal(20);
@@ -148,11 +154,11 @@ public final class LDClient implements LDClientService {
             log.info("data provider: {}",provider.getName());
         }
     }
-    
+
     @Override
     public boolean ping(String resource) {
         //crappy implementation only for http
-        if (resource.startsWith("http://")) {
+        if (resource.startsWith("http://") || resource.startsWith("https://")) {
             try {
                 return (200 == client.execute(new HttpHead(resource)).getStatusLine().getStatusCode());
             } catch (Exception e) {
@@ -406,5 +412,5 @@ public final class LDClient implements LDClientService {
         }
 
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java
----------------------------------------------------------------------
diff --git a/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java b/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java
index 134d8a8..d6a64cb 100644
--- a/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java
+++ b/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java
@@ -30,7 +30,7 @@ public class FacebookGraphEndpoint extends Endpoint {
 
     public FacebookGraphEndpoint() {
 
-        super("Facebook Graph API Provider", FacebookGraphProvider.PROVIDER_NAME, "^http://([^.]+)\\.facebook\\.com/.*", null, 86400L);
+        super("Facebook Graph API Provider", FacebookGraphProvider.PROVIDER_NAME, "^http(s?)://([^.]+)\\.facebook\\.com/.*", null, 86400L);
         setPriority(PRIORITY_HIGH);
         addContentType(new ContentType("application", "json"));
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java b/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java
index 262dd70..350c04b 100644
--- a/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java
+++ b/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java
@@ -22,12 +22,7 @@ import org.apache.marmotta.ldclient.api.ldclient.LDClientService;
 import org.apache.marmotta.ldclient.model.ClientResponse;
 import org.apache.marmotta.ldclient.services.ldclient.LDClient;
 import org.apache.marmotta.ldclient.test.helper.TestLDClient;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.*;
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
 import org.openrdf.query.BooleanQuery;
@@ -79,7 +74,7 @@ public class FacebookProviderTest {
     @Test
     public void testMovie() throws Exception {
 
-        String uriMovie = "http://graph.facebook.com/160617097307237";
+        String uriMovie = "https://graph.facebook.com/160617097307237";
 
         Assume.assumeTrue(ldclient.ping(uriMovie));
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql
----------------------------------------------------------------------
diff --git a/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql b/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql
index 5cfc812..000e2cb 100644
--- a/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql
+++ b/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql
@@ -20,7 +20,7 @@ PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX dct: <http://purl.org/dc/terms/>
 PREFIX schema: <http://schema.org/>
 ASK {
-    <http://graph.facebook.com/160617097307237> dct:title "The Hobbit"@en ;
+    <https://graph.facebook.com/160617097307237> dct:title "The Hobbit"@en ;
                                           rdf:type schema:Movie ;
                                           schema:genre "Fantasy Adventure" .
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java
----------------------------------------------------------------------
diff --git a/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java b/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java
index 05960a7..454c282 100644
--- a/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java
+++ b/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java
@@ -29,7 +29,7 @@ import org.apache.marmotta.ldclient.api.endpoint.Endpoint;
 public class LinkedDataEndpoint extends Endpoint {
 
     public LinkedDataEndpoint() {
-        super("Linked Data", "Linked Data", "http://.*", null, 86400L);
+        super("Linked Data", "Linked Data", "http(s?)://.*", null, 86400L);
         setPriority(PRIORITY_LOW);
         addContentType(new ContentType("application", "rdf+xml", 0.8));
         addContentType(new ContentType("text", "turtle", 1.0));

http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java
----------------------------------------------------------------------
diff --git a/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java b/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java
index c1bfa8a..f6fa7cf 100644
--- a/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java
+++ b/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java
@@ -17,24 +17,19 @@
  */
 package org.apache.marmotta.ldclient.test.rdf;
 
-import java.io.InputStream;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.marmotta.ldclient.api.ldclient.LDClientService;
 import org.apache.marmotta.ldclient.exception.DataRetrievalException;
 import org.apache.marmotta.ldclient.model.ClientResponse;
 import org.apache.marmotta.ldclient.services.ldclient.LDClient;
 import org.apache.marmotta.ldclient.test.helper.TestLDClient;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.*;
 import org.openrdf.query.BooleanQuery;
 import org.openrdf.query.QueryLanguage;
 import org.openrdf.repository.RepositoryConnection;
 
+import java.io.InputStream;
+
 /**
  * Test if the LinkedDataProvider is working properly.
  * 
@@ -48,7 +43,8 @@ public class TestLinkedDataProvider {
     private static final String MARMOTTA = "http://rdfohloh.wikier.org/project/marmotta";
     private static final String WIKIER = "http://www.wikier.org/foaf#wikier";
     private static final String EXAMPLE = "http://example.org/foo";
-    
+    private static final String SSL = "https://example.org/foo";
+
     private LDClientService ldclient;
 
     @Before
@@ -178,4 +174,20 @@ public class TestLinkedDataProvider {
         conn.close();
     }
 
+    /**
+     * This method tests accessing a SSL resource - should throw a DataRetrievalException but otherwise work
+     *
+     * @throws Exception
+     *
+     */
+    @Test(expected=DataRetrievalException.class)
+    public void testSSL() throws Exception {
+        ClientResponse response = ldclient.retrieveResource(SSL);
+        RepositoryConnection conn = response.getTriples().getConnection();
+        conn.begin();
+        Assert.assertTrue(conn.size() == 0);
+        conn.commit();
+        conn.close();
+    }
+
 }