From 33c49abc111f184ac87076fa735e75877dfbeab3 Mon Sep 17 00:00:00 2001 From: tkellner Date: Wed, 10 Apr 2013 19:32:14 +0000 Subject: Rework mobile BKU handling git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@371 174cde9d-5d70-4d2a-aa98-46368bc2aaf7 --- .../workflow/states/mobilebku/PostTanThread.java | 114 ++------------------- 1 file changed, 6 insertions(+), 108 deletions(-) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java index 21c4e86e..0774cf7a 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java @@ -16,21 +16,10 @@ package at.asit.pdfover.gui.workflow.states.mobilebku; // Imports -import java.io.IOException; - -import org.apache.commons.httpclient.Header; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpException; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.methods.GetMethod; -import org.apache.commons.httpclient.methods.PostMethod; -import org.apache.commons.httpclient.protocol.Protocol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import at.asit.pdfover.gui.workflow.states.LocalBKUState; import at.asit.pdfover.gui.workflow.states.MobileBKUState; -import at.asit.pdfover.signator.SLResponse; /** * @@ -44,6 +33,8 @@ public class PostTanThread implements Runnable { private MobileBKUState state; + private MobileBKUHandler handler; + /** * Constructor * @@ -51,6 +42,7 @@ public class PostTanThread implements Runnable { */ public PostTanThread(MobileBKUState state) { this.state = state; + this.handler = state.getHandler(); } /* @@ -61,107 +53,13 @@ public class PostTanThread implements Runnable { @Override public void run() { try { - MobileBKUStatus status = this.state.getStatus(); - - Protocol.registerProtocol("https", //$NON-NLS-1$ - new Protocol("https", new TrustedSocketFactory(), 443)); //$NON-NLS-1$ - - HttpClient client = new HttpClient(); - client.getParams().setParameter("http.useragent", //$NON-NLS-1$ - LocalBKUState.PDF_OVER_USER_AGENT_STRING); - - PostMethod method = new PostMethod(status.getBaseURL() - + "/signature.aspx?sid=" + status.getSessionID()); //$NON-NLS-1$ - method.getParams().setContentCharset("utf-8"); //$NON-NLS-1$ - method.addParameter("__VIEWSTATE", status.getViewstate()); //$NON-NLS-1$ - method.addParameter( - "__EVENTVALIDATION", status.getEventvalidation()); //$NON-NLS-1$ - method.addParameter("input_tan", status.getTan()); //$NON-NLS-1$ - method.addParameter("SignButton", "Signieren"); //$NON-NLS-1$ //$NON-NLS-2$ - method.addParameter("Button1", "Identifizieren"); //$NON-NLS-1$ //$NON-NLS-2$ - - int returnCode = client.executeMethod(method); - - String redirectLocation = null; - - GetMethod gmethod = null; - - String responseData = null; - - String server = ""; //$NON-NLS-1$ - - // Follow redirects - do { - // check return code - if (returnCode == HttpStatus.SC_MOVED_TEMPORARILY - || returnCode == HttpStatus.SC_MOVED_PERMANENTLY) { - - Header locationHeader = method - .getResponseHeader("location"); //$NON-NLS-1$ - if (locationHeader != null) { - redirectLocation = locationHeader.getValue(); - } else { - throw new IOException( - "Got HTTP 302 but no location to follow!"); //$NON-NLS-1$ - } - } else if (returnCode == HttpStatus.SC_OK) { - - if (gmethod != null) { - responseData = gmethod.getResponseBodyAsString(); - - if (gmethod - .getResponseHeader(LocalBKUState.BKU_RESPONSE_HEADER_SERVER) != null) { - server = gmethod.getResponseHeader( - LocalBKUState.BKU_RESPONSE_HEADER_SERVER) - .getValue(); - } - - } else { - responseData = method.getResponseBodyAsString(); - - if (method - .getResponseHeader(LocalBKUState.BKU_RESPONSE_HEADER_SERVER) != null) { - server = method.getResponseHeader( - LocalBKUState.BKU_RESPONSE_HEADER_SERVER) - .getValue(); - } - - } - redirectLocation = null; - } else { - throw new HttpException( - HttpStatus.getStatusText(returnCode)); - } - - if (redirectLocation != null) { - gmethod = new GetMethod(redirectLocation); - gmethod.setFollowRedirects(true); - returnCode = client.executeMethod(gmethod); - } - - } while (redirectLocation != null); + String responseData = this.handler.postTAN(); // Now we have received some data lets check it: + log.debug("Response from A-Trust: " + responseData); //$NON-NLS-1$ - log.debug("Repsonse from A-Trust: " + responseData); //$NON-NLS-1$ - - log.info("Server: " + server); //$NON-NLS-1$ - - if (responseData.contains("sl:CreateXMLSignatureResponse xmlns:sl")) { //$NON-NLS-1$ - // success !! - - this.state.getSigningState().setSignatureResponse( - new SLResponse(responseData, server, null, null)); - this.state - .setCommunicationState(MobileBKUCommunicationState.FINAL); - } else { - status.decreaseTanTries(); + this.handler.handleTANResponse(responseData); - if (status.getTanTries() <= 0) { - // move to POST_REQUEST - this.state.setCommunicationState(MobileBKUCommunicationState.POST_REQUEST); - } - } } catch (Exception ex) { log.error("Error in PostTanThread", ex); //$NON-NLS-1$ this.state.setThreadException(ex); -- cgit v1.2.3