diff options
| -rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java | 86 | ||||
| -rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java | 66 | 
2 files changed, 82 insertions, 70 deletions
| 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 4be3d7dd..670756de 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 @@ -49,13 +49,13 @@ import at.gv.egiz.pdfas.web.stats.StatisticEvent.Status;   */  public class ErrorPage extends HttpServlet {  	private static final long serialVersionUID = 1L; -	 +  	private static final Logger logger = LoggerFactory  			.getLogger(ErrorPage.class); -	 +  	private static final String ERROR_STACK = "##ERROR_STACK##";  	private static final String ERROR_MESSAGE = "##ERROR_MESSAGE##"; -	 +  	/**  	 * @see HttpServlet#HttpServlet()  	 */ @@ -90,74 +90,80 @@ public class ErrorPage extends HttpServlet {  			return;  		} else {  			String errorURL = PdfAsHelper.getErrorURL(request, response); -			Throwable e = PdfAsHelper -					.getSessionException(request, response); -			 -			StatisticEvent statisticEvent = PdfAsHelper.getStatisticEvent(request, response); -			if(!statisticEvent.isLogged()) { -				statisticEvent.setStatus(Status.ERROR); -				statisticEvent.setException(e); -				if(e instanceof PDFASError) { -					statisticEvent.setErrorCode(((PDFASError)e).getCode()); +			Throwable e = PdfAsHelper.getSessionException(request, response); + +			StatisticEvent statisticEvent = PdfAsHelper.getStatisticEvent( +					request, response); +			if (statisticEvent != null) { +				if (!statisticEvent.isLogged()) { +					statisticEvent.setStatus(Status.ERROR); +					statisticEvent.setException(e); +					if (e instanceof PDFASError) { +						statisticEvent.setErrorCode(((PDFASError) e).getCode()); +					} +					statisticEvent.setEndNow(); +					statisticEvent.setTimestampNow(); +					StatisticFrontend.getInstance().storeEvent(statisticEvent); +					statisticEvent.setLogged(true);  				} -				statisticEvent.setEndNow(); -				statisticEvent.setTimestampNow(); -				StatisticFrontend.getInstance().storeEvent(statisticEvent); -				statisticEvent.setLogged(true);  			} -			 -			String message = PdfAsHelper.getSessionErrMessage(request, -					response); -			if (errorURL != null && WebConfiguration.isProvidePdfURLinWhitelist(errorURL)) { + +			String message = PdfAsHelper +					.getSessionErrMessage(request, response); +			if (errorURL != null +					&& WebConfiguration.isProvidePdfURLinWhitelist(errorURL)) {  				String template = PdfAsHelper.getErrorRedirectTemplateSL(); -				template = template.replace("##ERROR_URL##", -						errorURL); -				 +				template = template.replace("##ERROR_URL##", errorURL); +  				URL url = new URL(errorURL); -				String extraParams = UrlParameterExtractor.buildParameterFormString(url); +				String extraParams = UrlParameterExtractor +						.buildParameterFormString(url);  				template = template.replace("##ADD_PARAMS##", extraParams); -				 +  				String target = PdfAsHelper.getInvokeTarget(request, response); -				 -				if(target == null) { + +				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"));  				} else { -					template = template.replace("##CAUSE##", -							""); +					template = template.replace("##CAUSE##", "");  				}  				if (message != null) { -					template = template.replace("##ERROR##", URLEncoder.encode(message, "UTF-8")); +					template = template.replace("##ERROR##", +							URLEncoder.encode(message, "UTF-8"));  				} else { -					template = template.replace("##ERROR##", "Unbekannter Fehler"); +					template = template.replace("##ERROR##", +							"Unbekannter Fehler");  				}  				response.setContentType("text/html");  				response.getWriter().write(template);  				response.getWriter().close();  			} else { -				if(errorURL != null) { +				if (errorURL != null) {  					logger.warn(errorURL + " is not allowed by whitelist");  				} -				 +  				String template = PdfAsHelper.getErrorTemplate();  				if (message != null) {  					template = template.replace(ERROR_MESSAGE, message);  				} else { -					template = template.replace(ERROR_MESSAGE, "Unbekannter Fehler"); +					template = template.replace(ERROR_MESSAGE, +							"Unbekannter Fehler");  				} -				 +  				if (e != null && WebConfiguration.isShowErrorDetails()) { -					template = template.replace(ERROR_STACK,  HTMLFormater.formatStackTrace(e.getStackTrace())); +					template = template.replace(ERROR_STACK, +							HTMLFormater.formatStackTrace(e.getStackTrace()));  				} else { -					template = template.replace(ERROR_STACK,  ""); +					template = template.replace(ERROR_STACK, "");  				} -				 +  				response.setContentType("text/html");  				response.getWriter().write(template);  				response.getWriter().close(); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java index 64bae47e..4fce6860 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java @@ -45,14 +45,11 @@ import at.gv.egiz.pdfas.web.stats.StatisticFrontend;   * Servlet implementation class PDFData   */  public class PDFData extends HttpServlet { -	 +  	private static final long serialVersionUID = 1L; -	private static final Logger logger = LoggerFactory -			.getLogger(PDFData.class); -	 -	 -	 +	private static final Logger logger = LoggerFactory.getLogger(PDFData.class); +  	/**  	 * @see HttpServlet#HttpServlet()  	 */ @@ -82,49 +79,58 @@ public class PDFData extends HttpServlet {  			HttpServletResponse response) throws ServletException, IOException {  		byte[] signedData = PdfAsHelper.getSignedPdf(request, response); -		StatisticEvent statisticEvent = PdfAsHelper.getStatisticEvent(request, response); -		 +		StatisticEvent statisticEvent = PdfAsHelper.getStatisticEvent(request, +				response); +  		String plainPDFDigest = PdfAsParameterExtractor.getOrigDigest(request); -		 +  		if (signedData != null) { -			if(plainPDFDigest != null) { -				String signatureDataHash = PdfAsHelper.getSignatureDataHash(request); -				if(!plainPDFDigest.equalsIgnoreCase(signatureDataHash)) { +			if (plainPDFDigest != null) { +				String signatureDataHash = PdfAsHelper +						.getSignatureDataHash(request); +				if (!plainPDFDigest.equalsIgnoreCase(signatureDataHash)) {  					logger.warn("Digest Hash mismatch!");  					logger.warn("Requested digest: " + plainPDFDigest);  					logger.warn("Saved     digest: " + signatureDataHash); -					 +  					PdfAsHelper.setSessionException(request, response,  							"Signature Data digest do not match!", null); -					PdfAsHelper.gotoError(getServletContext(), request, response); +					PdfAsHelper.gotoError(getServletContext(), request, +							response);  					return;  				}  			} -			response.setHeader("Content-Disposition", "inline;filename=" + PdfAsHelper.getPDFFileName(request)); +			response.setHeader("Content-Disposition", "inline;filename=" +					+ PdfAsHelper.getPDFFileName(request));  			String pdfCert = PdfAsHelper.getSignerCertificate(request); -			if(pdfCert != null) { +			if (pdfCert != null) {  				response.setHeader("Signer-Certificate", pdfCert);  			} -			 -			if(!statisticEvent.isLogged()) { -				statisticEvent.setStatus(Status.OK); -				 -				statisticEvent.setEndNow(); -				statisticEvent.setTimestampNow(); -				StatisticFrontend.getInstance().storeEvent(statisticEvent); -				statisticEvent.setLogged(true); + +			if (statisticEvent != null) { +				if (!statisticEvent.isLogged()) { +					statisticEvent.setStatus(Status.OK); + +					statisticEvent.setEndNow(); +					statisticEvent.setTimestampNow(); +					StatisticFrontend.getInstance().storeEvent(statisticEvent); +					statisticEvent.setLogged(true); +				}  			} -			 -			PDFASVerificationResponse resp = PdfAsHelper.getPDFASVerificationResponse(request); -			if(resp != null) { -				response.setHeader("CertificateCheckCode", String.valueOf(resp.getCertificateCode())); -				response.setHeader("ValueCheckCode", String.valueOf(resp.getValueCode())); + +			PDFASVerificationResponse resp = PdfAsHelper +					.getPDFASVerificationResponse(request); +			if (resp != null) { +				response.setHeader("CertificateCheckCode", +						String.valueOf(resp.getCertificateCode())); +				response.setHeader("ValueCheckCode", +						String.valueOf(resp.getValueCode()));  			}  			response.setContentType("application/pdf");  			OutputStream os = response.getOutputStream();  			os.write(signedData);  			os.close(); -			 +  			// When data is collected destroy session!  			request.getSession().invalidate();  		} else { | 
