From 040e2b9e1bdad2466a00f88add23759a9e2e00c8 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 27 Mar 2017 10:39:32 +0000 Subject: [PATCH] Added hproxy check #7807 git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@146358 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 1 + .../resolver/http/ConstantsHttpResolver.java | 4 ++- .../resolver/http/HttpResolver.java | 30 +++++++++++++++++++ .../resolver/http/StorageIDResolver.java | 13 ++++++++ 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/distro/changelog.xml b/distro/changelog.xml index de2eabd..f1fa1e5 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -79,5 +79,6 @@ [Task #7626] Fix issue on set/reset scope + [Task #7807] Provide a check for HAProxy \ No newline at end of file diff --git a/src/main/java/org/gcube/datatransfer/resolver/http/ConstantsHttpResolver.java b/src/main/java/org/gcube/datatransfer/resolver/http/ConstantsHttpResolver.java index 710079d..8504c11 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/http/ConstantsHttpResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/http/ConstantsHttpResolver.java @@ -1,5 +1,5 @@ /** - * + * */ package org.gcube.datatransfer.resolver.http; @@ -16,4 +16,6 @@ public class ConstantsHttpResolver { public static final String CONTENT_DISPOSITION = "content-disposition"; public static final String DEFAULT_CONTENTTYPE_UNKNOWN_UNKNOWN = "unknown/unknown"; public static final String DEFAULT_FILENAME_FROM_STORAGE_MANAGER = "fromStorageManager"; + + protected static final String HPC = "hproxycheck"; //for hproxycheck } diff --git a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java index 48f89ec..481a07d 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java @@ -6,6 +6,8 @@ import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; +import java.util.HashMap; +import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletException; @@ -16,6 +18,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.gcube.contentmanager.storageclient.model.protocol.smp.Handler; import org.gcube.contentmanager.storageclient.model.protocol.smp.SMPURLConnection; +import org.gcube.datatransfer.resolver.MultiReadHttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -258,6 +261,33 @@ public class HttpResolver extends HttpServlet { } } + /* (non-Javadoc) + * @see javax.servlet.http.HttpServlet#doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + */ + @Override + protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + logger.info("doHead working.."); + + String hpc = req.getParameter(ConstantsHttpResolver.HPC); //for HProxy check + try{ + if(hpc==null || Boolean.parseBoolean(hpc)){ + logger.trace("returning status 200 for Hproxy check"); + resp.setStatus(200); + return; + } + }catch (Exception e) { + //silent exception to continue.. + } + + //ADDING PARAMETER TO PERFORM ONLY VALIDATION + Map additionalParams = new HashMap(); + String[] value = new String[1]; + value[0] = "true"; + additionalParams.put(VALIDATION, value); + MultiReadHttpServletRequest request = new MultiReadHttpServletRequest(req, additionalParams); + doGet(request, resp); + } + /* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ diff --git a/src/main/java/org/gcube/datatransfer/resolver/http/StorageIDResolver.java b/src/main/java/org/gcube/datatransfer/resolver/http/StorageIDResolver.java index 65c2142..16a61f9 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/http/StorageIDResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/http/StorageIDResolver.java @@ -44,6 +44,8 @@ public class StorageIDResolver extends HttpServlet { /** The logger. */ private static final Logger logger = LoggerFactory.getLogger(StorageIDResolver.class); + + /* (non-Javadoc) * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig) */ @@ -219,6 +221,17 @@ public class StorageIDResolver extends HttpServlet { protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { logger.info("doHead working.."); + String hpc = req.getParameter(ConstantsHttpResolver.HPC); //for HProxy check + try{ + if(hpc==null || Boolean.parseBoolean(hpc)){ + logger.trace("returning status 200 for Hproxy check"); + resp.setStatus(200); + return; + } + }catch (Exception e) { + //silent exception to continue.. + } + //ADDING PARAMETER TO PERFORM ONLY VALIDATION Map additionalParams = new HashMap(); String[] value = new String[1];