Unverified Commit 9a7ae57c authored by Philipp Winter's avatar Philipp Winter
Browse files

Merge branch 'release-0.9.4'

parents 0f2349d1 e461a7a0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
#------------------------------------------------------------------------------
attrs==19.2.0
Babel==2.8.0
BeautifulSoup==3.2.2
beautifulsoup4==4.8.2
Mako==1.1.1
pycryptodome==3.9.6
Twisted==19.10.0
@@ -25,6 +25,7 @@ gnupg==2.3.1
ipaddr==2.2.0
mechanize==0.4.5
Pillow==6.2.2
pyOpenSSL==19.0.0
pygeoip==0.3.2
qrcode==6.1
service_identity==18.1.0
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ notifications:
    on_failure: change

python:
  - "2.7"
  - "3.7"

addons:
  hosts:
+6 −0
Original line number Diff line number Diff line
Changes in version 0.9.4 - 2020-02-19

        * FIXES https://bugs.torproject.org/30946
        This patch ports BridgeDB to Python 3.  Python 2 is no longer supported
        since Jan 1, 2020.

Changes in version 0.9.3 - 2020-02-18

        * FIXES <https://bugs.torproject.org/33299>
+1 −1
Original line number Diff line number Diff line
include versioneer.py
include bridgedb/_version.py
include requirements.txt
recursice-include bridgedb/i18n *.po *.pot
recursive-include bridgedb/i18n *.po *.pot
+8 −13
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
them into hashrings for distributors.
"""

import binascii
import bisect
import logging
import re
@@ -28,12 +29,6 @@ from bridgedb.parse.fingerprint import isValidFingerprint
from bridgedb.parse.fingerprint import toHex
from bridgedb.safelog import logSafely

try:
    from cStringIO import StringIO
except ImportError:
    from io import StringIO


ID_LEN = 20  # XXX Only used in commented out line in Storage.py
DIGEST_LEN = 20
PORTSPEC_LEN = 16
@@ -335,7 +330,7 @@ class BridgeRing(object):
            else:
                logging.debug(
                    "Got duplicate bridge %r in main hashring for position %r."
                    % (logSafely(k.encode('hex')), pos.encode('hex')))
                    % (logSafely(binascii.hexlify(k).decode('utf-8')), binascii.hexlify(pos).decode('utf-8')))
        keys.sort()

        if filterBySubnet:
@@ -361,7 +356,7 @@ class BridgeRing(object):

    def dumpAssignments(self, f, description=""):
        logging.info("Dumping bridge assignments for %s..." % self.name)
        for b in self.bridges.itervalues():
        for b in self.bridges.values():
            desc = [ description ]
            for tp,val,_,subring in self.subrings:
                if subring.getBridgeByID(b.identity):
@@ -380,7 +375,7 @@ class FixedBridgeSplitter(object):
    def insert(self, bridge):
        # Grab the first 4 bytes
        digest = self.hmac(bridge.identity)
        pos = long( digest[:8], 16 )
        pos = int( digest[:8], 16 )
        which = pos % len(self.rings)
        self.rings[which].insert(bridge)

@@ -405,7 +400,7 @@ class FixedBridgeSplitter(object):
            description is ``"IPv6 obfs2 bridges"`` the line would read:
            ``"IPv6 obfs2 bridges ring=3"``.
        """
        for index, ring in zip(xrange(len(self.rings)), self.rings):
        for index, ring in zip(range(len(self.rings)), self.rings):
            ring.dumpAssignments(filename, "%s ring=%s" % (description, index))


@@ -544,7 +539,7 @@ class BridgeSplitter(object):
            logging.info("Current rings: %s" % " ".join(self.ringsByName))

    def dumpAssignments(self, f, description=""):
        for name,ring in self.ringsByName.iteritems():
        for name,ring in self.ringsByName.items():
            ring.dumpAssignments(f, "%s %s" % (description, name))


@@ -633,8 +628,8 @@ class FilteredBridgeSplitter(object):
        """
        filterNames = []

        for filterName in [x.func_name for x in list(ringname)]:
            # Using `assignBridgesToSubring.func_name` gives us a messy
        for filterName in [x.__name__ for x in list(ringname)]:
            # Using `assignBridgesToSubring.__name__` gives us a messy
            # string which includes all parameters and memory addresses. Get
            # rid of this by partitioning at the first `(`:
            realFilterName = filterName.partition('(')[0]
Loading