diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f6e82f..9cd1c08 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,7 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased]
-- Nothing yet
+### Fixed
+
+- ISD-AS assignment parser broken after website change
+ [#12](https://github.com/netsec-ethz/scion-java-multiping/pull/12)
## [0.4.0] - 2025-04-04
diff --git a/pom.xml b/pom.xml
index 99f02c7..93648e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
org.scion
jpan
- 0.5.1
+ 0.5.3
diff --git a/src/main/java/org/scion/multiping/util/DownloadAssignmentsFromWeb.java b/src/main/java/org/scion/multiping/util/DownloadAssignmentsFromWeb.java
index 15b2e1f..aad5709 100644
--- a/src/main/java/org/scion/multiping/util/DownloadAssignmentsFromWeb.java
+++ b/src/main/java/org/scion/multiping/util/DownloadAssignmentsFromWeb.java
@@ -17,6 +17,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -24,7 +25,7 @@
public class DownloadAssignmentsFromWeb {
private static final String HTTPS_URL =
- "https://docs.anapaya.net/en/latest/resources/isd-as-assignments/";
+ "https://docs.anapaya.net/en/latest/resources/isd-as-assignments/";
public static void main(String[] args) throws IOException {
new DownloadAssignmentsFromWeb().jsoup();
@@ -42,22 +43,26 @@ public static List getList() {
public List jsoup() throws IOException {
List result = new ArrayList<>(100);
Document doc = Jsoup.connect(HTTPS_URL).get();
- for (Element bc : doc.body().getElementsByAttributeValue("id", "isd-membership")) {
- // System.out.println("eee " + bc);
- for (Element bc2 : bc.getElementsByTag("tbody")) {
- // System.out.println("eee2 " + bc2);
- for (Element bc3 : bc2.children()) {
- // System.out.println("eee3 " + bc3);
- String isdAs = bc3.child(0).getElementsByTag("p").text();
- String name = bc3.child(1).getElementsByTag("p").text();
- // System.out.println(isdAs + " " + name);
- result.add(new ParseAssignments.HostEntry(ScionUtil.parseIA(isdAs), name));
- // for (Element bc4 : bc3.children()) {
- // System.out.println("eee4 " + bc4.getElementsByTag("p").text());
- // }
+
+ for (Element table : doc.getElementsByTag("table")) {
+ for (Element isd_as : table.getElementsContainingText("ISD-AS")) {
+ if ("table".equals(isd_as.tagName())) {
+ for (Element te : table.children()) {
+ if ("thead".equals(te.tagName())) {
+ continue;
+ }
+ for (Element te2 : te.children()) {
+ // System.out.println(" te3: " + te2.tag());
+ String isdAs = te2.child(0).getElementsByTag("td").text();
+ String name = te2.child(1).getElementsByTag("td").text();
+ // System.out.println(isdAs + " " + name);
+ result.add(new ParseAssignments.HostEntry(ScionUtil.parseIA(isdAs), name));
+ }
+ }
}
}
}
+
return result;
}
}