Skip to content

Commit

Permalink
Minimal fix to test if ssl works correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
Bohlski committed Mar 2, 2021
1 parent 48977bc commit c1acc36
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 10 deletions.
Expand Up @@ -9,14 +9,16 @@
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import dk.netarkivet.common.CommonSettings;

/** Class for providing configured HTTPS clients to execute requests over SSL. */
public class HttpsClientBuilder {
HttpClientBuilder clientBuilder;
BasicTwoWaySSLProvider sslProvider;
PoolingHttpClientConnectionManager cm;
private static final Logger log = LoggerFactory.getLogger(HttpsClientBuilder.class);
private final HttpClientBuilder clientBuilder;
private final BasicTwoWaySSLProvider sslProvider;

/**
* Constructor that sets up the whole SSL connection when called.
Expand All @@ -26,6 +28,7 @@ public class HttpsClientBuilder {
*/
public HttpsClientBuilder(String privateKeyFile) {
clientBuilder = HttpClients.custom();
log.info("Setting up TLS using key {}", privateKeyFile);
sslProvider = new BasicTwoWaySSLProvider(privateKeyFile);

setupConnection();
Expand All @@ -40,7 +43,7 @@ private void setupConnection() {
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create()
.register("https", sslsf) //register http also?
.build();
cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
configureMaxConnections(cm);
clientBuilder.setConnectionManager(cm);
}
Expand Down
Expand Up @@ -18,11 +18,20 @@
import org.apache.commons.io.IOUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import dk.netarkivet.common.CommonSettings;
import dk.netarkivet.common.utils.BasicTwoWaySSLProvider;
import dk.netarkivet.common.utils.HttpsClientBuilder;
import dk.netarkivet.common.utils.Settings;

Expand All @@ -33,22 +42,47 @@
public class FileResolverRESTClient implements FileResolver {

private static final Logger log = LoggerFactory.getLogger(FileResolverRESTClient.class);
private final HttpsClientBuilder clientBuilder;
private static final HttpsClientBuilder clientBuilder;
//private static final PoolingHttpClientConnectionManager cm;

static {
String privateKeyFile = Settings.get(CommonSettings.FILE_RESOLVER_KEYFILE);
clientBuilder = new HttpsClientBuilder(privateKeyFile);
/*HttpClientBuilder clientBuilder;
String privateKeyFile = Settings.get(CommonSettings.FILE_RESOLVER_KEYFILE);
clientBuilder = HttpClients.custom();
BasicTwoWaySSLProvider sslProvider = new BasicTwoWaySSLProvider(privateKeyFile);
SSLConnectionSocketFactory sslsf =
new SSLConnectionSocketFactory(sslProvider.getSSLContext(), new DefaultHostnameVerifier());
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create()
.register("https", sslsf) //register http also?
.build();
cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
cm.setMaxTotal(Settings.getInt(CommonSettings.MAX_TOTAL_CONNECTIONS));
cm.setDefaultMaxPerRoute(Settings.getInt(CommonSettings.MAX_CONNECTIONS_PER_ROUTE));
clientBuilder.setConnectionManager(cm);*/
}

/**
* Base url for the API endpoint
*/
private final URL baseUrl;

public FileResolverRESTClient() {
baseUrl = getBaseURL();

}

private URL getBaseURL() {
final URL baseUrl;
String url = Settings.get(CommonSettings.FILE_RESOLVER_BASE_URL);
try {
baseUrl = new URL(url);
} catch (MalformedURLException e) {
log.error("Malformed Url for FileResolver", e);
throw new RuntimeException(e);
}
String privateKeyFile = Settings.get(CommonSettings.FILE_RESOLVER_KEYFILE);
clientBuilder = new HttpsClientBuilder(privateKeyFile);
return baseUrl;
}

@Override public List<Path> getPaths(Pattern filepattern) {
Expand Down
Expand Up @@ -23,16 +23,20 @@

public class WarcRecordClient {
private static final Logger log = LoggerFactory.getLogger(WarcRecordClient.class);
private final HttpsClientBuilder clientBuilder;
private static final HttpsClientBuilder clientBuilder;
private final URI baseUri;
private long offset;

public WarcRecordClient(URI baseUri) {
this.baseUri = baseUri;
static {
String privateKeyFile = Settings.get(CommonSettings.WRS_KEYFILE);
clientBuilder = new HttpsClientBuilder(privateKeyFile);
}

public WarcRecordClient(URI baseUri) {
this.baseUri = baseUri;

}

/**
* Retrieves a single BitarchiveRecord from the repository from a given file and offset. If the operation fails for
* any reason, this method returns null.
Expand Down

0 comments on commit c1acc36

Please sign in to comment.