You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by am...@apache.org on 2017/10/06 17:23:59 UTC
incubator-unomi git commit: UNOMI-128 : Handle case where
internalAddress is not valid/reachable
Repository: incubator-unomi
Updated Branches:
refs/heads/master dc04443c0 -> c0d31fed5
UNOMI-128 : Handle case where internalAddress is not valid/reachable
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/c0d31fed
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/c0d31fed
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/c0d31fed
Branch: refs/heads/master
Commit: c0d31fed585601b1150d7adae9ad8dfa01feeded
Parents: dc04443
Author: Abdelkader Midani <am...@apache.org>
Authored: Fri Oct 6 19:23:31 2017 +0200
Committer: Abdelkader Midani <am...@apache.org>
Committed: Fri Oct 6 19:23:48 2017 +0200
----------------------------------------------------------------------
extensions/router/router-rest/pom.xml | 5 +++
.../AbstractConfigurationServiceEndpoint.java | 11 +++++-
.../ExportConfigurationServiceEndPoint.java | 39 ++++++++++++++-----
.../ImportConfigurationServiceEndPoint.java | 40 +++++++++++++++-----
4 files changed, 73 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c0d31fed/extensions/router/router-rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/pom.xml b/extensions/router/router-rest/pom.xml
index 459fe6f..a6d07c5 100644
--- a/extensions/router/router-rest/pom.xml
+++ b/extensions/router/router-rest/pom.xml
@@ -75,6 +75,11 @@
<version>${version.jackson.core}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c0d31fed/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
index 9d48a6a..4bc3e24 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
@@ -16,12 +16,18 @@
*/
package org.apache.unomi.router.rest;
+import org.apache.cxf.jaxrs.ext.MessageContext;
+import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.unomi.api.services.ConfigSharingService;
import org.apache.unomi.router.api.services.ImportExportConfigurationService;
import javax.jws.WebMethod;
import javax.ws.rs.*;
+import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
@@ -31,6 +37,7 @@ public abstract class AbstractConfigurationServiceEndpoint<T> {
protected ImportExportConfigurationService<T> configurationService;
protected ConfigSharingService configSharingService;
+ protected CloseableHttpClient httpClient;
@WebMethod(exclude = true)
public void setConfigSharingService(ConfigSharingService configSharingService) {
@@ -54,7 +61,7 @@ public abstract class AbstractConfigurationServiceEndpoint<T> {
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
- public abstract T saveConfiguration(T configuration);
+ public abstract T saveConfiguration(T configuration, @Context MessageContext context) throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException;
/**
* Retrieves a configuration by id.
@@ -79,6 +86,6 @@ public abstract class AbstractConfigurationServiceEndpoint<T> {
@Path("/{configId}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
- public abstract void deleteConfiguration(@PathParam("configId") String configId);
+ public abstract void deleteConfiguration(@PathParam("configId") String configId, @Context MessageContext context);
}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c0d31fed/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
index 8da7887..522a6a5 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
@@ -17,12 +17,15 @@
package org.apache.unomi.router.rest;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.cxf.jaxrs.ext.MessageContext;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpPut;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLContextBuilder;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.unomi.api.services.ProfileService;
import org.apache.unomi.router.api.ExportConfiguration;
@@ -33,12 +36,16 @@ import org.slf4j.LoggerFactory;
import javax.jws.WebMethod;
import javax.jws.WebService;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -57,8 +64,14 @@ public class ExportConfigurationServiceEndPoint extends AbstractConfigurationSer
private ProfileExportService profileExportService;
private ProfileService profileService;
- public ExportConfigurationServiceEndPoint() {
+ public ExportConfigurationServiceEndPoint() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
logger.info("Initializing export configuration service endpoint...");
+ SSLContextBuilder builder = new SSLContextBuilder();
+ builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
+ SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+ builder.build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ httpClient = HttpClients.custom().setSSLSocketFactory(
+ sslsf).build();
}
@WebMethod(exclude = true)
@@ -81,11 +94,15 @@ public class ExportConfigurationServiceEndPoint extends AbstractConfigurationSer
*
* @return the export configuration saved.
*/
- public ExportConfiguration saveConfiguration(ExportConfiguration exportConfiguration) {
+ @Override
+ public ExportConfiguration saveConfiguration(ExportConfiguration exportConfiguration, MessageContext context) {
+
+ HttpServletRequest request = context.getHttpServletRequest();
+ String localBasePath = request.getScheme() + "://127.0.0.1:" + request.getLocalPort();
+
ExportConfiguration exportConfigSaved = configurationService.save(exportConfiguration);
- CloseableHttpClient httpClient = HttpClients.createDefault();
try {
- HttpPut httpPut = new HttpPut(configSharingService.getProperty("internalServerAddress") + "/configUpdate/exportConfigAdmin");
+ HttpPut httpPut = new HttpPut(localBasePath + "/configUpdate/exportConfigAdmin");
StringEntity input = new StringEntity(new ObjectMapper().writeValueAsString(exportConfigSaved));
input.setContentType(MediaType.APPLICATION_JSON);
httpPut.setEntity(input);
@@ -94,7 +111,7 @@ public class ExportConfigurationServiceEndPoint extends AbstractConfigurationSer
if (response.getStatusLine().getStatusCode() != 200) {
logger.error("Failed to update the running config: Please check the acceccibilty to the URI: \n{}",
- configSharingService.getProperty("internalServerAddress") + "/configUpdate/importConfigAdmin");
+ localBasePath + "/configUpdate/importConfigAdmin");
logger.error("HTTP Status code returned {}", response.getStatusLine().getStatusCode());
throw new PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
}
@@ -109,18 +126,20 @@ public class ExportConfigurationServiceEndPoint extends AbstractConfigurationSer
}
@Override
- public void deleteConfiguration(String configId) {
+ public void deleteConfiguration(String configId, MessageContext context) {
this.configurationService.delete(configId);
- CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpServletRequest request = context.getHttpServletRequest();
+ String localBasePath = request.getScheme() + "://127.0.0.1:" + request.getLocalPort();
+
try {
- HttpDelete httpDelete = new HttpDelete(configSharingService.getProperty("internalServerAddress") + "/configUpdate/exportConfigAdmin/" + configId);
+ HttpDelete httpDelete = new HttpDelete(localBasePath + "/configUpdate/exportConfigAdmin/" + configId);
HttpResponse response = httpClient.execute(httpDelete);
if (response.getStatusLine().getStatusCode() != 200) {
logger.error("Failed to update the running config: Please check the accessibility to the URI: \n{}",
- configSharingService.getProperty("internalServerAddress") + "/configUpdate/exportConfigAdmin/" + configId);
+ localBasePath + "/configUpdate/exportConfigAdmin/" + configId);
logger.error("HTTP Status code returned {}", response.getStatusLine().getStatusCode());
throw new PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c0d31fed/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
index 4baf3c5..4b4f62a 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
@@ -17,14 +17,17 @@
package org.apache.unomi.router.rest;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.cxf.jaxrs.ext.MessageContext;
import org.apache.cxf.jaxrs.ext.multipart.Attachment;
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpPut;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLContextBuilder;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.unomi.router.api.ImportConfiguration;
import org.apache.unomi.router.api.RouterConstants;
@@ -34,6 +37,7 @@ import org.slf4j.LoggerFactory;
import javax.jws.WebMethod;
import javax.jws.WebService;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -44,6 +48,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
/**
* A JAX-RS endpoint to manage {@link ImportConfiguration}s.
@@ -57,8 +64,14 @@ public class ImportConfigurationServiceEndPoint extends AbstractConfigurationSer
private static final Logger logger = LoggerFactory.getLogger(ImportConfigurationServiceEndPoint.class.getName());
- public ImportConfigurationServiceEndPoint() {
+ public ImportConfigurationServiceEndPoint() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
logger.info("Initializing import configuration service endpoint...");
+ SSLContextBuilder builder = new SSLContextBuilder();
+ builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
+ SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+ builder.build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ httpClient = HttpClients.custom().setSSLSocketFactory(
+ sslsf).build();
}
@WebMethod(exclude = true)
@@ -71,11 +84,16 @@ public class ImportConfigurationServiceEndPoint extends AbstractConfigurationSer
*
* @return the import configuration saved.
*/
- public ImportConfiguration saveConfiguration(ImportConfiguration importConfiguration) {
+ @Override
+ public ImportConfiguration saveConfiguration(ImportConfiguration importConfiguration, MessageContext context) {
+
+ HttpServletRequest request = context.getHttpServletRequest();
+ String localBasePath = request.getScheme() + "://127.0.0.1:" + request.getLocalPort();
+
ImportConfiguration importConfigSaved = configurationService.save(importConfiguration);
- CloseableHttpClient httpClient = HttpClients.createDefault();
+
try {
- HttpPut httpPut = new HttpPut(configSharingService.getProperty("internalServerAddress") + "/configUpdate/importConfigAdmin");
+ HttpPut httpPut = new HttpPut(localBasePath + "/configUpdate/importConfigAdmin");
StringEntity input = new StringEntity(new ObjectMapper().writeValueAsString(importConfigSaved));
input.setContentType(MediaType.APPLICATION_JSON);
httpPut.setEntity(input);
@@ -84,7 +102,7 @@ public class ImportConfigurationServiceEndPoint extends AbstractConfigurationSer
if (response.getStatusLine().getStatusCode() != 200) {
logger.error("Failed to update the running config: Please check the accessibility to the URI: \n{}",
- configSharingService.getProperty("internalServerAddress") + "/configUpdate/importConfigAdmin");
+ localBasePath + "/configUpdate/importConfigAdmin");
logger.error("HTTP Status code returned {}", response.getStatusLine().getStatusCode());
throw new PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
}
@@ -99,18 +117,20 @@ public class ImportConfigurationServiceEndPoint extends AbstractConfigurationSer
}
@Override
- public void deleteConfiguration(String configId) {
+ public void deleteConfiguration(String configId, MessageContext context) {
this.configurationService.delete(configId);
- CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpServletRequest request = context.getHttpServletRequest();
+ String localBasePath = request.getScheme() + "://127.0.0.1:" + request.getLocalPort();
+
try {
- HttpDelete httpDelete = new HttpDelete(configSharingService.getProperty("internalServerAddress") + "/configUpdate/importConfigAdmin/" + configId);
+ HttpDelete httpDelete = new HttpDelete(localBasePath + "/configUpdate/importConfigAdmin/" + configId);
HttpResponse response = httpClient.execute(httpDelete);
if (response.getStatusLine().getStatusCode() != 200) {
logger.error("Failed to update the running config: Please check the accessibility to the URI: \n{}",
- configSharingService.getProperty("internalServerAddress") + "/configUpdate/importConfigAdmin/" + configId);
+ localBasePath + "/configUpdate/importConfigAdmin/" + configId);
logger.error("HTTP Status code returned {}", response.getStatusLine().getStatusCode());
throw new PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
}