From f3476576c50efd922593c82656efda7aec5ae97f Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Wed, 27 Nov 2013 10:05:17 +0100 Subject: MOA integration sign/verification (not finished yet ...) Lots of PDF-AS Web implementation --- .../at/gv/egiz/pdfas/web/servlets/SignServlet.java | 96 +++++++++++++++------- 1 file changed, 66 insertions(+), 30 deletions(-) (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java') diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java index 9ea6f354..5d3c2e34 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java @@ -1,26 +1,36 @@ package at.gv.egiz.pdfas.web.servlets; +import java.io.File; import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.attribute.DosFileAttributes; +import java.util.Iterator; +import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import at.gv.egiz.pdfas.common.exceptions.PdfAsException; -import at.gv.egiz.pdfas.lib.api.ByteArrayDataSource; -import at.gv.egiz.pdfas.lib.api.Configuration; -import at.gv.egiz.pdfas.lib.api.PdfAs; -import at.gv.egiz.pdfas.lib.api.PdfAsFactory; -import at.gv.egiz.pdfas.lib.api.StatusRequest; -import at.gv.egiz.pdfas.lib.api.sign.SignParameter; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletFileUpload; + +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; /** * Servlet implementation class Sign */ public class SignServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + private static final String UPLOAD_DIRECTORY = "upload"; + private static final int THRESHOLD_SIZE = 1024 * 1024 * 3; // 3MB + private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB + private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB + /** * Default constructor. */ @@ -28,40 +38,66 @@ public class SignServlet extends HttpServlet { // TODO Auto-generated constructor stub } - /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse - * response) - */ - protected void doGet(HttpServletRequest request, - HttpServletResponse response) throws ServletException, IOException { - response.getWriter() - .println( - "HelloBODY"); - } - /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // TODO Auto-generated method stub + try { + doParameters(request, response); + } catch (Exception e) { + e.printStackTrace(); + } + } + + protected void doParameters(HttpServletRequest request, + HttpServletResponse response) throws Exception { + // checks if the request actually contains upload file + if (!ServletFileUpload.isMultipartContent(request)) { + PrintWriter writer = response.getWriter(); + writer.println("Request does not contain upload data"); + writer.flush(); + return; + } + + // configures upload settings + DiskFileItemFactory factory = new DiskFileItemFactory(); + factory.setSizeThreshold(THRESHOLD_SIZE); + factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); + + ServletFileUpload upload = new ServletFileUpload(factory); + upload.setFileSizeMax(MAX_FILE_SIZE); + upload.setSizeMax(MAX_REQUEST_SIZE); + + // constructs the directory path to store upload file + String uploadPath = getServletContext().getRealPath("") + + File.separator + UPLOAD_DIRECTORY; + // creates the directory if it does not exist + File uploadDir = new File(uploadPath); + if (!uploadDir.exists()) { + uploadDir.mkdir(); + } + + List formItems = upload.parseRequest(request); + byte[] filecontent = null; + if(formItems.size() != 1) { + // TODO: no file uploaded! + } else { + FileItem item = (FileItem) formItems.get(0); + filecontent = item.get(); + } + + doSignature(request, response, filecontent); } protected void doSignature(HttpServletRequest request, HttpServletResponse response, byte[] pdfData) { try { - PdfAs pdfAs = PdfAsFactory.createPdfAs(null); - // TODO: Build configuration and Sign Parameters - Configuration config = pdfAs.getConfiguration(); - SignParameter signParameter = PdfAsFactory.createSignParameter( - config, new ByteArrayDataSource(pdfData)); - - - - StatusRequest statusRequest = pdfAs.startSign(signParameter); - - } catch (PdfAsException e) { + // TODO: read Parameters ... + PdfAsHelper.startSignature(request, response, pdfData); + } catch (Exception e) { + // TODO Auto-generated catch block e.printStackTrace(); } } -- cgit v1.2.3