From eb68e29e371ef3e944f682239e6f3f92cb084697 Mon Sep 17 00:00:00 2001 From: tknall Date: Mon, 9 Jun 2008 15:27:50 +0000 Subject: Web-Application: Configuration may be declared via system property "pdf-as.work-dir" or via Servlet-Init-Parameter "work-dir". Bug fixed in RetrieveSignatureDataServlet: Response header didn't contain a content length attribute. The ITS Mac BKU rejects those requests. Workaround for ITS Mac BKU integrated. A redirect via response does only work if the response contains a valid SL request (e.g. a NullOperationRequest). API: The configuration folder may be omitted at instantiating the api. Configuration may be set via system property "pdf-as.work-dir". If no configuration is given at all, the current user's home directory is searched for a folder "PDF-AS". If not found a default configuration is created. If the configuration is explicitely given than the temporary folder is located within the given directory otherwise within the user's temporary directory. Declaring the configuration folder, replacements for system properties like "${catalina.base}/conf/pdfas" may be used. Web-Application: Session is now being invalidated after download of the signed pdf file. Web-Application: Every hardcoded context "pdf-as" has been replaced. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@277 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../wag/egov/egiz/web/servlets/DataURLServlet.java | 42 ++++++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java index 3c2ba28..cbb33ba 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java @@ -4,6 +4,7 @@ package at.knowcenter.wag.egov.egiz.web.servlets; import java.io.IOException; +import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URL; import java.util.ArrayList; @@ -41,6 +42,7 @@ import at.knowcenter.wag.egov.egiz.sig.connectors.LocalConnector; import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUPostConnection; import at.knowcenter.wag.egov.egiz.web.FormFields; import at.knowcenter.wag.egov.egiz.web.LocalRequest; +import at.knowcenter.wag.egov.egiz.web.LocalRequestHelper; import at.knowcenter.wag.egov.egiz.web.SessionAttributes; /** @@ -84,7 +86,26 @@ public class DataURLServlet extends HttpServlet dispatch(request, response, "/jsp/results.jsp"); } - /** + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + this.doPost(req, resp); + } + + private static void temporaryRedirect(String redirectURL, HttpServletResponse response) throws IOException { + String encodedRedirect = response.encodeRedirectURL(redirectURL); + response.addHeader("Location", encodedRedirect); + response.setContentType("text/xml"); + response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT); + String nop = ""; + PrintWriter pw = response.getWriter(); + response.setCharacterEncoding("UTF-8"); + response.setContentLength(nop.getBytes("UTF-8").length); + log.debug("Redirecting via NullOperationRequest to " + encodedRedirect + "."); + pw.println(nop); + pw.flush(); + pw.close(); + } + +/** * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ @@ -148,7 +169,7 @@ public class DataURLServlet extends HttpServlet if (isNullResponse(xml_response)) { log.debug("Received a NullOperationResponse -> answering with the first request."); //$NON-NLS-1$ - + assert si.outputAvailable == false; assert si.response_properties == null; @@ -158,6 +179,7 @@ public class DataURLServlet extends HttpServlet String request_string = local_request.getRequestString(); + log.debug("request = " + request_string); response.setContentType("text/xml"); response.setCharacterEncoding("UTF-8"); response.getWriter().println(request_string); @@ -208,10 +230,16 @@ public class DataURLServlet extends HttpServlet HttpSession session = request.getSession(true); log.debug("Putting signed document into session (" + session.getId() + ")."); session.setAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT, si); - session.setAttribute(SessionAttributes.DOWNLOAD_URL_FOR_SIGNED_PDF_DOCUMENT, response.encodeRedirectURL("/pdf-as/ProvidePDF")); - String redirectURL = response.encodeRedirectURL("/pdf-as/jsp/download.jsp"); - log.debug("Redirecting to " + redirectURL + "."); - response.sendRedirect(redirectURL); +// String serverURL = LocalRequestHelper.getLocalServerAddress(request, response); + String downloadURL = response.encodeRedirectURL(LocalRequestHelper.getLocalContextAddress(request, response) + "/ProvidePDF"); + log.debug("Creating download URL \"" + downloadURL + "\"."); + session.setAttribute(SessionAttributes.DOWNLOAD_URL_FOR_SIGNED_PDF_DOCUMENT, downloadURL); + +// String redirectURL = response.encodeRedirectURL("/pdf-as/jsp/download.jsp"); +// log.debug("Redirecting to " + redirectURL + "."); +// response.sendRedirect(redirectURL); + temporaryRedirect(LocalRequestHelper.getLocalContextAddress(request, response) + "/jsp/download.jsp", response); + return; // SignServletHelper.returnSignResponse(si, response); } @@ -275,7 +303,7 @@ public class DataURLServlet extends HttpServlet si.currentLocalOperation = null; - URL btlURL = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), request.getContextPath() + "/jsp/verifylist.jsp"); + URL btlURL = new URL(LocalRequestHelper.getLocalContextAddress(request, response) + "/jsp/verifylist.jsp"); String backToListURL = response.encodeURL(btlURL.toString()); dispatchToResults(results, request, response, backToListURL); -- cgit v1.2.3