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 --- .../states/mobilebku/PostCredentialsThread.java | 128 ++------------------- 1 file changed, 8 insertions(+), 120 deletions(-) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java index 45656404..b57143a5 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java @@ -16,19 +16,9 @@ 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; /** @@ -43,13 +33,16 @@ public class PostCredentialsThread implements Runnable { private MobileBKUState state; + private MobileBKUHandler handler; + /** * Constructor * - * @param state + * @param state the MobileBKUState */ public PostCredentialsThread(MobileBKUState state) { this.state = state; + this.handler = state.getHandler(); } /* (non-Javadoc) @@ -58,117 +51,12 @@ public class PostCredentialsThread 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() + "/identification.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("handynummer", status.getPhoneNumber()); //$NON-NLS-1$ - method.addParameter("signaturpasswort", status.getMobilePassword()); //$NON-NLS-1$ - method.addParameter("Button_Identification", "Identifizieren"); //$NON-NLS-1$ //$NON-NLS-2$ - - - - int returnCode = client.executeMethod(method); - - String redirectLocation = null; - - GetMethod gmethod = null; - - String responseData = null; - - // 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(); - } else { - responseData = method.getResponseBodyAsString(); - } - 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.postCredentials(); // Now we have received some data lets check it: - - log.debug("Repsonse from A-Trust: " + responseData); //$NON-NLS-1$ - - String viewState = status.getViewstate(); - String eventValidation = status.getEventvalidation(); - String sessionID = status.getSessionID(); - - String refVal = null; - - status.setRefVal(null); - status.setErrorMessage(null); - - if(responseData.contains("signature.aspx?sid=")) { //$NON-NLS-1$ - // credentials ok! TAN eingabe - sessionID = MobileBKUHelper.extractTag(responseData, "signature.aspx?sid=", "\""); //$NON-NLS-1$ //$NON-NLS-2$ - viewState = MobileBKUHelper.extractTag(responseData, "id=\"__VIEWSTATE\" value=\"", "\""); //$NON-NLS-1$ //$NON-NLS-2$ - - eventValidation = MobileBKUHelper.extractTag(responseData, "id=\"__EVENTVALIDATION\" value=\"", "\""); //$NON-NLS-1$ //$NON-NLS-2$ - - refVal = MobileBKUHelper.extractTag(responseData, "id='vergleichswert'>Vergleichswert:", ""); //$NON-NLS-1$//$NON-NLS-2$ - - status.setRefVal(refVal); - - this.state.setCommunicationState(MobileBKUCommunicationState.POST_TAN); - } else { - // error seite - // extract error text! - - String errorMessage = MobileBKUHelper.extractTag(responseData, "", ""); //$NON-NLS-1$ //$NON-NLS-2$ - - this.state.getStatus().setErrorMessage(errorMessage); - - // force UI again! - status.setMobilePassword(null); - } - - log.info("sessionID: " + sessionID); //$NON-NLS-1$ - log.info("Vergleichswert: " + refVal); //$NON-NLS-1$ - log.info("viewState: " + viewState); //$NON-NLS-1$ - log.info("eventValidation: " + eventValidation); //$NON-NLS-1$ - - status.setSessionID(sessionID); - - status.setViewstate(viewState); - - status.setEventvalidation(eventValidation); - + log.debug("Response from A-Trust: " + responseData); //$NON-NLS-1$ + + this.handler.handleCredentialsResponse(responseData); } catch (Exception ex) { log.error("Error in PostCredentialsThread", ex); //$NON-NLS-1$ this.state.setThreadException(ex); -- cgit v1.2.3