diff options
Diffstat (limited to 'catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java')
-rw-r--r-- | catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java | 196 |
1 files changed, 125 insertions, 71 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java index f9ac666933..511592afe2 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java @@ -20,7 +20,6 @@ package org.openecomp.sdc.fe.servlets; -import java.net.URI; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; @@ -28,10 +27,11 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.client.api.Response; import org.openecomp.sdc.common.api.Constants; -import org.openecomp.sdc.common.config.EcompErrorName; import org.openecomp.sdc.fe.config.Configuration; import org.openecomp.sdc.fe.config.ConfigurationManager; import org.openecomp.sdc.fe.config.FeEcompErrorManager; +import org.openecomp.sdc.fe.mdc.MdcData; +import org.openecomp.sdc.fe.utils.BeProtocol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -41,12 +41,30 @@ import com.google.common.cache.CacheBuilder; public class FeProxyServlet extends SSLProxyServlet { private static final long serialVersionUID = 1L; - private static final String URL = "%s://%s:%s%s"; - private static Logger log = LoggerFactory.getLogger(FeProxyServlet.class.getName()); + private static final String URL = "%s://%s%s%s"; + private static final String ONBOARDING_CONTEXT = "/onboarding-api"; + private static final String DCAED_CONTEXT = "/dcae-api"; + private static final Logger log = LoggerFactory.getLogger(FeProxyServlet.class.getName()); private static Cache<String, MdcData> mdcDataCache = CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build(); +// @Override +// public URI rewriteURI(HttpServletRequest request) { +// try { +// logFeRequest(request); +// } catch (Exception e) { +// FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Request"); +// log.error("Unexpected FE request logging error :", e); +// } +// String originalUrl = request.getRequestURL().toString(); +// String redirectedUrl = getModifiedUrl(request); +// +// log.debug("FeProxyServlet Redirecting request from: {} , to: {}", originalUrl, redirectedUrl); +// +// return URI.create(redirectedUrl); +// } + @Override - public URI rewriteURI(HttpServletRequest request) { + protected String rewriteTarget(HttpServletRequest request) { try { logFeRequest(request); } catch (Exception e) { @@ -58,18 +76,29 @@ public class FeProxyServlet extends SSLProxyServlet { log.debug("FeProxyServlet Redirecting request from: {} , to: {}", originalUrl, redirectedUrl); - return URI.create(redirectedUrl); + return redirectedUrl; } +// @Override +// protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { +// try { +// logFeResponse(request, proxyResponse); +// } catch (Exception e) { +// FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); +// log.error("Unexpected FE response logging error :", e); +// } +// super.onResponseSuccess(request, response, proxyResponse); +// } +//protected void onProxyResponseSuccess(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Response serverResponse) { @Override - protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { + protected void onProxyResponseSuccess(HttpServletRequest request, HttpServletResponse proxyResponse, Response response) { try { - logFeResponse(request, proxyResponse); + logFeResponse(request, response); } catch (Exception e) { FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); log.error("Unexpected FE response logging error :", e); } - super.onResponseSuccess(request, response, proxyResponse); + super.onProxyResponseSuccess(request, proxyResponse, response); } private void logFeRequest(HttpServletRequest httpRequest) { @@ -135,79 +164,104 @@ public class FeProxyServlet extends SSLProxyServlet { MDC.put("timer", transactionStartTime); } - private class MdcData { - private String serviceInstanceID; - private String userId; - private String remoteAddr; - private String localAddr; - private Long transactionStartTime; - - public MdcData(String serviceInstanceID, String userId, String remoteAddr, String localAddr, Long transactionStartTime) { - super(); - this.serviceInstanceID = serviceInstanceID; - this.userId = userId; - this.remoteAddr = remoteAddr; - this.localAddr = localAddr; - this.transactionStartTime = transactionStartTime; + private String getModifiedUrl(HttpServletRequest request) { + Configuration config = getConfiguration(request); + if (config == null) { + log.error("failed to retrive configuration."); + throw new RuntimeException("failed to read FE configuration"); } - - public Long getTransactionStartTime() { - return transactionStartTime; + String uri = request.getRequestURI(); + String protocol; + String host; + String port; + if (uri.contains(ONBOARDING_CONTEXT)){ + uri = uri.replace("/sdc1/feProxy"+ONBOARDING_CONTEXT,ONBOARDING_CONTEXT); + protocol = config.getOnboarding().getProtocolBe(); + host = config.getOnboarding().getHostBe(); + port = config.getOnboarding().getPortBe().toString(); } - - public String getUserId() { - return userId; + else if(uri.contains(DCAED_CONTEXT)){ + uri = uri.replace("/sdc1/feProxy"+DCAED_CONTEXT,DCAED_CONTEXT); + protocol = config.getBeProtocol(); + host = config.getBeHost(); + if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { + port = config.getBeHttpPort().toString(); + } else { + port = config.getBeSslPort().toString(); + } } + else{ + uri = uri.replace("/sdc1/feProxy","/sdc2"); + protocol = config.getBeProtocol(); + host = config.getBeHost(); + if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { + port = config.getBeHttpPort().toString(); + } else { + port = config.getBeSslPort().toString(); + } - public String getRemoteAddr() { - return remoteAddr; } - public String getLocalAddr() { - return localAddr; - } + String authority = getAuthority(host, port); + String queryString = getQueryString(request); + return String.format(URL,protocol,authority,uri,queryString); + + + + +// String scheme = config.getBeProtocol(); +// String uri = request.getRequestURI().toString(); +// StringBuilder url = new StringBuilder(); +// url.append(scheme).append("://").append(config.getBeHost()); +// url.append(":"); +// if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { +// url.append(config.getBeHttpPort()); +// } else { +// url.append(config.getBeSslPort()); +// } +// url.append(uri); +// String queryString = request.getQueryString(); // d=789 +// if (queryString != null) { +// url.append("?").append(queryString); +// } +// +// String redirectedUrl = url.toString(); +// String onboardingForwardContext = config.getOnboardingForwardContext(); +// if (onboardingForwardContext == null || onboardingForwardContext.isEmpty()) { +// onboardingForwardContext = "/onboarding-api"; +// } +// redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/dcae-api", "/dcae"); +// redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/onboarding-api", onboardingForwardContext); +// redirectedUrl = redirectedUrl.replace("/sdc1/feProxy", "/sdc2"); +// return redirectedUrl; - public String getServiceInstanceID() { - return serviceInstanceID; - } } - public String getModifiedUrl(HttpServletRequest request) { - Configuration config = getConfiguration(request); - if (config == null) { - log.error("failed to retrive configuration."); - } - String scheme = config.getBeProtocol(); - String uri = request.getRequestURI().toString(); - StringBuilder url = new StringBuilder(); - url.append(scheme).append("://").append(config.getBeHost()); - url.append(":"); - if (config.getBeProtocol().equals(BE_PROTOCOL.HTTP.getProtocolName())) { - url.append(config.getBeHttpPort()); - } else { - url.append(config.getBeSslPort()); - } - url.append(uri); - String queryString = request.getQueryString(); // d=789 - if (queryString != null) { - url.append("?").append(queryString); - } - - String redirectedUrl = url.toString(); - String onboardingForwardContext = config.getOnboardingForwardContext(); - if (onboardingForwardContext == null || onboardingForwardContext.isEmpty()) { - onboardingForwardContext = "/onboarding-api"; - } - redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/dcae-api", "/dcae"); - redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/onboarding-api", onboardingForwardContext); - redirectedUrl = redirectedUrl.replace("/sdc1/feProxy", "/sdc2"); - return redirectedUrl; + private Configuration getConfiguration(HttpServletRequest request) { + return ((ConfigurationManager) request.getSession().getServletContext().getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); } - private Configuration getConfiguration(HttpServletRequest request) { - Configuration config = ((ConfigurationManager) request.getSession().getServletContext().getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); - return config; - } + private String getAuthority(String host, String port) { + String authority; + if (port==null){ + authority=host; + } + else{ + authority=host+":"+port; + } + return authority; + } + + private String getQueryString(HttpServletRequest request) { + String queryString = request.getQueryString(); + if (queryString != null) { + queryString="?"+queryString; + } + else{ + queryString=""; + } + return queryString; + } } |