[tor-commits] [onionoo/master] Include AS information in relay details documents.

karsten at torproject.org karsten at torproject.org
Tue Feb 28 10:00:48 UTC 2012


commit 03ca53d307ba33221fe18068c65a6b2d7c2ff02c
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Tue Feb 28 10:52:17 2012 +0100

    Include AS information in relay details documents.
    
    Implements #5252.
---
 .gitignore                                       |    2 ++
 src/org/torproject/onionoo/CurrentNodes.java     |   21 +++++++++++++++++++++
 src/org/torproject/onionoo/DetailDataWriter.java |    8 ++++++++
 src/org/torproject/onionoo/Main.java             |    1 +
 src/org/torproject/onionoo/Node.java             |   14 ++++++++++++++
 5 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore
index 7eb45ce..4ee5771 100755
--- a/.gitignore
+++ b/.gitignore
@@ -7,5 +7,7 @@ out/
 onionoo.war
 etc/context.xml
 GeoIP.dat
+GeoIPASNum.dat
+GeoLiteCity.dat
 log
 
diff --git a/src/org/torproject/onionoo/CurrentNodes.java b/src/org/torproject/onionoo/CurrentNodes.java
index 33e048a..2264510 100644
--- a/src/org/torproject/onionoo/CurrentNodes.java
+++ b/src/org/torproject/onionoo/CurrentNodes.java
@@ -253,6 +253,27 @@ public class CurrentNodes {
     }
   }
 
+  public void lookUpASes() {
+    File geoIPASNumDatFile = new File("GeoIPASNum.dat");
+    if (!geoIPASNumDatFile.exists()) {
+      System.err.println("No GeoIPASNum.dat file in /.");
+      return;
+    }
+    try {
+      LookupService ls = new LookupService(geoIPASNumDatFile);
+      for (Node relay : currentRelays.values()) {
+        String org = ls.getOrg(relay.getAddress());
+        if (org != null && org.indexOf(" ") > 0 && org.startsWith("AS")) {
+          relay.setASNumber(org.substring(0, org.indexOf(" ")));
+          relay.setASName(org.substring(org.indexOf(" ") + 1));
+        }
+      }
+      ls.close();
+    } catch (IOException e) {
+      System.err.println("Could not look up ASes for relays.");
+    }
+  }
+
   public void readBridgeNetworkStatuses() {
     DescriptorReader reader =
         DescriptorSourceFactory.createDescriptorReader();
diff --git a/src/org/torproject/onionoo/DetailDataWriter.java b/src/org/torproject/onionoo/DetailDataWriter.java
index 5af8688..e6bdcdd 100644
--- a/src/org/torproject/onionoo/DetailDataWriter.java
+++ b/src/org/torproject/onionoo/DetailDataWriter.java
@@ -309,6 +309,8 @@ public class DetailDataWriter {
       String countryName = entry.getCountryName();
       String regionName = entry.getRegionName();
       String cityName = entry.getCityName();
+      String aSNumber = entry.getASNumber();
+      String aSName = entry.getASName();
       StringBuilder sb = new StringBuilder();
       sb.append("{\"version\":1,\n"
           + "\"nickname\":\"" + nickname + "\",\n"
@@ -346,6 +348,12 @@ public class DetailDataWriter {
       if (cityName != null) {
         sb.append(",\n\"city_name\":\"" + cityName + "\"");
       }
+      if (aSNumber != null) {
+        sb.append(",\n\"as_number\":\"" + aSNumber + "\"");
+      }
+      if (cityName != null) {
+        sb.append(",\n\"as_name\":\"" + aSName + "\"");
+      }
 
       /* Add exit addresses if at least one of them is distinct from the
        * onion-routing addresses. */
diff --git a/src/org/torproject/onionoo/Main.java b/src/org/torproject/onionoo/Main.java
index 7517a23..8c4497d 100644
--- a/src/org/torproject/onionoo/Main.java
+++ b/src/org/torproject/onionoo/Main.java
@@ -12,6 +12,7 @@ public class Main {
     cn.readRelayNetworkConsensuses();
     cn.setRelayRunningBits();
     cn.lookUpCountries();
+    cn.lookUpASes();
     cn.readBridgeNetworkStatuses();
     cn.setBridgeRunningBits();
     cn.writeRelaySearchDataFile();
diff --git a/src/org/torproject/onionoo/Node.java b/src/org/torproject/onionoo/Node.java
index dd4fc8e..ad26746 100644
--- a/src/org/torproject/onionoo/Node.java
+++ b/src/org/torproject/onionoo/Node.java
@@ -16,6 +16,8 @@ public class Node {
   private String countryName;
   private String regionName;
   private String cityName;
+  private String aSName;
+  private String aSNumber;
   private long lastSeenMillis;
   private int orPort;
   private int dirPort;
@@ -77,6 +79,18 @@ public class Node {
   public String getCityName() {
     return this.cityName;
   }
+  public void setASNumber(String aSNumber) {
+    this.aSNumber = aSNumber;
+  }
+  public String getASNumber() {
+    return this.aSNumber;
+  }
+  public void setASName(String aSName) {
+    this.aSName = aSName;
+  }
+  public String getASName() {
+    return this.aSName;
+  }
   public long getLastSeenMillis() {
     return this.lastSeenMillis;
   }



More information about the tor-commits mailing list