[tor-commits] [ooni-probe/master] Add support for sending the ASN number of the probe
art at torproject.org
art at torproject.org
Thu Dec 6 21:39:18 UTC 2012
commit 7edc89c9e8391975e42005ee8968b2f7abac70b1
Author: Arturo Filastò <art at fuffa.org>
Date: Thu Dec 6 22:34:30 2012 +0100
Add support for sending the ASN number of the probe
* The ASN number will get sent when creating a new report
---
ooni/reporter.py | 49 ++++++++++++++++++++++++-------------------------
1 files changed, 24 insertions(+), 25 deletions(-)
diff --git a/ooni/reporter.py b/ooni/reporter.py
index 29e6049..e33d395 100644
--- a/ooni/reporter.py
+++ b/ooni/reporter.py
@@ -10,11 +10,12 @@
import traceback
import itertools
import logging
-import sys
-import os
import time
import yaml
import json
+import sys
+import os
+import re
from yaml.representer import *
from yaml.emitter import *
@@ -116,7 +117,6 @@ def safe_dump(data, stream=None, **kw):
"""
return yaml.dump_all([data], stream, Dumper=OSafeDumper, **kw)
- at defer.inlineCallbacks
def getTestDetails(options):
from ooni import __version__ as software_version
@@ -126,28 +126,27 @@ def getTestDetails(options):
config.privacy.includecountry or \
config.privacy.includecity:
log.msg("Running geo IP lookup via check.torproject.org")
- client_ip = yield geodata.myIP()
- client_location = geodata.IPToLocation(client_ip)
- else:
- client_ip = "127.0.0.1"
+ client_geodata = geodata.IPToLocation(config.probe_ip)
if config.privacy.includeip:
- client_geodata['ip'] = client_ip
+ client_geodata['ip'] = config.probe_ip
else:
client_geodata['ip'] = "127.0.0.1"
- client_geodata['asn'] = None
- client_geodata['city'] = None
- client_geodata['countrycode'] = None
-
- if config.privacy.includeasn:
- client_geodata['asn'] = client_location['asn']
+ # Here we unset all the client geodata if the option to not include then
+ # has been specified
+ if client_geodata and not config.privacy.includeasn:
+ client_geodata['asn'] = None
+ else:
+ # XXX this regexp should probably go inside of geodata
+ client_geodata['asn'] = \
+ re.search('AS\d+', client_geodata['asn']).group(0)
- if config.privacy.includecity:
- client_geodata['city'] = client_location['city']
+ if client_geodata and not config.privacy.includecity:
+ client_geodata['city'] = None
- if config.privacy.includecountry:
- client_geodata['countrycode'] = client_location['countrycode']
+ if client_geodata and not config.privacy.includecountry:
+ client_geodata['countrycode'] = None
test_details = {'start_time': otime.utcTimeNow(),
'probe_asn': client_geodata['asn'],
@@ -158,7 +157,7 @@ def getTestDetails(options):
'software_name': 'ooniprobe',
'software_version': software_version
}
- defer.returnValue(test_details)
+ return test_details
class OReporter(object):
def __init__(self, cmd_line_options):
@@ -230,14 +229,13 @@ class YAMLReporter(OReporter):
self._write(safe_dump(entry))
self._write('...\n')
- @defer.inlineCallbacks
def createReport(self, options):
self._writeln("###########################################")
self._writeln("# OONI Probe Report for %s test" % options['name'])
self._writeln("# %s" % otime.prettyDateNow())
self._writeln("###########################################")
- test_details = yield getTestDetails(options)
+ test_details = getTestDetails(options)
test_details['options'] = self.cmd_line_options
self.writeReportEntry(test_details)
@@ -305,13 +303,10 @@ class OONIBReporter(OReporter):
"""
Creates a report on the oonib collector.
"""
- test_name = options['name']
- test_version = options['version']
-
url = self.backend_url + '/report/new'
try:
- test_details = yield getTestDetails(options)
+ test_details = getTestDetails(options)
except Exception, e:
log.exception(e)
@@ -323,8 +318,12 @@ class OONIBReporter(OReporter):
content += safe_dump(test_details)
content += '...\n'
+ test_name = options['name']
+ test_version = options['version']
+
request = {'software_name': test_details['software_name'],
'software_version': test_details['software_version'],
+ 'probe_asn': test_details['probe_asn'],
'test_name': test_name,
'test_version': test_version,
'content': content
More information about the tor-commits
mailing list