[tor-commits] [oonib/master] Add Bouncer API

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


commit e03798beb5678386749022e88c4593a7546951e4
Author: aagbsn <aagbsn at extc.org>
Date:   Mon Aug 19 01:09:32 2013 +0200

    Add Bouncer API
---
 oonib/bouncer/handlers.py |   35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/oonib/bouncer/handlers.py b/oonib/bouncer/handlers.py
index 90651b0..162f61d 100644
--- a/oonib/bouncer/handlers.py
+++ b/oonib/bouncer/handlers.py
@@ -1,4 +1,25 @@
+import json 
+import random
+import yaml
 from oonib.handlers import OONIBHandler
+from oonib import config
+
+#knownHelpers = {'helper-name': ['collector-address1', 'collector-address2', ... 'collector-addressn']}
+knownHelpers = {}
+
+def updateKnownHelpers():
+    with open(config.main.bouncer_file) as f:
+        bouncerFile = yaml.safe_load(f)
+        for collectorName, helpers in bouncerFile['collector'].items():
+            for helperName, helperAddress in helpers['test-helper'].items():
+                if helperName not in knownHelpers.keys():
+                    knownHelpers[helperName] = []
+              
+                knownHelpers[helperName].append(
+                        {'collector-name': collectorName,
+                         'helper-address': helperAddress
+                         })
+updateKnownHelpers()
 
 class BouncerQueryHandler(OONIBHandler):
     def get(self):
@@ -6,6 +27,14 @@ class BouncerQueryHandler(OONIBHandler):
         pass
 
     def post(self):
-        pass
-        # request.get?
-        #'collector': {'foo.onion': {'helper-name': 'helper-address'}, 'bar.onion': {'helper-name': 'helper-address'}} 
+        helpers = json.loads(self.request.body)['test-helpers']
+        a = {}
+        a['collector'] = {}
+        for helperName in helpers:
+            if helperName in knownHelpers.keys():
+                chosen = random.choice(knownHelpers[helperName])
+                collectorName, helperAddress = chosen['collector-name'], chosen['helper-address']
+                if not collectorName in a['collector'].keys():
+                    a['collector'][collectorName] = {'test-helper': {}}
+                a['collector'][collectorName]['test-helper'][helperName] = helperAddress
+        self.write(json.dumps(a))





More information about the tor-commits mailing list