[tor-commits] [ooni-probe/master] Make the geoip lookup code more robust

art at torproject.org art at torproject.org
Mon May 30 16:28:33 UTC 2016


commit 2627cd5ad2058d616cc037cd590b9f64112882a9
Author: Arturo Filastò <arturo at filasto.net>
Date:   Mon May 2 17:54:36 2016 +0200

    Make the geoip lookup code more robust
---
 ooni/geoip.py | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/ooni/geoip.py b/ooni/geoip.py
index dcc799e..fa6d1ae 100644
--- a/ooni/geoip.py
+++ b/ooni/geoip.py
@@ -34,25 +34,22 @@ def IPToLocation(ipaddr):
     asn_file = config.get_data_file_path('GeoIP/GeoIPASNum.dat')
 
     location = {'city': None, 'countrycode': 'ZZ', 'asn': 'AS0'}
-
-    def error():
+    if not asn_file or not country_file:
         log.err("Could not find GeoIP data file in data directories."
                 "Try running ooniresources or"
                 " edit your ooniprobe.conf")
+        return location
 
-    try:
-        country_dat = GeoIP(country_file)
-        location['countrycode'] = country_dat.country_code_by_addr(ipaddr)
-        if not location['countrycode']:
-            location['countrycode'] = 'ZZ'
-    except IOError:
-        error()
+    country_dat = GeoIP(country_file)
+    asn_dat = GeoIP(asn_file)
 
-    try:
-        asn_dat = GeoIP(asn_file)
-        location['asn'] = asn_dat.org_by_addr(ipaddr).split(' ')[0]
-    except:
-        error()
+    country_code = country_dat.country_code_by_addr(ipaddr)
+    if country_code is not None:
+        location['countrycode'] =  country_code
+
+    asn = asn_dat.org_by_addr(ipaddr)
+    if asn is not None:
+        location['asn'] = asn.split(' ')[0]
 
     return location
 





More information about the tor-commits mailing list