[tor-commits] [bridgedb/master] Fix Filters.filterBridgesByNotBlockedIn to work with new Bridge class.

isis at torproject.org isis at torproject.org
Sat Jul 25 19:26:21 UTC 2015


commit 98cf68d778480aa005e5914cac47164f169b87b9
Author: Isis Lovecruft <isis at torproject.org>
Date:   Thu Apr 16 20:37:24 2015 +0000

    Fix Filters.filterBridgesByNotBlockedIn to work with new Bridge class.
---
 lib/bridgedb/Filters.py           |   37 +++++++++++++++++--------------------
 lib/bridgedb/bridgerequest.py     |    4 +---
 lib/bridgedb/test/legacy_Tests.py |    2 +-
 3 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/lib/bridgedb/Filters.py b/lib/bridgedb/Filters.py
index 94d4325..41df297 100644
--- a/lib/bridgedb/Filters.py
+++ b/lib/bridgedb/Filters.py
@@ -92,28 +92,25 @@ def filterBridgesByTransport(methodname, addressClass=None):
         funcs[ruleset] = _filterByTransport
         return _filterByTransport
 
-def filterBridgesByNotBlockedIn(countryCode, addressClass=None, methodname=None):
-    """ if at least one address:port of the selected addressClass and
-    (optional) transport type is not blocked in countryCode, return True
+def filterBridgesByNotBlockedIn(countryCode):
+    """Return ``True`` if at least one of a bridge's (transport) bridgelines isn't
+    known to be blocked in **countryCode**.
+
+    :param str countryCode: A two-letter country code.
+    :rtype: bool
+    :returns: ``True`` if at least one address of the bridge isn't blocked.
+        ``False`` otherwise.
     """
-    # default to IPv4 if not specified
-    if addressClass is None: addressClass = IPv4Address
-    assert (addressClass) in (IPv4Address, IPv6Address)
-    ruleset = frozenset([countryCode, addressClass, methodname])
+    countryCode = countryCode.lower()
+    ruleset = frozenset([countryCode])
     try:
         return funcs[ruleset]
     except KeyError:
-        def f(bridge):
-            if bridge.isBlocked(countryCode, addressClass, methodname):
-                if addressClass is IPv4Address: ac = "IPv4"
-                else: ac = "IPv6"
-                logmsg = "Removing %s from set of results for country"
-                logmsg += " '%s' with address class %s and transport %s"
-                logging.debug(logmsg % ( bridge.fingerprint, countryCode, ac,
-                    methodname))
+        def _filterByNotBlockedIn(bridge):
+            if bridge.isBlockedIn(countryCode):
                 return False
-            return True # not blocked
-        f.__name__ = "filterBridgesNotBlockedIn(%s,%s,%s)" % \
-                (countryCode,methodname,addressClass)
-        funcs[ruleset] = f
-        return f
+            return True
+        _filterByNotBlockedIn.__name__ = "filterBridgesByNotBlockedIn(%s)" % countryCode
+        setattr(_filterByNotBlockedIn, "description", "unblocked=%s" % countryCode)
+        funcs[ruleset] = _filterByNotBlockedIn
+        return _filterByNotBlockedIn
diff --git a/lib/bridgedb/bridgerequest.py b/lib/bridgedb/bridgerequest.py
index f4eaaa4..532558d 100644
--- a/lib/bridgedb/bridgerequest.py
+++ b/lib/bridgedb/bridgerequest.py
@@ -182,6 +182,4 @@ class BridgeRequestBase(object):
             self.addFilter(Filters.filterBridgesByTransport(transport,
                                                             self.addressClass))
         for country in self.notBlockedIn:
-            self.addFilter(Filters.filterBridgesByNotBlockedIn(country.lower(),
-                                                               self.addressClass,
-                                                               transport))
+            self.addFilter(Filters.filterBridgesByNotBlockedIn(country.lower()))
diff --git a/lib/bridgedb/test/legacy_Tests.py b/lib/bridgedb/test/legacy_Tests.py
index cc1ba6d..5621515 100644
--- a/lib/bridgedb/test/legacy_Tests.py
+++ b/lib/bridgedb/test/legacy_Tests.py
@@ -357,7 +357,7 @@ class IPBridgeDistTests(unittest.TestCase):
         for i in xrange(5):
             b = d.getBridges(randomIPString(), "x", 1,
                     bridgeFilterRules=[
-                        filterBridgesByNotBlockedIn("cn", methodname='obfs2'),
+                        filterBridgesByNotBlockedIn("cn"),
                         filterBridgesByTransport('obfs2'),
                         ])
             try: assert len(b) > 0





More information about the tor-commits mailing list