From 4fa446ebc4f1ffd2229cfb1eaf04432cf257e8ac Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Thu, 12 Oct 2017 13:14:09 +0200 Subject: [PATCH] redirect implemented --- war/pom.xml | 4 +- war/run.sh | 13 +++++ war/server.xml | 18 +++++++ war/src/main/java/pnews/servlet/Pnews.java | 82 ++++++++++++++++++++++++++++++ war/src/main/webapp/WEB-INF/web.xml | 4 +- 5 files changed, 117 insertions(+), 4 deletions(-) create mode 100755 war/run.sh create mode 100644 war/server.xml diff --git a/war/pom.xml b/war/pom.xml index 5ea3669..aaa43c7 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -1,10 +1,10 @@ 4.0.0 pnews - servlet + pnews 1.0 war - servlet + pnews diff --git a/war/run.sh b/war/run.sh new file mode 100755 index 0000000..7da6bb5 --- /dev/null +++ b/war/run.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +SDIR=`dirname $0` +SWAR=`realpath $SDIR/target/pnews-1.0.war` +TMP_DIR="/tmp/$$.tmp" +DWAR="$TMP_DIR/config/dropins/pnews-1.0.war" + +mkdir -p $TMP_DIR/config/dropins +cp $SWAR $DWAR +cp server.xml $TMP_DIR/config + +#docker run -ti --name pnews -p 9080:9080 -p 9443:9443 -v $DWAR:/config/dropins/pnews.war websphere-liberty:webProfile7 +docker run -ti --name pnews -p 9080:9080 -p 9443:9443 -v $TMP_DIR/config:/config websphere-liberty:webProfile7 diff --git a/war/server.xml b/war/server.xml new file mode 100644 index 0000000..b5fc660 --- /dev/null +++ b/war/server.xml @@ -0,0 +1,18 @@ + + + + + + webProfile-7.0 + + + + + + + + + diff --git a/war/src/main/java/pnews/servlet/Pnews.java b/war/src/main/java/pnews/servlet/Pnews.java index 85f726b..f7175a1 100644 --- a/war/src/main/java/pnews/servlet/Pnews.java +++ b/war/src/main/java/pnews/servlet/Pnews.java @@ -1,7 +1,89 @@ package pnews.servlet; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public class Pnews extends HttpServlet { + private static final Logger LOG = Logger.getLogger(Pnews.class.getName()); + private static final long serialVersionUID = 1L; + + private static String getQueryParameter(HttpServletRequest rq, String key) + throws UnsupportedEncodingException { + String[] params; + int idx; + String q; + + q = rq.getQueryString(); + + if (q == null) + return null; + + params = URLDecoder.decode(q, "UTF-8").split("&"); + + for (String p: params) { + idx = p.indexOf('='); + + if (idx > 1 && p.substring(0, idx).equals(key)) + return p.substring(idx + 1); + } + + return null; + } + + private static void redirect(HttpServletRequest rq, HttpServletResponse rp) { + String redirectURL; + + try { + redirectURL = getQueryParameter(rq, "url"); + + LOG.info("Request redirection to " + redirectURL); + + if (redirectURL != null) { + rp.setHeader("Location", redirectURL); + rp.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT); + } else { + rp.setStatus(HttpServletResponse.SC_NOT_FOUND); + } + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + LOG.log(Level.SEVERE, "redirect failure", e); + rp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) { + String path; + + LOG.info("doGet " + req.getRequestURI()); + path = req.getPathInfo(); + + if (path.equals("/redirect")) { + redirect(req, resp); + } else { + try { + resp.getWriter().write("Not found " + req.getPathInfo()); + resp.setStatus(HttpServletResponse.SC_NOT_FOUND); + } catch (IOException e) { + LOG.log(Level.SEVERE, "doGet failure", e); + } + } + } + + @Override + public void init(ServletConfig config) throws ServletException { + LOG.info("Pnews servlet init " + config.getServletContext().getContextPath()); + + } } diff --git a/war/src/main/webapp/WEB-INF/web.xml b/war/src/main/webapp/WEB-INF/web.xml index e56581e..80d7c74 100644 --- a/war/src/main/webapp/WEB-INF/web.xml +++ b/war/src/main/webapp/WEB-INF/web.xml @@ -7,12 +7,12 @@ Pnews pnews - pnew.servlet.Pnews + pnews.servlet.Pnews 1 pnews - /pnews + /* -- 2.7.4