diff options
| -rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsSecurityLayerException.java | 5 | ||||
| -rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java | 42 |
2 files changed, 35 insertions, 12 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsSecurityLayerException.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsSecurityLayerException.java index 08577034..bc5a4d02 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsSecurityLayerException.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsSecurityLayerException.java @@ -33,5 +33,10 @@ public class PdfAsSecurityLayerException extends Exception { public PdfAsSecurityLayerException(String info, int errorcode) { super("SecurityLayer Error: [" + errorcode + "] " + info); } + + public PdfAsSecurityLayerException(String info, int errorcode, Exception e) { + super("SecurityLayer Error: [" + errorcode + "] " + info, e); + + } } diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java index 50c3b063..18e14c97 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java @@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.bind.JAXBElement; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -78,41 +79,58 @@ public class DataURLServlet extends HttpServlet { } protected void process(HttpServletRequest request, - HttpServletResponse response) throws ServletException, IOException { - try { + HttpServletResponse response) throws ServletException, IOException { + String xmlResponse = null; + try { if(!PdfAsHelper.checkDataUrlAccess(request)) { throw new Exception("No valid dataURL access"); + } PdfAsHelper.setFromDataUrl(request); - String xmlResponse = request.getParameter("XMLResponse"); + xmlResponse = request.getParameter("XMLResponse"); - //System.out.println(xmlResponse); + if (StringUtils.isEmpty(xmlResponse)) { + logger.error("SL response is null or empty"); + throw new PdfAsSecurityLayerException("SL response is null or empty", 9999); + + } JAXBElement<?> jaxbObject = (JAXBElement<?>) SLMarschaller.unmarshalFromString(xmlResponse); if(jaxbObject.getValue() instanceof InfoboxReadResponseType) { InfoboxReadResponseType infoboxReadResponseType = (InfoboxReadResponseType)jaxbObject.getValue(); logger.info("Got InfoboxReadResponseType"); PdfAsHelper.injectCertificate(request, response, PdfAsHelper.getCertificate(infoboxReadResponseType), getServletContext()); + } else if(jaxbObject.getValue() instanceof CreateCMSSignatureResponseType) { CreateCMSSignatureResponseType createCMSSignatureResponseType = (CreateCMSSignatureResponseType)jaxbObject.getValue(); logger.info("Got CreateCMSSignatureResponseType"); PdfAsHelper.injectSignature(request, response, createCMSSignatureResponseType.getCMSSignature(), getServletContext()); + } else if(jaxbObject.getValue() instanceof ErrorResponseType) { ErrorResponseType errorResponseType = (ErrorResponseType)jaxbObject.getValue(); logger.warn("SecurityLayer: " + errorResponseType.getErrorCode() + " " + errorResponseType.getInfo()); - throw new PdfAsSecurityLayerException(errorResponseType.getInfo(), - errorResponseType.getErrorCode()); + throw new PdfAsSecurityLayerException(errorResponseType.getInfo(), errorResponseType.getErrorCode()); + } else { logger.error("Unknown SL response {}", xmlResponse); - throw new PdfAsSecurityLayerException("Unknown SL response", - 9999); + throw new PdfAsSecurityLayerException("Unknown SL response", 9999); + } - } catch (Exception e) { - logger.warn("Error in DataURL Servlet. " , e); - PdfAsHelper.setSessionException(request, response, e.getMessage(), - e); + + } catch (PdfAsSecurityLayerException e) { + PdfAsHelper.setSessionException(request, response, e.getMessage(), e); + PdfAsHelper.gotoError(getServletContext(), request, response); + + } catch (Exception e) { + logger.debug("Receive XML response from VDA: {}", + StringUtils.isNotEmpty(xmlResponse) ? xmlResponse : " ...empty response..."); + logger.warn("General Error in DataURL Servlet. " , e); + + PdfAsHelper.setSessionException(request, response, e.getMessage(), + new PdfAsSecurityLayerException("Invalid SL response", 9999, e)); PdfAsHelper.gotoError(getServletContext(), request, response); + } } |
