summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostTanThread.java114
1 files changed, 6 insertions, 108 deletions
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);