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; } }