diff options
author | Tobias Kellner <tobias.kellner@iaik.tugraz.at> | 2016-06-30 14:47:45 +0200 |
---|---|---|
committer | Tobias Kellner <tobias.kellner@iaik.tugraz.at> | 2016-06-30 14:47:45 +0200 |
commit | 4bbf0adc1281e431c1e77481803c5b53de4795df (patch) | |
tree | 82ac6baef2e053af8b5dc4deec4e0bf6527bd564 | |
parent | 967a0f646db5bbd802e7ee562ef1891078b51c10 (diff) | |
download | pdf-over-4bbf0adc1281e431c1e77481803c5b53de4795df.tar.gz pdf-over-4bbf0adc1281e431c1e77481803c5b53de4795df.tar.bz2 pdf-over-4bbf0adc1281e431c1e77481803c5b53de4795df.zip |
Allow mobile BKU implementations to parse and set cookies
5 files changed, 74 insertions, 3 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustStatus.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustStatus.java index a97826b2..ecfd9f2b 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustStatus.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustStatus.java @@ -16,6 +16,7 @@ package at.asit.pdfover.gui.bku.mobile; // Imports +import org.apache.commons.httpclient.Cookie; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -99,5 +100,21 @@ public class ATrustStatus extends AbstractMobileBKUStatusImpl { public void setQRCode(String qrcode) { this.qrcode = qrcode; } - + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.bku.mobile.MobileBKUStatus#parseCookies(org.apache.commons.httpclient.Cookie[]) + */ + @Override + public void parseCookies(Cookie[] cookies) { + //not needed yet + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.bku.mobile.MobileBKUStatus#getCookies() + */ + @Override + public Cookie[] getCookies() { + //not needed yet + return null; + } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/IAIKStatus.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/IAIKStatus.java index 3f354f94..92e88c77 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/IAIKStatus.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/IAIKStatus.java @@ -16,6 +16,7 @@ package at.asit.pdfover.gui.bku.mobile; // Imports +import org.apache.commons.httpclient.Cookie; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,7 +29,6 @@ public class IAIKStatus extends AbstractMobileBKUStatusImpl { /** * SLF4J Logger instance **/ - @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(IAIKStatus.class); /** Maximum number of TAN tries */ @@ -68,13 +68,38 @@ public class IAIKStatus extends AbstractMobileBKUStatusImpl { this.viewState = viewState; } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.bku.mobile.MobileBKUStatus#parseCookies(org.apache.commons.httpclient.Cookie[]) + */ + @Override + public void parseCookies(Cookie[] cookies) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals("JSESSIONID")) { //$NON-NLS-1$ + log.debug("Got session ID: " + cookie.toExternalForm()); //$NON-NLS-1$ + setSessionID(cookie.getValue()); + } + } + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.bku.mobile.MobileBKUStatus#getCookies() + */ + @Override + public Cookie[] getCookies() { + // Currently not used + return null; + } + @Override public String ensureSessionID(String url) { if (url.contains("jsessionid=")) //$NON-NLS-1$ return url; - url += ";jsessionid=" + getSessionID(); //$NON-NLS-1$ + String sid = getSessionID(); + if (sid != null) + url += ";jsessionid=" + sid; //$NON-NLS-1$ return url; } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHandler.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHandler.java index 434a351a..da6505d3 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHandler.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHandler.java @@ -261,6 +261,8 @@ public abstract class MobileBKUHandler { if (server != null) log.info("Server: " + server); //$NON-NLS-1$ + getStatus().parseCookies(client.getState().getCookies()); + return responseData; } @@ -342,6 +344,8 @@ public abstract class MobileBKUHandler { if (server != null) log.info("Server: " + server); //$NON-NLS-1$ + getStatus().parseCookies(client.getState().getCookies()); + return responseData; } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHelper.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHelper.java index 38ca66e3..213aea08 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHelper.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHelper.java @@ -19,6 +19,9 @@ package at.asit.pdfover.gui.bku.mobile; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.httpclient.Cookie; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpState; import org.apache.commons.httpclient.protocol.Protocol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -260,6 +263,14 @@ public class MobileBKUHelper { */ public static HttpClient getHttpClient(MobileBKUStatus status) { HttpClient client = BKUHelper.getHttpClient(true); + Cookie[] cookies = status.getCookies(); + if (cookies != null) { + HttpState state = new HttpState(); + for (Cookie cookie : cookies) { + state.addCookie(cookie); + } + client.setState(state); + } return client; } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUStatus.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUStatus.java index 321faac5..2a5bb4e7 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUStatus.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUStatus.java @@ -15,6 +15,8 @@ */ package at.asit.pdfover.gui.bku.mobile; +import org.apache.commons.httpclient.Cookie; + /** * */ @@ -132,6 +134,18 @@ public interface MobileBKUStatus { public void setSignatureDataURL(String signatureDataURL); /** + * Parse the cookies set by the SL request server + * @param cookies the cookies + */ + void parseCookies(Cookie[] cookies); + + /** + * Get the cookies to set during a request to the SL server + * @return the cookies to set + */ + public Cookie[] getCookies(); + + /** * Ensure that given URL contains a session ID (if necessary) * @param url URL to check for session ID * @return resulting URL |