[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [oonib/master] Perform some changes to the API and fix some bugs.
commit 8c17eb22d34ccefca1679e2942c8ec150509e6be
Author: Arturo Filastò <art@xxxxxxxxx>
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()
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits