commit de75b701f0b5d25e4362cdaacb7c20815a41928d Author: Arturo Filastò arturo@filasto.net Date: Tue May 31 13:57:07 2016 +0200
When we don't find the report inside of reporting.yaml upload to the canonical bouncer.
* This fixes #515 --- ooni/__init__.py | 14 +++++++++++--- ooni/oonicli.py | 11 ++++------- ooni/report/tool.py | 45 +++++++++++++++++++++++++++------------------ 3 files changed, 42 insertions(+), 28 deletions(-)
diff --git a/ooni/__init__.py b/ooni/__init__.py index 70d56cf..c416dee 100644 --- a/ooni/__init__.py +++ b/ooni/__init__.py @@ -5,7 +5,15 @@ __version__ = "1.5.1.dev0" # This is the version number of resources to be downloaded # when a release is made it should be aligned to __version__ __resources_version__ = "1.4.2" +canonical_bouncer = 'httpo://nkvphnp3p6agi5qq.onion'
-__all__ = ['config', 'inputunit', 'kit', - 'lib', 'nettest', 'oonicli', 'report', 'reporter', - 'templates', 'utils'] + +__all__ = [ + 'common', + 'deckgen', + 'nettest', + 'report', + 'resources', + 'templates', + 'utils' +] diff --git a/ooni/oonicli.py b/ooni/oonicli.py index 47c26b2..5aa538c 100644 --- a/ooni/oonicli.py +++ b/ooni/oonicli.py @@ -10,7 +10,7 @@ import urlparse from twisted.python import usage from twisted.internet import defer
-from ooni import errors, __version__ +from ooni import errors, __version__, canonical_bouncer from ooni.settings import config from ooni.utils import log from backend_client import CollectorClient @@ -44,12 +44,9 @@ class Options(usage.Options): ["collector", "c", None, "Specify the address of the collector for " "test results. In most cases a user will " "prefer to specify a bouncer over this."], - ["bouncer", "b", 'httpo://nkvphnp3p6agi5qq.onion', "Specify the " - "bouncer used to " - "obtain the " - "address of the " - "collector and " - "test helpers."], + ["bouncer", "b", canonical_bouncer, "Specify the bouncer used to " + "obtain the address of the " + "collector and test helpers."], ["logfile", "l", None, "Write to this logs to this filename."], ["pcapfile", "O", None, "Write a PCAP of the ooniprobe session to " "this filename."], diff --git a/ooni/report/tool.py b/ooni/report/tool.py index d80a8e0..faa407f 100644 --- a/ooni/report/tool.py +++ b/ooni/report/tool.py @@ -4,6 +4,7 @@ import sys
from twisted.internet import defer
+from ooni import canonical_bouncer from ooni.reporter import OONIBReporter, OONIBReportLog
from ooni.utils import log @@ -11,6 +12,22 @@ from ooni.report import parser from ooni.settings import config from ooni.backend_client import BouncerClient, CollectorClient
+@defer.inlineCallbacks +def lookup_collector_client(report_header, bouncer): + oonib_client = BouncerClient(bouncer) + net_tests = [{ + 'test-helpers': [], + 'input-hashes': report_header['input_hashes'], + 'name': report_header['test_name'], + 'version': report_header['test_version'], + }] + result = yield oonib_client.lookupTestCollector( + net_tests + ) + collector_client = CollectorClient( + address=result['net-tests'][0]['collector'] + ) + defer.returnValue(collector_client)
@defer.inlineCallbacks def upload(report_file, collector=None, bouncer=None): @@ -26,34 +43,26 @@ def upload(report_file, collector=None, bouncer=None):
report = parser.ReportLoader(report_file) if bouncer and collector_client is None: - oonib_client = BouncerClient(bouncer) - net_tests = [{ - 'test-helpers': [], - 'input-hashes': report.header['input_hashes'], - 'name': report.header['test_name'], - 'version': report.header['test_version'], - }] - result = yield oonib_client.lookupTestCollector( - net_tests - ) - collector_client = CollectorClient( - address=result['net-tests'][0]['collector'] - ) + collector_client = yield lookup_collector_client(report.header, + bouncer)
if collector_client is None: try: collector_settings = report_log[report_file]['collector'] if collector_settings is None: - raise KeyError + log.msg("Skipping uploading of %s since this measurement " + "was run by specifying no collector." % + report_file) + defer.returnValue(None) elif isinstance(collector_settings, dict): collector_client = CollectorClient(settings=collector_settings) elif isinstance(collector_settings, str): collector_client = CollectorClient(address=collector_settings) except KeyError: - raise Exception( - "No collector or bouncer specified" - " and collector not in report log." - ) + log.msg("Could not find %s in reporting.yaml. Looking up " + "collector with canonical bouncer." % report_file) + collector_client = yield lookup_collector_client(report.header, + canonical_bouncer)
oonib_reporter = OONIBReporter(report.header, collector_client) log.msg("Creating report for %s with %s" % (report_file,
tor-commits@lists.torproject.org