X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fprovisioning%2FProxyServlet.java;h=e47f9fbbc56873fe3c7304026a8715edebc85b4f;hb=f09604a09059d6c3ecf05b253c9058c1a2e81ca2;hp=ca63f4667ef6bca1e580e2bde62f74f3058658a1;hpb=585e50efa6503595ae245a8f07ba042d2ba6a3f4;p=dmaap%2Fdatarouter.git diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java index ca63f466..e47f9fbb 100755 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java @@ -24,6 +24,8 @@ package org.onap.dmaap.datarouter.provisioning; +import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError; + import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -54,8 +56,6 @@ import org.apache.http.impl.client.DefaultHttpClient; import org.onap.dmaap.datarouter.provisioning.utils.DB; import org.onap.dmaap.datarouter.provisioning.utils.URLUtilities; -import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError; - /** * This class is the base class for those servlets that need to proxy their requests from the standby to active server. * Its methods perform the proxy function to the active server. If the active server is not reachable, a 503 @@ -96,12 +96,12 @@ public class ProxyServlet extends BaseServlet { // We are connecting with the node name, but the certificate will have the CNAME // So we need to accept a non-matching certificate name SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore, - props.getProperty(Main.KEYSTORE_PASS_PROPERTY), trustStore); + props.getProperty(Main.KEYSTORE_PASS_PROPERTY), trustStore); socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); sch = new Scheme("https", 443, socketFactory); inited = true; } catch (Exception e) { - intlogger.error("ProxyServlet: " + e.getMessage()); + intlogger.error("ProxyServlet.init: " + e.getMessage(), e); } intlogger.info("ProxyServlet: inited = " + inited); } @@ -111,7 +111,7 @@ public class ProxyServlet extends BaseServlet { try (FileInputStream instream = new FileInputStream(new File(store))) { ks.load(instream, pass.toCharArray()); } catch (FileNotFoundException fileNotFoundException) { - intlogger.error("ProxyServlet: " + fileNotFoundException.getMessage()); + intlogger.error("ProxyServlet.readStore: " + fileNotFoundException.getMessage(), fileNotFoundException); } catch (Exception x) { intlogger.error("READING TRUSTSTORE: " + x); } @@ -125,12 +125,12 @@ public class ProxyServlet extends BaseServlet { * @param req the HTTP request * @return true or false */ - protected boolean isProxyOK(final HttpServletRequest req) { + boolean isProxyOK(final HttpServletRequest req) { String t = req.getQueryString(); if (t != null) { t = t.replaceAll("&", "&"); for (String s : t.split("&")) { - if (s.equals("noproxy") || s.startsWith("noproxy=")) { + if ("noproxy".equals(s) || s.startsWith("noproxy=")) { return false; } } @@ -144,9 +144,9 @@ public class ProxyServlet extends BaseServlet { * * @return true if this server is the standby (and hence a proxy server). */ - public boolean isProxyServer() { + boolean isProxyServer() { SynchronizerTask st = SynchronizerTask.getSynchronizer(); - return st.getState() == SynchronizerTask.STANDBY; + return st.getPodState() == SynchronizerTask.STANDBY_POD; } /** @@ -187,7 +187,7 @@ public class ProxyServlet extends BaseServlet { * * @return true if the proxy succeeded */ - public boolean doGetWithFallback(HttpServletRequest req, HttpServletResponse resp) { + boolean doGetWithFallback(HttpServletRequest req, HttpServletResponse resp) { boolean rv = false; if (inited) { String url = buildUrl(req); @@ -211,7 +211,7 @@ public class ProxyServlet extends BaseServlet { rv = true; } catch (IOException e) { - intlogger.error("ProxyServlet: " + e.getMessage()); + intlogger.error("ProxyServlet.doGetWithFallback: " + e.getMessage(), e); } finally { proxy.releaseConnection(); httpclient.getConnectionManager().shutdown(); @@ -234,12 +234,8 @@ public class ProxyServlet extends BaseServlet { // Copy request headers and request body copyRequestHeaders(req, proxy); - if (method.equals("POST") || method.equals("PUT")) { - BasicHttpEntity body = new BasicHttpEntity(); - body.setContent(req.getInputStream()); - body.setContentLength(-1); // -1 = unknown - proxy.setEntity(body); - } + + handlePutOrPost(req, method, proxy); // Execute the request HttpResponse pxyResponse = httpclient.execute(proxy); @@ -250,7 +246,7 @@ public class ProxyServlet extends BaseServlet { copyResponseHeaders(pxyResponse, resp); copyEntityContent(pxyResponse, resp); } catch (IOException e) { - intlogger.warn("ProxyServlet: " + e); + intlogger.warn("ProxyServlet.doProxy: " + e.getMessage(), e); sendResponseError(resp, HttpServletResponse.SC_SERVICE_UNAVAILABLE, "", intlogger); } finally { proxy.releaseConnection(); @@ -263,6 +259,15 @@ public class ProxyServlet extends BaseServlet { } } + private void handlePutOrPost(HttpServletRequest req, String method, ProxyHttpRequest proxy) throws IOException { + if ("POST".equals(method) || "PUT".equals(method)) { + BasicHttpEntity body = new BasicHttpEntity(); + body.setContent(req.getInputStream()); + body.setContentLength(-1); // -1 = unknown + proxy.setEntity(body); + } + } + private String buildUrl(HttpServletRequest req) { StringBuilder sb = new StringBuilder("https://"); sb.append(URLUtilities.getPeerPodName()); @@ -275,41 +280,40 @@ public class ProxyServlet extends BaseServlet { } private void copyRequestHeaders(HttpServletRequest from, HttpRequestBase to) { - @SuppressWarnings("unchecked") List list = Collections.list(from.getHeaderNames()); for (String name : list) { // Proxy code will add this one - if (!name.equalsIgnoreCase("Content-Length")) { + if (!"Content-Length".equalsIgnoreCase(name)) { to.addHeader(name, from.getHeader(name)); } } } - private void copyResponseHeaders(HttpResponse from, HttpServletResponse to) { + void copyResponseHeaders(HttpResponse from, HttpServletResponse to) { for (Header hdr : from.getAllHeaders()) { // Don't copy Date: our Jetty will add another Date header - if (!hdr.getName().equals("Date")) { + if (!"Date".equals(hdr.getName())) { to.addHeader(hdr.getName(), hdr.getValue()); } } } - private void copyEntityContent(HttpResponse pxyResponse, HttpServletResponse resp) { + void copyEntityContent(HttpResponse pxyResponse, HttpServletResponse resp) { HttpEntity entity = pxyResponse.getEntity(); if (entity != null) { try (InputStream in = entity.getContent()) { IOUtils.copy(in, resp.getOutputStream()); } catch (Exception e) { - intlogger.error("Exception: " + e.getMessage()); + intlogger.error("ProxyServlet.copyEntityContent: " + e.getMessage(), e); } } } - public class ProxyHttpRequest extends HttpEntityEnclosingRequestBase { + public static class ProxyHttpRequest extends HttpEntityEnclosingRequestBase { private final String method; - public ProxyHttpRequest(final String method, final String uri) { + ProxyHttpRequest(final String method, final String uri) { super(); this.method = method; setURI(URI.create(uri));