From bccb1f7c2595611eeaa66b4a85dc0529bcb2522f Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Mon, 14 Jul 2014 12:55:20 +0200 Subject: added Invoke Target --- .../at/gv/egiz/pdfas/web/helper/PdfAsHelper.java | 24 ++++++++++++++++++---- .../pdfas/web/helper/PdfAsParameterExtractor.java | 12 ++++++++++- .../at/gv/egiz/pdfas/web/servlets/ErrorPage.java | 9 ++++++++ .../egiz/pdfas/web/servlets/ExternSignServlet.java | 6 ++++++ .../egiz/pdfas/web/servlets/ProvidePDFServlet.java | 8 ++++++++ .../pdfas/web/servlets/UIEntryPointServlet.java | 2 ++ .../gv/egiz/pdfas/web/servlets/VerifyServlet.java | 3 +++ .../main/resources/template_error_redirect.html | 2 +- .../main/resources/template_invoke_redirect.html | 2 +- 9 files changed, 61 insertions(+), 7 deletions(-) diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java index b79075a1..8ec5d6fe 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java @@ -29,7 +29,6 @@ import java.awt.Image; import java.awt.image.RenderedImage; import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -54,10 +53,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.gv.egiz.pdfas.api.ws.PDFASSignParameters; -import at.gv.egiz.pdfas.api.ws.PDFASVerificationResponse; -import at.gv.egiz.pdfas.api.ws.VerificationLevel; import at.gv.egiz.pdfas.api.ws.PDFASSignParameters.Connector; import at.gv.egiz.pdfas.api.ws.PDFASSignResponse; +import at.gv.egiz.pdfas.api.ws.PDFASVerificationResponse; import at.gv.egiz.pdfas.common.exceptions.PdfAsException; import at.gv.egiz.pdfas.lib.api.ByteArrayDataSink; import at.gv.egiz.pdfas.lib.api.ByteArrayDataSource; @@ -109,11 +107,12 @@ public class PdfAsHelper { private static final String PDF_VER_LEVEL = "PDF_VER_LEVEL"; private static final String PDF_VER_RESP = "PDF_VER_RESP"; private static final String PDF_INVOKE_URL = "PDF_INVOKE_URL"; + private static final String PDF_INVOKE_TARGET = "PDF_INVOKE_TARGET"; private static final String REQUEST_FROM_DU = "REQ_DATA_URL"; private static final String SIGNATURE_DATA_HASH = "SIGNATURE_DATA_HASH"; private static final String SIGNATURE_ACTIVE = "SIGNATURE_ACTIVE"; private static final String VERIFICATION_RESULT = "VERIFICATION_RESULT"; - + private static final Logger logger = LoggerFactory .getLogger(PdfAsHelper.class); @@ -852,6 +851,23 @@ public class PdfAsHelper { Object obj = session.getAttribute(PDF_INVOKE_URL); return obj == null ? null : obj.toString(); } + + public static void setInvokeTarget(HttpServletRequest request, + HttpServletResponse response, String url) { + + + + HttpSession session = request.getSession(); + session.setAttribute(PDF_INVOKE_TARGET, url); + logger.debug("External Invoke TARGET: " + url); + } + + public static String getInvokeTarget(HttpServletRequest request, + HttpServletResponse response) { + HttpSession session = request.getSession(); + Object obj = session.getAttribute(PDF_INVOKE_TARGET); + return obj == null ? null : obj.toString(); + } private static String generateURL(HttpServletRequest request, HttpServletResponse response, String Servlet) { diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java index 126b10ce..c2cee9c6 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java @@ -33,11 +33,13 @@ public class PdfAsParameterExtractor { public static final String PARAM_INVOKE_URL = "invoke-app-url"; + public static final String PARAM_INVOKE_URL_TARGET = "invoke-app-url-target"; public static final String PARAM_INVOKE_URL_ERROR = "invoke-app-error-url"; public static final String PARAM_LOCALE = "locale"; public static final String PARAM_NUM_BYTES = "num-bytes"; public static final String PARAM_PDF_URL = "pdf-url"; public static final String PARAM_SIG_TYPE = "sig-type"; + public static final String PARAM_SIG_TYPE_ALIAS = "sig_type"; public static final String PARAM_SIG_POS_P = "sig-pos-p"; public static final String PARAM_SIG_POS_Y = "sig-pos-y"; public static final String PARAM_SIG_POS_X = "sig-pos-x"; @@ -63,6 +65,10 @@ public class PdfAsParameterExtractor { return (String)request.getAttribute(PARAM_INVOKE_URL); } + public static String getInvokeTarget(HttpServletRequest request) { + return (String)request.getAttribute(PARAM_INVOKE_URL_TARGET); + } + public static String getInvokeErrorURL(HttpServletRequest request) { String url = (String)request.getAttribute(PARAM_INVOKE_URL_ERROR); return url; @@ -81,7 +87,11 @@ public class PdfAsParameterExtractor { } public static String getSigType(HttpServletRequest request) { - return (String)request.getAttribute(PARAM_SIG_TYPE); + String value = (String)request.getAttribute(PARAM_SIG_TYPE); + if(value == null) { + value = (String)request.getAttribute(PARAM_SIG_TYPE_ALIAS); + } + return value; } public static String getSigPosP(HttpServletRequest request) { diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java index 5403c9ab..12693797 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java @@ -92,6 +92,15 @@ public class ErrorPage extends HttpServlet { String template = PdfAsHelper.getErrorRedirectTemplateSL(); template = template.replace("##ERROR_URL##", errorURL); + + String target = PdfAsHelper.getInvokeTarget(request, response); + + if(target == null) { + target = "_self"; + } + + template = template.replace("##TARGET##", target); + if (e != null && WebConfiguration.isShowErrorDetails()) { template = template.replace("##CAUSE##", URLEncoder.encode(e.getMessage(), "UTF-8")); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java index f3c3fcca..fb633bd5 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java @@ -93,6 +93,9 @@ public class ExternSignServlet extends HttpServlet { String invokeUrl = PdfAsParameterExtractor.getInvokeURL(request); PdfAsHelper.setInvokeURL(request, response, invokeUrl); + String invokeTarget = PdfAsParameterExtractor.getInvokeTarget(request); + PdfAsHelper.setInvokeTarget(request, response, invokeTarget); + String pdfUrl = PdfAsParameterExtractor.getPdfUrl(request); if (pdfUrl == null) { @@ -244,6 +247,9 @@ public class ExternSignServlet extends HttpServlet { String invokeUrl = PdfAsParameterExtractor.getInvokeURL(request); PdfAsHelper.setInvokeURL(request, response, invokeUrl); + String invokeTarget = PdfAsParameterExtractor.getInvokeTarget(request); + PdfAsHelper.setInvokeTarget(request, response, invokeTarget); + String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request); PdfAsHelper.setErrorURL(request, response, errorUrl); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java index 82bbc34f..1ee96602 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java @@ -104,6 +104,14 @@ public class ProvidePDFServlet extends HttpServlet { throw new PdfAsException("No Signature data available"); } + String target = PdfAsHelper.getInvokeTarget(request, response); + + if(target == null) { + target = "_self"; + } + + template = template.replace("##TARGET##", target); + template = template.replace("##PDFURL##", URLEncoder.encode(PdfAsHelper.generatePdfURL(request, response), "UTF-8")); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/UIEntryPointServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/UIEntryPointServlet.java index 3ff6eb09..40a8d590 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/UIEntryPointServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/UIEntryPointServlet.java @@ -90,6 +90,8 @@ public class UIEntryPointServlet extends HttpServlet { String invokeUrl = pdfAsRequest.getParameters().getInvokeURL(); PdfAsHelper.setInvokeURL(req, resp, invokeUrl); + // TODO: Generate attribute for Invoke Target + String errorUrl = pdfAsRequest.getParameters().getInvokeErrorURL(); PdfAsHelper.setErrorURL(req, resp, errorUrl); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java index 83abdf2d..aa93f7c9 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java @@ -86,6 +86,9 @@ public class VerifyServlet extends HttpServlet { String invokeUrl = PdfAsParameterExtractor.getInvokeURL(request); PdfAsHelper.setInvokeURL(request, response, invokeUrl); + String invokeTarget = PdfAsParameterExtractor.getInvokeTarget(request); + PdfAsHelper.setInvokeTarget(request, response, invokeTarget); + String pdfUrl = PdfAsParameterExtractor.getPdfUrl(request); if (pdfUrl == null) { diff --git a/pdf-as-web/src/main/resources/template_error_redirect.html b/pdf-as-web/src/main/resources/template_error_redirect.html index dd3f9d46..b5ca858d 100644 --- a/pdf-as-web/src/main/resources/template_error_redirect.html +++ b/pdf-as-web/src/main/resources/template_error_redirect.html @@ -42,7 +42,7 @@ div.content {
-
+
- + -- cgit v1.2.3