[tor-commits] [oonib/master] Perform some changes to the API and fix some bugs.

art at torproject.org art at torproject.org
Wed Sep 11 09:13:52 UTC 2013


commit 8c17eb22d34ccefca1679e2942c8ec150509e6be
Author: Arturo Filastò <art at fuffa.org>
Date:   Fri Aug 23 16:46:53 2013 +0200

    Perform some changes to the API and fix some bugs.
---
 oonib/bouncer/handlers.py |   33 +++++++++++++++++++++++++--------
 oonib/errors.py           |    3 ++-
 oonib/input/handlers.py   |    1 +
 oonib/report/handlers.py  |    5 +++--
 4 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/oonib/bouncer/handlers.py b/oonib/bouncer/handlers.py
index 44f1c63..e669e8e 100644
--- a/oonib/bouncer/handlers.py
+++ b/oonib/bouncer/handlers.py
@@ -1,6 +1,7 @@
 import json 
 import random
 import yaml
+from oonib import errors as e
 from oonib.handlers import OONIBHandler
 from oonib import config
 
@@ -51,13 +52,18 @@ class Bouncer(object):
         requested_helpers = ['a', 'b', 'c']
         will return:
          {
-            'httpo://thirteenchars1.onion': {
-                'a': '127.0.0.1',
-                'b': 'http://127.0.0.1',
-                'c': '127.0.0.1:590',
-            }
+            'a': '127.0.0.1',
+            'b': 'http://127.0.0.1',
+            'c': '127.0.0.1:590',
+            'collector': 'httpo://thirteenchars1.onion'
          }
 
+         or 
+
+         {}
+
+         if no valid helper was found
+
         """
         result = {}
         for helper_name in requested_helpers:
@@ -65,7 +71,19 @@ class Bouncer(object):
                 if collector not in result.keys():
                     result[collector] = {}
                 result[collector][helper_name] = helper_address
-        return result
+
+        helper_list = []
+        for collector, helpers in result.items():
+            if len(helpers) == len(requested_helpers):
+                valid_helpers = helpers
+                valid_helpers['collector'] = collector
+                helper_list.append(valid_helpers)
+            else:
+                continue
+        if len(helper_list) == 0:
+            return {}
+        else:
+            return random.choice(helper_list)
 
 class BouncerQueryHandler(OONIBHandler):
     def initialize(self):
@@ -95,6 +113,5 @@ class BouncerQueryHandler(OONIBHandler):
         except KeyError:
             raise e.TestHelpersKeyMissing
 
-        response = {}
-        response['collector'] = self.bouncer.filterHelperAddresses(requested_helpers)
+        response = self.bouncer.filterHelperAddresses(requested_helpers)
         self.write(response)
diff --git a/oonib/errors.py b/oonib/errors.py
index 1dc8539..12295aa 100644
--- a/oonib/errors.py
+++ b/oonib/errors.py
@@ -1,7 +1,8 @@
 from cyclone.web import HTTPError
 
 class OONIBError(HTTPError):
-    pass
+    def __init__(self):
+        pass
 
 class InvalidRequest(OONIBError):
     pass
diff --git a/oonib/input/handlers.py b/oonib/input/handlers.py
index bba0af9..d467854 100644
--- a/oonib/input/handlers.py
+++ b/oonib/input/handlers.py
@@ -23,6 +23,7 @@ class InputDescHandler(OONIBHandler):
             self.write({'error': 'missing-input'})
  
         except Exception, e:
+            log.exception(e)
             log.err("Invalid Input Descriptor found for id %s" % inputID) 
             self.set_status(500)
             self.write({'error': 'invalid-input-descriptor'})
diff --git a/oonib/report/handlers.py b/oonib/report/handlers.py
index 2441ddf..32f653d 100644
--- a/oonib/report/handlers.py
+++ b/oonib/report/handlers.py
@@ -132,7 +132,8 @@ class NewReportHandlerFile(OONIBHandler):
 
     def checkPolicy(self):
         policy = Policy()
-        policy.validateInputHash(self.inputHash)
+        for input_hash in self.inputHashes:
+            policy.validateInputHash(input_hash)
         policy.validateNettest(self.testName)
 
     def post(self):
@@ -194,7 +195,7 @@ class NewReportHandlerFile(OONIBHandler):
        
         if config.main.policy_file:
             try:
-                self.inputHash = report_data['input_hash']
+                self.inputHashes = report_data['input_hashes']
             except KeyError:
                 raise e.InputHashNotProvided
             self.checkPolicy()





More information about the tor-commits mailing list