Unverified Commit bbf1bdc5 authored by Philipp Winter's avatar Philipp Winter
Browse files

Merge branch 'release-0.8.0'

parents 2d86ae0c 7df8ccc7
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
#     $ make coverage
#
coverage==4.2
git+https://git.torproject.org/user/phw/leekspin.git@d34c804cd0f01af5206833e62c0dedec8565b235#egg=leekspin
mechanize==0.2.5
pep8==1.5.7
# pylint must be pinned until pylint bug #203 is fixed. See
+0 −1
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
#------------------------------------------------------------------------------
coverage==4.2
coveralls==1.2.0
git+https://git.torproject.org/user/phw/leekspin.git@d34c804cd0f01af5206833e62c0dedec8565b235#egg=leekspin
mechanize==0.2.5
sure==1.2.2
Babel==0.9.6
+27 −0
Original line number Diff line number Diff line
Changes in version 0.8.0 - 2019-08-20

        * FIXES https://bugs.torproject.org/9316
        Make BridgeDB export usage metrics every 24 hours.  At the end of each
        24-hour measurement interval, BridgeDB will append usage metrics to the
        file METRICS_FILE, which is configured in bridgedb.conf.  Our metrics
        keep track of the number of (un)successful requests per transport type
        per country code (or email provider) per distribution method.  This way,
        we get to learn that, say, over the last 24 hours there were 31-40 users
        in Iran who successfully requested an obfs4 bridge over Moat.

        * FIXES #26542 https://bugs.torproject.org/26542
        Make BridgeDB distribute vanilla IPv6 bridges again.

        * FIXES #22755 https://bugs.torproject.org/22755
        Use stem instead of leekspin to create test descriptors.  We now don't
        need to depend on leekspin anymore.

        * FIXES #31252 https://bugs.torproject.org/31252
        Add an anti-bot mechanism that allows us to detect bots by matching
        HTTP request headers for blacklisted patterns.  For example, bots may
        have their Accept-Language set to "Klingon".  Blacklisted patterns are
        configured in BLACKLISTED_REQUEST_HEADERS_FILE.  When BridgeDB detects
        a bot request, we can answer their request with a decoy bridge that's
        only handed out to bots.  Decoy bridges are configured in
        DECOY_BRIDGES_FILE.

Changes in version 0.7.1 - 2019-06-07

        * FIXES #28496 https://bugs.torproject.org/28496
+1 −15
Original line number Diff line number Diff line
@@ -315,11 +315,7 @@ To create a bunch of fake bridge descriptors to test BridgeDB, do::

      bridgedb mock [-n NUMBER_OF_DESCRIPTORS]

Note that you will need to install
`leekspin <https://pypi.python.org/pypi/leekspin>`__ in order to run the
``bridgedb mock`` command. See ``doc/HACKING.md`` for details.

And finally, to run the test suites, do::
To run the test suites, do::

      make coverage

@@ -362,16 +358,6 @@ Or just give it a SIGHUP::
      kill -s SIGHUP `cat .../run/bridgedb.pid`


----------------------------------
To extract all bridge assignments:
----------------------------------

To dump all bridge assignments to files, send BridgeDB a ``SIGUSR1``
signal by doing::

      kill -s SIGUSR1 `cat .../run/bridgedb.pid`


=========================
Using a BridgeDB Instance
=========================
+30 −5
Original line number Diff line number Diff line
@@ -177,6 +177,9 @@ MASTER_KEY_FILE = "secret_key"
# File to which we dump bridge pool assignments for statistics.
ASSIGNMENTS_FILE = "assignments.log"

# Name of the file that contains BridgeDB's metrics.
METRICS_FILE = "bridgedb-metrics.log"

#------------------
# Logging Options  \
#------------------------------------------------------------------------------
@@ -260,16 +263,19 @@ FORCE_FLAGS = [("Stable", 1)]
# Only consider routers whose purpose matches this string.
BRIDGE_PURPOSE = "bridge"

# TASKS is a dictionary mapping the names of tasks to the frequency with which
# they should be run (in seconds). If a task's value is set to 0, it will not
# be scheduled to run.
# TASKS is a dictionary mapping the names of tasks to a tuple consisting of the
# frequency with which they should be run (in seconds) and a boolean value
# expressing if the task should be run immediately after start up. If a task's
# frequency is set to 0, it will not be scheduled to run.
TASKS = {
    # Download a list of Tor exit relays once every three hours (by running
    # scripts/get-exit-list) and add those exit relays to the list of proxies
    # loaded from the PROXY_LIST_FILES:
    'GET_TOR_EXIT_LIST': 3 * 60 * 60,
    'GET_TOR_EXIT_LIST': (3 * 60 * 60, True),
    # Delete *.unparseable descriptor files which are more than 24 hours old:
    'DELETE_UNPARSEABLE_DESCRIPTORS': 24 * 60 * 60,
    'DELETE_UNPARSEABLE_DESCRIPTORS': (24 * 60 * 60, False),
    # Export usage metrics every 24 hours:
    'EXPORT_METRICS': (24 * 60 * 60, False),
}

# SUPPORTED_TRANSPORTS is a dictionary mapping Pluggable Transport methodnames
@@ -295,6 +301,25 @@ PROBING_RESISTANT_TRANSPORTS = ['scramblesuit', 'obfs4']
# menu).
DEFAULT_TRANSPORT = 'obfs4'

# HTTP headers that suggest that a request was issued by a bot.  The CSV
# file must have the following format:
#   <HEADER>,<REGEXP>
#   ...
# For example:
#   Accept-Language,[Kk]lingon
BLACKLISTED_REQUEST_HEADERS_FILE="blacklisted-request-headers.csv"

# Decoy bridges that we are handing out to bots that we detected using the
# regular expressions in BLACKLISTED_REQUEST_HEADERS_FILE.  The CSV file must
# have the following format:
#   <TRANSPORT>v<IP_VERSION>,<BRIDGE_LINE>
#   ...
# For example:
#   vanillav4,1.2.3.4:1234 0123456789ABCDEF0123456789ABCDEF01234567
#   vanillav6,[::1]:1234 0123456789ABCDEF0123456789ABCDEF01234567
#   obfs4v4,obfs4 1.2.3.4:1234 public-key=... node-id=... iat-mode=...
DECOY_BRIDGES_FILE="decoy-bridges.csv"

#-------------------------------
# Moat Distribution Options  \
#------------------------------------------------------------------------------
Loading