summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Abraham <andreas.abraham@egiz.gv.at>2019-07-31 13:24:36 +0200
committerAndreas Abraham <andreas.abraham@egiz.gv.at>2019-07-31 13:24:36 +0200
commit0f031d36c2e6292b2ba77ca6903659ac0e9fc378 (patch)
tree3d3d6c4a9c0e539be77ba29a4ff81b02aeb39b89
parent90c6d9ce3156026664feb807b9231205676e3ad6 (diff)
downloadpdf-over-0f031d36c2e6292b2ba77ca6903659ac0e9fc378.tar.gz
pdf-over-0f031d36c2e6292b2ba77ca6903659ac0e9fc378.tar.bz2
pdf-over-0f031d36c2e6292b2ba77ca6903659ac0e9fc378.zip
pdf-over uses now jsoup to read dynamic values from html content
-rw-r--r--pdf-over-gui/pom.xml7
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustHandler.java25
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustStatus.java63
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/MobileBKUHelper.java39
4 files changed, 126 insertions, 8 deletions
diff --git a/pdf-over-gui/pom.xml b/pdf-over-gui/pom.xml
index f62f0862..99b31287 100644
--- a/pdf-over-gui/pom.xml
+++ b/pdf-over-gui/pom.xml
@@ -56,7 +56,12 @@
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
-
+ <dependency>
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <version>1.11.3</version>
+ </dependency>
+
</dependencies>
<dependencyManagement>
<dependencies>
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustHandler.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustHandler.java
index fef31d69..44e35a64 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustHandler.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/mobile/ATrustHandler.java
@@ -106,16 +106,24 @@ public class ATrustHandler extends MobileBKUHandler {
String eventValidation = MobileBKUHelper.extractValueFromTagWithParam(
responseData, "", "id", "__EVENTVALIDATION", "value"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ String viewstateGenerator = MobileBKUHelper.extractValueFromTagWithParamOptional(responseData, "", "id", "__VIEWSTATEGENERATOR", "value"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ String dynamicAttrPhonenumber = MobileBKUHelper.getNameAttribute(responseData, "handynummer"); //$NON-NLS-1$
+ String dynamicAttrPassword = MobileBKUHelper.getNameAttribute(responseData, "signaturpasswort"); //$NON-NLS-1$
+ String dynamicAttrButtonId = MobileBKUHelper.getNameAttribute(responseData, "Button_Identification"); //$NON-NLS-1$
+
log.info("sessionID: " + sessionID); //$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);
+ if (viewstateGenerator != null ) { status.setViewStateGenerator(viewstateGenerator); }
+ status.setDynAttrPhonenumber(dynamicAttrPhonenumber);
+ status.setDynAttrPassword(dynamicAttrPassword);
+ status.setDynAttrBtnId(dynamicAttrButtonId);
}
/* (non-Javadoc)
@@ -131,10 +139,11 @@ public class ATrustHandler extends MobileBKUHandler {
PostMethod post = new PostMethod(status.getBaseURL() + "/identification.aspx?sid=" + status.getSessionID()); //$NON-NLS-1$
post.getParams().setContentCharset("utf-8"); //$NON-NLS-1$
post.addParameter("__VIEWSTATE", status.getViewstate()); //$NON-NLS-1$
+ post.addParameter("__VIEWSTATEGENERATOR", status.getViewstateGenerator() ); //$NON-NLS-1$
post.addParameter("__EVENTVALIDATION", status.getEventvalidation()); //$NON-NLS-1$
- post.addParameter("handynummer", status.getPhoneNumber()); //$NON-NLS-1$
- post.addParameter("signaturpasswort", status.getMobilePassword()); //$NON-NLS-1$
- post.addParameter("Button_Identification", "Identifizieren"); //$NON-NLS-1$ //$NON-NLS-2$
+ post.addParameter(status.getDynAttrPhonenumber(), status.getPhoneNumber()); //$NON-NLS-1$
+ post.addParameter(status.getDynAttrPassword(), status.getMobilePassword()); //$NON-NLS-1$
+ post.addParameter(status.getDynAttrBtnId(), "Identifizieren"); //$NON-NLS-1$ //$NON-NLS-2$
return executePost(client, post);
}
@@ -153,10 +162,11 @@ public class ATrustHandler extends MobileBKUHandler {
String qrCode = null;
String tanField = null;
String tanTextTan = null;
+ String viewstateGenerator = status.getViewstateGenerator();
status.setErrorMessage(null);
- if (responseData.contains(/*"ExpiresInfo.aspx?sid="*/"./identification.aspx?sid=")) { //$NON-NLS-1$
+ if (responseData.contains("ExpiresInfo.aspx?sid=")) { //$NON-NLS-1$
// Certificate expiration interstitial - skip
String notice = Messages.getString("mobileBKU.notice") + " " + //$NON-NLS-1$ //$NON-NLS-2$
StringEscapeUtils.unescapeHtml4(MobileBKUHelper.extractContentFromTagWithParam(responseData, "span", "id", "Label2")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -186,7 +196,7 @@ public class ATrustHandler extends MobileBKUHandler {
expiryNoticeDisplayed = true;
}
- String t_sessionID = MobileBKUHelper.extractSubstring(responseData, /*"ExpiresInfo.aspx?sid="*/"./identification.aspx?sid=", "\""); //$NON-NLS-1$ //$NON-NLS-2$
+ String t_sessionID = MobileBKUHelper.extractSubstring(responseData, "ExpiresInfo.aspx?sid=", "\""); //$NON-NLS-1$ //$NON-NLS-2$
String t_viewState = MobileBKUHelper.extractValueFromTagWithParam(responseData, "", "id", "__VIEWSTATE", "value"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
String t_eventValidation = MobileBKUHelper.extractValueFromTagWithParam(responseData, "", "id", "__EVENTVALIDATION", "value"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -290,6 +300,7 @@ public class ATrustHandler extends MobileBKUHandler {
status.setViewstate(viewState);
status.setEventvalidation(eventValidation);
status.setSignatureDataURL(signatureDataURL);
+ status.setViewStateGenerator(viewstateGenerator);
}
/* (non-Javadoc)
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 b81e15be..af804a98 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
@@ -41,6 +41,10 @@ public class ATrustStatus extends AbstractMobileBKUStatusImpl {
private String qrcode = null;
private boolean tanField = false;
private boolean isAPPTan = false;
+ private String viewstateGenerator;
+ private String dynAttrPhonenumber;
+ private String dynAttrPassword;
+ private String dynAttrBtnId;
/**
* Constructor
@@ -130,6 +134,20 @@ public class ATrustStatus extends AbstractMobileBKUStatusImpl {
public boolean getIsAPPTan() {
return this.isAPPTan;
}
+
+ /**
+ * @param viewstateGenerator
+ */
+ public void setViewStateGenerator(String viewstateGenerator) {
+ this.viewstateGenerator = viewstateGenerator;
+ }
+
+ /**
+ * @return
+ */
+ public String getViewstateGenerator() {
+ return this.viewstateGenerator;
+ }
/* (non-Javadoc)
* @see at.asit.pdfover.gui.bku.mobile.MobileBKUStatus#parseCookies(org.apache.commons.httpclient.Cookie[])
@@ -147,4 +165,49 @@ public class ATrustStatus extends AbstractMobileBKUStatusImpl {
//not needed yet
return null;
}
+
+
+
+ /**
+ * @return the dynAttrPhonenumber
+ */
+ public String getDynAttrPhonenumber() {
+ return this.dynAttrPhonenumber;
+ }
+
+ /**
+ * @param dynAttrPhonenumber the dynAttrPhonenumber to set
+ */
+ public void setDynAttrPhonenumber(String dynAttrPhonenumber) {
+ this.dynAttrPhonenumber = dynAttrPhonenumber;
+ }
+
+ /**
+ * @return the dynAttrPassword
+ */
+ public String getDynAttrPassword() {
+ return this.dynAttrPassword;
+ }
+
+ /**
+ * @param dynAttrPassword the dynAttrPassword to set
+ */
+ public void setDynAttrPassword(String dynAttrPassword) {
+ this.dynAttrPassword = dynAttrPassword;
+ }
+
+ /**
+ * @return the dynAttrBtnId
+ */
+ public String getDynAttrBtnId() {
+ return this.dynAttrBtnId;
+ }
+
+ /**
+ * @param dynAttrBtnId the dynAttrBtnId to set
+ */
+ public void setDynAttrBtnId(String dynAttrBtnId) {
+ this.dynAttrBtnId = dynAttrBtnId;
+ }
+
}
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 410ba3c1..04397f14 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
@@ -24,6 +24,11 @@ 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.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.nodes.Node;
+import org.jsoup.select.Elements;
+import org.jsoup.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -148,6 +153,23 @@ public class MobileBKUHelper {
}
return found.substring(startidx + 1, endidx);
}
+
+ /**
+ * This method is the same as the non optional method but instead of throwing the exception it returns null
+ * @return the string or null
+ */
+ public static String extractValueFromTagWithParamOptional(String data, String tag,
+ String param, String value, String returnparam) {
+ String str;
+ try {
+ str = extractValueFromTagWithParam(data, tag, param, value, returnparam);
+ } catch (Exception e) {
+ log.debug("Optional value is not available");
+ str = null;
+ }
+ return str;
+
+ }
/**
* Extracts the content from an XML tag from data with the given param="value"
@@ -291,4 +313,21 @@ public class MobileBKUHelper {
}
return client;
}
+
+ /***
+ *
+ * @param htmlString describes the html data in String representation
+ * @param attributeName is the attribute which should be selected
+ * @return returns the attribute name or null otherswise
+ */
+ public static String getNameAttribute(String htmlString, String attributeName) {
+
+ Document doc = Jsoup.parse(htmlString);
+ Elements inputs = doc.select("div input#" + attributeName);
+
+ if (inputs.size() == 0 ) return null;
+
+ String name = inputs.get(0).attr("name");
+ return name;
+ }
}