commit b973b84b6c92ae9d95ed59da468ffe7a14c386fc Author: meskio meskio@torproject.org Date: Tue Aug 24 11:06:32 2021 +0200
Provide bridges of the configure transport by default on email distributor
The default command 'get bridges' now now answers with 'DEFAULT_TRANSPORT' (obfs4 for now) bridges. Adding a new command 'get vanilla' to be able to get vanilla bridges if this is really the intent of the requester.
Closes: #40019 --- bridgedb/distributors/email/request.py | 17 ++++++++++++----- bridgedb/strings.py | 7 ++++--- 2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/bridgedb/distributors/email/request.py b/bridgedb/distributors/email/request.py index 6484fe3..0fee7c7 100644 --- a/bridgedb/distributors/email/request.py +++ b/bridgedb/distributors/email/request.py @@ -64,6 +64,8 @@ GET_LINE = re.compile("([^>].*)?get") IPV6_LINE = re.compile("([^>].*)?ipv6") TRANSPORT_LINE = re.compile("([^>].*)?transport") UNBLOCKED_LINE = re.compile("([^>].*)?unblocked") +VANILLA_LINE = re.compile("([^>].*)?vanilla") +
def determineBridgeRequestOptions(lines): """Figure out which :mod:`~bridgedb.filters` to apply. @@ -80,6 +82,7 @@ def determineBridgeRequestOptions(lines): """ request = EmailBridgeRequest() skippedHeaders = False + requested_transport = False
for line in lines: line = line.strip().lower() @@ -93,20 +96,24 @@ def determineBridgeRequestOptions(lines): if IPV6_LINE.match(line) is not None: request.withIPv6() if TRANSPORT_LINE.match(line) is not None: + requested_transport = True request.withPluggableTransportType(line) if UNBLOCKED_LINE.match(line) is not None: request.withoutBlockInCountry(line) + if VANILLA_LINE.match(line) is not None: + requested_transport = True + + # If not transport requested we will respond with our default transport protocol. + if not requested_transport: + # Note that this variable must satisfy TRANSPORT_PATTERN. + default_transport = "transport %s" % strings._getDefaultTransport() + request.withPluggableTransportType(default_transport)
# We cannot expect all users to understand BridgeDB's commands, so we will # return bridges even if the request was invalid. if not request.isValid(): logging.debug("Email request was invalid.") request.isValid(True) - # We will respond with our default transport protocol. - if not len(request.transports): - # Note that this variable must satisfy TRANSPORT_PATTERN. - default_transport = "transport %s" % strings._getDefaultTransport() - request.withPluggableTransportType(default_transport)
logging.debug("Generating hashring filters for request.") request.generateFilters() diff --git a/bridgedb/strings.py b/bridgedb/strings.py index 2a1e60d..09eb91b 100644 --- a/bridgedb/strings.py +++ b/bridgedb/strings.py @@ -170,9 +170,10 @@ bridge" field."""), }
EMAIL_COMMANDS = { - "get bridges": _("(Request unobfuscated Tor bridges.)"), - "get ipv6": _("(Request IPv6 bridges.)"), - "get transport obfs4": _("(Request obfs4 obfuscated bridges.)"), + "get bridges": _("(Request default Tor bridges.)"), + "get ipv6": _("(Request IPv6 bridges.)"), + "get transport obfs4": _("(Request obfs4 obfuscated bridges.)"), + "get vanilla": _("(Request unobfuscated Tor bridges.)"), # TRANSLATORS: Please DO NOT translate "BridgeDB". }
tor-commits@lists.torproject.org