| Commit message (Collapse) | Author | Age |
| ... | |
| |
|
|
|
|
|
| |
Considers transport and address class when determining if a bridge
is blocked in the specified country. Adds parameters addressClass
and methodname to differentiate between IPv4, IPv6, and pluggable
transports.
|
| | |
|
| |
|
|
|
| |
Fixes indentation in email response and adds debug logging of email
body.
|
| |
|
|
|
| |
Cleans up the I18 strings so that the command descriptions fit on
a single line and provide.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two new configuration options are added to bridgedb.conf:
EMAIL_GPG_SIGNING_ENABLED
EMAIL_GPG_SIGNING_KEY
The former may be either True or False, and the latter must
point to the ascii-armored key file. The keyfile must not be
passphrase protected.
The gpgme library will add the secret key to the secret key ring of
user who runs BridgeDB.
|
| |
|
|
|
| |
fix getNumBridgesPerAnswer so that lengths of 20 and 100 don't break the
response
|
| | |
|
| |
|
|
| |
obfs2 is the correct version
|
| |
|
|
|
|
|
|
| |
Add new strings for email response template that
provide instructions for requesting ipv6 or transports
Also move email composition into a separate function and
remove code duplication.
|
| |
|
|
| |
Add support for ipv6 and pluggable transports
|
| |
|
|
|
| |
BridgeDB will now also parse extra-info descriptors if the
configuration option 'EXTRA_INFO_FILE' is specified
|
| |
|
|
| |
Adds a filter to select bridges with transport specified by name.
|
| |
|
|
|
| |
Adds a configuration option 'EXTRA_INFO_FILE' to specify the location
of extra-info descriptors.
|
| |
|
|
|
|
| |
Adds a class PluggableTransport and function parseExtraInfoFile()
to read pluggable transports from bridge extra-info descriptors.
Also adds transport support in FilteredBridgeSplitter.dumpAssignments
|
| |
|
|
|
|
| |
BridgeRing.insert() logging.debug now uses the primary bridge address
(bridge.ip) to avoid the case where a bridge has no IPv4 addresses,
when running python setup.py tests, for example.
|
| |
|
|
|
| |
bridge.ip is stored in the database as a string but ipaddr.IPAddress
everywhere else.
|
| |
|
|
|
| |
updated fakeBridge(), fakeBridge6() to randomly set the address
class in or_addresses so that test coverage is more complete.
|
| |
|
|
|
|
|
|
|
| |
Adds the 'description' attribute to filters.
This attribute is used to indicate which filters are applicable
to a bridge in the assignments.log
The description should be a string of format k=v, for example:
filterBridgesByIP4.description is 'ip=4'
|
| |
|
|
|
| |
dumpAssignments() should conform to spec in
https://trac.torproject.org/projects/tor/ticket/5935
|
| |
|
|
|
| |
The 'needsIPv4' and 'needsIPv6' arguments are replaced with
'addressClass'.
|
| |
|
|
|
| |
Pick the same bridge line each time; uses hmac_fn and email or ip
from the request.
|
| |
|
|
|
|
|
|
| |
The "a" lines have been tested by the Bridge Authority.
The or-addresses in the bridge descriptors have not.
This fix makes BridgeDB read or-addresses from the networkstatus
instead of the bridge descriptors
|
| | |
|
| |
|
|
| |
Adds a few more checks for parseORAddressLine()
|
| |
|
|
| |
proposal 186-multiple-orports.txt dropped port range support.
|
| |
|
|
|
| |
The EmailBasedDistributor can now be passed the same filters
as the IPBasedDistributor.
|
| |
|
|
| |
Rings are set up a bit differently now, and broke this test.
|
| |
|
|
|
| |
Implement ipCategories with filters so that compound filters can
also be used (e.g. filter for ipv6 bridges)
|
| |
|
|
| |
Implements IP clustering as a default filter.
|
| | |
|
| | |
|
| |
|
|
| |
Drop to INFO, because these are not WARN
|
| |
|
|
|
|
|
| |
Some versions (tested with 2.6.6) of Python exhibit odd exception
handling behavior; this fix corrects an issue where the parent
class exception handler was catching exceptions meant for a
subclassed exception handler
|
| |
|
|
| |
Adds an ipv6-comptabile uniform mapper.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If using dynamic bridge filtering, the IPBasedDistributor must
be suppled wth a filtering function that will select the correct pool
for the requesting IP.
The filter could be implemented in a similar fashion as the existing
approach, which is to map the requesting ip address to an
area and assign then map the areas to pools of bridges.
An alternate approach would define bridge pools by a set of
corresponding country codes. The pools may either be of roughly equal
size to simplify bridge assignment, or weighted by the aggregate bridge
users from those countries.
Presently, BridgeDB does neither. There are very few IPv6 bridges, so
bypassing bridge clustering should be OK for the short term.
Deliverables for Sponsor E require that BridgeDB be able to reassign
blocked bridges to other countries; the extensions to BridgeDB required
to implement this policy will replace the current clusters with bridge
pools that correspond to geographic regions and address the current
filter limitations.
|
| |
|
|
|
| |
Front-end's to the HTTPS and email distributors now make use
of the address class filtering available in IPBasedDistributor
|
| |
|
|
|
|
| |
Test descriptor file parsing, or-address, and mixed address class
(IPv4 and IPv6) or-addresses.
Tests for IPBasedDistributor and FilteredBridgeSplitter
|
| |
|
|
|
| |
Updates the EmailBasedDistributor to support 'ipv6' keyword
in the subject or mail body
|
| |
|
|
|
|
| |
IPBasedDistributor now uses the FilteredBridgeSplitter to sort
bridges into subrings based on the address class of the Bridges'
ip(s) (including addresses parsed from the new or-address spec).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The FilteredBridgeSplitter sorts bridges into subrings. The subrings
are defined by filter functions. For example, to filter bridges by
ORport > 9000:
def filterBridgesOver9000(bridge):
if bridge.orport > 9000: return True
Example in context:
d = FilteredBridgeSplitter(key)
d.addRing(BridgeRing, 'Bridges with ORPort > 9000',
filterBridgesOver9000)
When d.insert(bridge) is called, bridges will be inserted into all
subrings whose filter function returns True.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updates parseBridgeDesc to read or-address line from bridge descriptors,
and adds a container class PortList
parseBridgeDesc adds parseORAddress which parses or-address lines.
Valid address:portspec are added to each Bridge object in a dictionary
of or-address:PortList key:values.
class PortList is a container class that represents the or-address
PORTSPEC field, which is a list of ports and port ranges.
The implementation contains an efficient representation of port-ranges,
implements __contains__ for single ports and port-ranges, and will
also squash or merge port ranges that intersect.
The getPort() function returns a single valid port (as defined by the
PORTSPEC line). Each subsequent call to getPort() will iterate over the
valid ports, so that BridgeDB may return a single 'bridge' line for
inclusion in torrc and uniformly distribute the available ports.
getConfigLine may be passed 'selectFromORAddresses=True',
which will return a valid config line from the set of addresses
and ports. Filtering for IPv6 or IPv4 addresses is supported,
if there are no matches in or-addresses BridgeDB will return
the primary ip:orport instead.
Also added is a generator 'getAllConfigLines()' which will return
every valid address:port (including expanding ranges of ports -
which may be a lot of output) combination a bridge supports, one
per line.
|
| |
|
|
|
| |
This is the draft proposal that was sent to tor-dev on Dec 5, 2011
plus the addition of the new SQL schema for storing or-addresses.
|
| |
|
|
|
|
|
| |
Python default arguments are only parsed once, therefore the
list was shared between all instances.
See: http://www.ferg.org/projects/python_gotchas.html
|
| |
|
|
|
|
|
|
|
| |
Switches BridgeDB logger to use RotatingFileHandler.
The defaults are to keep 5 backups, of 10MB each.
Adds LOGFILE_COUNT, LOGFILE_ROTATE_SIZE to bridgedb.conf, and
sets the default value for LOGLEVEL to WARNING.
Thanks to weasel for this patch.
|
| | |
|
| |
|
|
|
| |
the theory is that the bots that are scraping bridgedb were scraping his
ipv6 bridge too, since they look for ^bridge
|
| | |
|
| | |
|
| |
|
|
|
| |
If RECAPTCHA_* configuration options are not present in bridgedb.conf,
bridgedb disables recaptcha support.
|
| |
|
|
|
| |
Call the correct function name.
cleanWarnedBridges() renamed to cleanWarnedEmails()
|