Bump version number to 0.9.4.
[tor-bridgedb.git] / CHANGELOG
blob163fc6cb74fcc8f7e7e02508b3ae949a7de4bd0e
1 Changes in version 0.9.4 - 2020-02-19
3         * FIXES https://bugs.torproject.org/30946
4         This patch ports BridgeDB to Python 3.  Python 2 is no longer supported
5         since Jan 1, 2020.
7 Changes in version 0.9.3 - 2020-02-18
9         * FIXES <https://bugs.torproject.org/33299>
10         This patch disables the distribution of FTE, ScrambleSuit, and obfs3.
12 Changes in version 0.9.2 - 2020-02-04
14         * FIXES <https://bugs.torproject.org/31427>
15         This patch updates the AUTHORS file, HACKING.md, contact information,
16         the Trac URL to report bugs, our instructions on BridgeDB's landing
17         page, and it fixes a small bug in descriptor generation.
19 Changes in version 0.9.1 - 2019-10-29
21         * FIXES https://bugs.torproject.org/32203
22         The metrics code used to weed out vanilla bridges, so they did not show
23         up in our metrics.  This patch fixes this issue.
25         * FIXES https://bugs.torproject.org/32134
26         While implementing our language switcher (#26543), we added a new
27         string, "Language", that requires translations.  This patch adds a new
28         translation request and also updates our instructions on how to request
29         new translations.
31         * FIXES https://bugs.torproject.org/32105
32         Mention an undocumented OS-level dependency: python3-dkim.
34 Changes in version 0.9.0 - 2019-10-16
36         * FIXES https://bugs.torproject.org/26543
37         Implement a language switcher that allows users to override the locale
38         that BridgeDB automatically selects by inspecting the client's request
39         headers.
41 Changes in version 0.8.3 - 2019-10-03
43         * FIXES https://bugs.torproject.org/31903
44         Update existing translations and request new translations.  Thanks to
45         all volunteers who helped translate BridgeDB!
47         * FIXES https://bugs.torproject.org/31780
48         We implemented BridgeDB's metrics in #9316 but haven't specified its
49         format until now.  In addition to adding a specification, this patch
50         also makes our implementation consistent with our (slightly updated)
51         specification.
53         * FIXES https://bugs.torproject.org/29484
54         Update BridgeDB's requirements to the latest respective versions.  Among
55         others, this patch set updates Twisted to 19.7.0, pyOpenSSL to 19.0.0,
56         and replaces (the abandoned) PyCrypto with PyCryptodome, which fixes
57         security vulnerabilities.
59 Changes in version 0.8.2 - 2019-09-20
61         Updated translations for the following languages:
62         bn, da, eo, fa, it, ko, nl, pt_BR, pt_PT, sr, zh_CN.
64 Changes in version 0.8.1 - 2019-09-11
66         * FIXES https://bugs.torproject.org/17626
67         BridgeDB gets confused when users reply to a "get help" email.  The
68         issue is that BridgeDB interprets commands anywhere in the email body,
69         even if it's in quoted text.  To fix this issue, we are ignoring
70         commands whose email body line starts with a '>' character, which is
71         typically used for email quotes.
73         * FIXES https://bugs.torproject.org/28533
74         The frontdesk is seeing plenty of empty bogus emails.  This fix removes
75         the email links and instead encourages users to take a look at the Tor
76         Browser Manual and at our Support Portal.
78 Changes in version 0.8.0 - 2019-08-20
80         * FIXES https://bugs.torproject.org/9316
81         Make BridgeDB export usage metrics every 24 hours.  At the end of each
82         24-hour measurement interval, BridgeDB will append usage metrics to the
83         file METRICS_FILE, which is configured in bridgedb.conf.  Our metrics
84         keep track of the number of (un)successful requests per transport type
85         per country code (or email provider) per distribution method.  This way,
86         we get to learn that, say, over the last 24 hours there were 31-40 users
87         in Iran who successfully requested an obfs4 bridge over Moat.
89         * FIXES #26542 https://bugs.torproject.org/26542
90         Make BridgeDB distribute vanilla IPv6 bridges again.
92         * FIXES #22755 https://bugs.torproject.org/22755
93         Use stem instead of leekspin to create test descriptors.  We now don't
94         need to depend on leekspin anymore.
96         * FIXES #31252 https://bugs.torproject.org/31252
97         Add an anti-bot mechanism that allows us to detect bots by matching
98         HTTP request headers for blacklisted patterns.  For example, bots may
99         have their Accept-Language set to "Klingon".  Blacklisted patterns are
100         configured in BLACKLISTED_REQUEST_HEADERS_FILE.  When BridgeDB detects
101         a bot request, we can answer their request with a decoy bridge that's
102         only handed out to bots.  Decoy bridges are configured in
103         DECOY_BRIDGES_FILE.
105 Changes in version 0.7.1 - 2019-06-07
107         * FIXES #28496 https://bugs.torproject.org/28496
108         Remove Yahoo from the list of allowed email domains.  Yahoo allows you
109         to create up to 500 disposable email addresses, which BridgeDB
110         interprets as unique:
111         https://bugs.torproject.org/28496#comment:8
112         We could address this issue in BridgeDB but at this point we seem better
113         off dropping support for Yahoo because the provider likely also fell
114         behind in Sybil protection.
116 Changes in version 0.7.0 - 2019-06-07
118         * FIXES #28655 https://bugs.torproject.org/28655
119         When a bridge supports an active probing-resistant transport, it should
120         not give out flavors that are vulnerable to active probing.  For
121         example, if a bridge supports obfs4 and obfs3, it should only give out
122         obfs4.
124         * FIXES #30706 https://bugs.torproject.org/30706
125         Do some simple BridgeDB housekeeping: Add missing CHANGELOG entries, add
126         Philipp's contact info to the support section, fix a broken Trac URL,
127         and turn HTTP link into HTTPS.
129         * FIXES #30157: https://bugs.torproject.org/30157
130         Update BridgeDB translations.  This ticket both adds new translations
131         and updates existing ones.
133 Changes in version 0.6.9 - 2018-11-20
135         * FIXES #23894 https://bugs.torproject.org/23894
136         Really change the contact address, in the correct place this time.
138 Changes in version 0.6.8 - 2018-11-19
140         * FIXES #28528 https://bugs.torproject.org/28528
141         Change maintainer info.
143         * FIXES #23894 https://bugs.torproject.org/23894
144         Change contact email address.
146 Changes in version 0.6.7 - 2018-05-21
148         Print fingerprints in hex thank you very much.
150 Changes in version 0.6.6 - 2018-05-21
152         * FIXES #26150 https://bugs.torproject.org/26150
153         Hotfix for strange bridges missing address fields.
155 Changes in version 0.6.5 - 2018-05-04
157         * FIXES #26023 https://bugs.torproject.org/26023
158         There's few bridges whose ed25519 certificates contain the year 491869,
159         which the datetime module (called from Stem) believes "out of range". So
160         instead we'll parse the descriptors one at a time and catch the errors
161         as we go.
163         * FIXES #25246 https://bugs.torproject.org/25246
164         Add script for assigning unallocated bridges to another distributor.
166 Changes in version 0.6.4 - 2018-02-13
168         * FIXES #24432 https://bugs.torproject.org/24432
169         Add config option to skip loopback addresses in X-Forwarded-For parsing.
171 Changes in version 0.6.3 - 2018-01-23
173         * FIXES #24432 https://bugs.torproject.org/24432
174         The production moat server had issues related to redirecting to
175         resources properly, which are now fixed.
177         * FIXES #24701 https://bugs.torproject.org/24701
178         Adds a special surprise for the special someone who has been
179         automatedly requesting bridges not through driving a browser, but
180         through a script which is so thoroughly stupid that it doesn't
181         even send the URL parameters for the CAPTCHA challenge and solution.
182         Their script will now be delayed for quite some time and then
183         rickrolled.  Mess with the best, die like the rest.
185         * FIXES #24704 https://bugs.torproject.org/24704
186         Bridges returned to a single request are now filtered such that
187         there will never be two bridges from the same IPv4 /16 or IPv6 /64.
189 And includes the following general changes:
191         * ADDS unittests for the legacy code in bridgedb/Bridges.py,
192         bringing the total test coverage above 90% for the first time.
195 Changes in version 0.6.2 - 2017-12-20
197         * FIXES #24636 https://bugs.torproject.org/24636
198         The moat API specification included an extra response type which
199         could be sent if there was no overlap between transports the
200         client supported and those which the server supported.  This has
201         been removed from the specification, which now describes the
202         behaviour moat has always exhibited: if there is no overlap, the
203         server responds with a CAPTCHA image response which includes the
204         list of transports it does support.
206         * FIXES #24637 https://bugs.torproject.org/24637
207         The moat server did not respond correctly with the specified JSON
208         API error type when there were no bridges available.  It now
209         responds correctly with a 404 error whose details describe why the
210         request could not be fulfilled.  The moat server also now logs
211         messages if there were not the configured
212         MOAT_BRIDGES_PER_RESPONSE number of bridges available.
215 Changes in version 0.6.1 - 2017-12-13
217         * ADDS a shell script, scripts/test-moat, for testing either a
218         locally-running moat server, or a remote one through a meek
219         tunnel.
220         Thanks to David Fifield for his work on meek, assistance setting
221         it up, and providing the first version of this script.
223         * FIXES #24433 https://bugs.torproject.org/24433
224         The test-moat script wasn't sending an X-Forwarded-For header,
225         which triggered a bug in the moat server, since the CAPTCHA
226         solution includes an HMAC based on the client's IP (forwarded
227         through all the several layers of tunnels/proxies).
229         * FIXES #24443 https://bugs.torproject.org/24443
230         Due to a difference between how booleans are parsed by Python's
231         json library and normal Python booleans, the moat server was
232         generating and returning QRCodes… regardless of whether the remote
233         client application asked for one.  This is now fixed.
235         * FIXES #24460 https://bugs.torproject.org/24460
236         There was an unhandled error when sending certain (what appears to
237         be possibly malicious? but in a very strange way) requests to
238         BridgeDB's HTTPS distributor.  The robots making the requests were
239         attempting to request bridges, but were presenting a CAPTCHA
240         solution without the correct HTML form field parameters present,
241         which isn't possible through normal usage of the web interface.
242         Whoever or whatever is doing this is now going to be endlessly
243         redirected so that they may forever spiral in their own private
244         internet hell.  I reserve the right come up with a worse fate for
245         them later, should I get bored.
247         * FIXES #3015 https://bugs.torproject.org/3015
248         BridgeDB has had a partially-implemented concept of "buckets"
249         since the age of the dinosaurs: write some of the unallocated
250         bridges to a file which should (somehow) be manually distributed.
251         In addition to be unused and untested, there were several issues
252         with the buckets, the most significant of which were the inability
253         to request pluggable transports in a bucket and the fact that
254         buckets were not persistent in any way (e.g. if i request a bucket
255         of 50 bridges for Gomez and another with 50 for Morticia, they
256         might end up with some of the same bridges, further, tomorrow
257         they'll end up with 50 possibly different bridges than those they
258         received today).  All of this code is now removed.
260 And includes the following general changes:
262         * FIXES issues with JSON quote syntax and a mistaken JSON API
263         "type" parameter in the specification of the moat server (in the
264         README).
265         Thanks to Mark Smith and Kathy Brade for pointing out the issues.
268 Changes in version 0.6.0 - 2017-11-15
270         * ADDS a new JSON API distributor called "moat", which is intended
271         for use for Tor Launcher to use to build an in-browser UI for
272         retrieving bridges.
274         * CHANGES the organisation of code to add a new
275         bridgedb.distributors package as well as a
276         bridgedb.distributors.common package for code shared between
277         multiple distributors.
280 Changes in version 0.5.0 - 2017-10-28
282         * FIXES #23957 https://bugs.torproject.org/23957
283         BridgeDB now supports bridge operators choosing how their bridge
284         will be distributed.  See the "BridgeDistribution" torrc option in
285         tor's manpage for details.
287         * FIXES #16650 https://bugs.torproject.org/16650
288         BridgeDB is now accessible via select remote user interfaces
289         through a meek tunnel.
291         * FIXES #22998 https://bugs.torproject.org/23033
292         * FIXES #23033 https://bugs.torproject.org/23033
293         * FIXES #23034 https://bugs.torproject.org/23034
294         Upgrades BridgeDB to newer versions of Twisted and PyOpenSSL, and
295         fixes several issues due to non-backwards compatible changes
296         within those libraries.
299 Changes in version 0.4.0 - 2017-01-09
301         * FIXES #21162 https://bugs.torproject.org/21162
302         BridgeDB now supports arbitrarily blacklisting suspected bad
303         bridges from being distributed to clients.  This is in response
304         to a suspected sybil attack by an unknown party.  For more
305         details, see:
306         https://lists.torproject.org/pipermail/tor-project/2016-December/000851.html
309 Changes in version 0.3.8 - 2016-09-22
311         * FIXES #20088 https://bugs.torproject.org/20088
312         BridgeDB now supports receiving descriptors from multiple Bridge
313         Authorities.  See also #19690.
315         * FIXES #20087 https://bugs.torproject.org/20087
316         BridgeDB's version of Stem now supports parsing transport lines in
317         bridge extrainfo descriptors which contain IPv6 addresses
318         contained within square brackets.
321 Changes in version 0.3.7 - 2016-08-04
323         * FIXES #19691 https://bugs.torproject.org
324         BridgeDB (as running on Tor Project infrastructure) is now
325         invocated with a redirection of stdout and stderr to the flog
326         utility, in order to ensure that file handles are properly closed
327         and reopened when BridgeDB receives a SIGHUP.
329 And includes the following general changes:
331         * ADDS some files which were missing from BridgeDB PyPI packages
332         to the MANIFEST.in, so that they are now included.
335 Changes in version 0.3.6 - 2016-07-28
337         * FIXES #18237 https://bugs.torproject.org/18237
338         During descriptor parsing, BridgeDB saves copies of descriptor files
339         which couldn't be parsed, for later debugging purposes.  To avoid
340         filing up the runtime directory with these files, we now delete files
341         older than 24 hours, every 24 hours.
343         * FIXES #18949 https://bugs.torproject.org/18949
344         Since we've upgraded the host machine which runs The Tor Project's
345         BridgeDB instance to Debian Jessie, this patch updates the testing
346         configurations and continuous integration infrastructure to run
347         tests on versions of Python dependencies in Debian Jessie and Stretch.
350 Changes in version 0.3.4 - 0.3.5 - 2015-11-30
352         * FIXES #14685 https://bugs.torproject.org/14685
353         This disables distribution of obfs2 bridges.  This pluggable
354         transport has known distiguishers which allow adversaries to
355         identify client connections to obfs2 bridges, which in turn allows
356         these connections to be blocked/censored.  With numerous obfs3 and
357         obfs4 bridges both readily available, users should not be
358         presented with an easily-configurable choice that is known to be
359         unsafe for the majority of users.
361 And includes the following general changes:
363         * ADDS error pages to BridgeDB's web interface, to provide
364         friendlier explanations for downtime, missing pages, and internal
365         server errors.  For example: https://bridges.torproject.org/404
368 Changes in version 0.3.3 - 2015-10-25
370         * FIXES #12029 https://bugs.torproject.org/12029
371         BridgeDB now has an API for creating Bridge Distributors.
372         See the bridgedb.distribute module, or its developer documentation
373         at https://pythonhosted.org/bridgedb/bridgedb.distribute.html.
375         * FIXES PART OF #12506  https://bugs.torproject.org/12506
376         BridgeDB's two Distributors (HTTPS and Email) are now entirely
377         modularised and self-contained within separate subdirectories in
378         the source code.  This is the first step to redesigning these
379         Distributors into their own separate processes, which will allow
380         the Distributors to remain functional while BridgeDB is reparsing
381         bridge descriptors.
383         * FIXES #15968 https://bugs.torproject.org/15968
384         BridgeDB now sends a Content-Security-Policy header which
385         explicitly allows Javascript, images, CSS, and fonts, from
386         https://bridges.torproject.org.  All other types of content are
387         forbidden, including:
388           - embedding https://bridges.torproject.org within
389             <iframe>, <embed>, or <object>, and attempting to source
390             additional resources into its embedded context
391           - inline Javascript, including Javascript within SVG files
392           - inline CSS
393           - externally hosted fonts
394           - inline SVG, e.g. via the HTML5 <svg> tag
395           - any and all connections made via Javascript XMLHttpRequests,
396             WebSockets, sendBeacon(), and Web Workers
397           - plugins
398           - applets
399         BridgeDB's Content-Security-Policy does not yet make use of
400         certain newer, lesser supported, Content-Security-Policy v2.0
401         directives, such as "reflected-xss" and "frame-ancestors", but may
402         someday.
404         * FIXES #16273 https://bugs.torproject.org/16273
405         Several links to Tor Project gitweb URLs within the developer
406         documentation were outdated in that they still used the old gitweb
407         URL format.  These are now updated.
408         Thanks to David Fifield for the bug report and patches.
410         * FIXES #16330 https://bugs.torproject.org/16330
411         BridgeDB can now handle bridge-server-descriptors with
412         extra-info-digest fields which have two values, as well as both
413         bridge-server-descriptors and bridge-extrainfo descriptors which
414         contain Ed25519 key material and signatures.  See Tor proposals
415         #220 and #228 for more information on the changes to these
416         descriptors.  Note that BridgeDB can now parse this information,
417         but does not yet make use of any Ed25519 cryptographic material
418         within bridge descriptors.
419         https://gitweb.torproject.org/torspec.git/tree/proposals/220-ecc-id-keys.txt
420         https://gitweb.torproject.org/torspec.git/tree/proposals/228-cross-certification-onionkeys.txt
421         Thanks to Atagar for patching Stem.
423         * FIXES #16616 https://bugs.torproject.org/16616
424         The HSDir flag can now be included within bridge-networkstatus
425         documents.  BridgeDB now has unittests which guarantee that its
426         parsers safely ignore this flag, as well as any flags unknown to
427         BridgeDB which may appear in the future.
428         Thanks to Roger Dingledine for alerting me about the change.
430         * FIXES #16649 https://bugs.torproject.org/16649
431         Mobile users, and other users with small screen pixel ratios, will
432         find that the UI of BridgeDB's HTTPS Distributor has greatly
433         increased in usability and readability.
436 And includes the following general changes:
438         * FIXES an error when requesting the non-HTML version of the
439         bridges page (e.g. https://bridges.torproject.org/bridges?format=plain)
441         * REMOVES the `bridgedb test` commandline option.
442         BridgeDB's tests can be run via `python setup.py test` or `make
443         test` (or `make coverage` for generating HTML test coverage
444         statistics).
446         * CHANGES the HTTPS Distributor to HTML-encode Bridge Lines.
447         Previously, a malicious Pluggable Transport Bridge could include
448         in its PT arguments something like "evil=<script>[…]</script>" and
449         if such a Bridge were to be distributed to a user, that user's web
450         browser would execute the script (if Javacript was enabled).
451         Other characters, including non-ASCII, control characters, double
452         quotes, and backslashes, are also sanitised from Bridge Lines.
453         Thanks to Robert Ransom for the patches.
455         * CHANGES BridgeDB's module/package version numbers to be
456         compliant with PEP440.
458         * CHANGES the layout of BridgeDB's source code directories.
459         Rather than storing BridgeDB's source in "lib/bridgedb/", it is
460         now kept in "bridgedb/".  Similarly, the directory containing
461         BridgeDB's tests has been moved from "lib/bridgedb/test/" to
462         "test/", which means that the tests are no longer installed when
463         running `python setup.py install` or `make install`.
465         * ADDS several improvements to the developer documentation at
466         https://pythonhosted.org/bridgedb.
468         * UPDATE English (en_US) translations.
470         * UPDATE English (en) translations.
472         * ADD Serbian (sr) translations.
473           Thanks to obj.petit.a, Ivan Radeljic, and Milenko Doder.
475         * UPDATE Arabic (ar) translations.
476           Thanks to  A. Hassan, debo debo, KACIMI LAMINE, and Nudroid A.
478         * UPDATE Catalan (ca) translations.
479           Thanks to laia_.
481         * UPDATE Czech (cs) translations.
482           Thanks to Tomas Palik and Vlastimil Burián.
484         * UPDATE Danish (da) translations.
485           Thanks to Mogelbjerg.
487         * UPDATE German (de) translations.
488           Thanks to jschfr, Junge Limba, and Toralf Förster.
490         * UPDATE English (en_GB) translations.
491           Thanks to Andi Chandler.
493         * UPDATE Farsi (fa) translations.
494           Thanks to some awesome anonymous person for helping out.
496         * UPDATE Finish (fi) translations.
497           Thanks to Riku Viitanen.
499         * UPDATE French (fr) translations.
500           Thanks to elouann, Trans-fr, and Towinet.
502         * UPDATE French (fr_CA) translations.
503           Thanks to Trans-fr.
505         * UPDATE Croatian (hr_HR) translations.
506           Thanks to some awesome anonymous person for helping out.
508         * UPDATE Hungarian (hu) translations.
509           Thanks to some awesome anonymous person for helping out.
511         * UPDATE Indonesian (id) translations.
512           Thanks to Anthony Santana, Astryd Viandila Dahlan, cholif yulian,
513           constantius damar wicaksono, Dwi Cahyono, L1Nus, km242saya, and
514           Zamani Karmana.
516         * UPDATE Italian (it) translations.
517           Thanks to Random_R.
519         * UPDATE Japanese (ja) translations.
520           Thanks to ABE Tsunehiko.
522         * UPDATE Latvian (lv) translations.
523           Thanks to Ojārs Balcers.
525         * UPDATE Norwegian Bokmål (nb) translations.
526           Thanks to Erik Matson and Kristian Andre Henriksen.
528         * UPDATE Dutch (nl) translations.
529           Thanks to Mart3000.
531         * UPDATE Polish (pl) translations.
532           Thanks to Karol Obartuch.
534         * UPDATE Portuguese (pt) translations.
535           Thanks to Bruno D. Rodrigues and MMSRS.
537         * UPDATE Brazillian Portuguese (pt_BR) translations.
538           Thanks to Communia.
540         * UPDATE Romanian (ro) translations.
541           Thanks to  Ana, axel_89, and Di N.
543         * UPDATE Russian (ru) translations.
544           Thanks to Ivan.
546         * UPDATE Slovak (sk_SK) translations.
547           Thanks to StefanH.
549         * UPDATE Albanian (sq) translations.
550           Thanks to  some awesome unknown anonymous person who didn't add their
551           name to the list of translators.
553         * UPDATE Swedish (sv) translations.
554           Thanks to Peter Michanek.
556         * UPDATE Turkish (tr) translations.
557           Thanks to Bullgeschichte and Fomas.
559         * UPDATE Ukranian (uk) translations.
560           Thanks to Yasha.
562         * UPDATE Chinese Mandarin (zh_CN) translations.
563           Thanks to khi.
565         * UPDATE Taiwanese Mandarin (zh_TW) translations.
566           Thanks to x4r.
569 Changes in version 0.3.2 - 2015-05-01
571         * FIXES a problem with the calculation of Levenshtein distances
572         between blacklisted email addresses and those on incoming
573         email. This fixes a problem with the fuzzy matching implemented in
574         #9385: https://bugs.torproject.org/9385.
576         * FIXES #1839 https://bugs.torproject.org/1839
577         BridgeDB's distributors now rotate their hashrings at
578         configurable scheduled intervals.
580         * FIXES #4771 https://bugs.torproject.org/4771
581         BridgeDB now records which of the HTTPS Distributor's
582         sub-hashrings are used for clients coming from Tor Exit nodes and
583         other known proxies.
585         * FIXES #12504 https://bugs.torproject.org/12504
586         Which Pluggable Transports BridgeDB distributes is now easily
587         configurable via the bridgedb.conf configuration file.
589         * FIXES #13202 https://bugs.torproject.org/13202
590         Old bridges running Tor-0.2.4.x with Pluggable Transports like
591         scramblesuit and obfs4proxy have a bug which causes them to not
592         include the PT arguments in the `transport` line they submit to
593         the BridgeAuthority in their extrainfo descriptors.  This causes
594         BridgeDB to have broken bridge lines for these bridges.
595                 For example, scramblesuit requires a `password=` in the
596         `ClientTransportPlugin` for clients to connect to it.  If BridgeDB
597         receives a line in that bridge's extrainfo which says
598         `transport scramblesuit 1.2.3.4:1234` (without a password), then
599         when BridgeDB gives clients a bridge line for that bridge, it'll
600         look like "Bridge scramblesuit 1.2.3.4:1234" - meaning that it won't
601         work.  This fixes the issue by excluding broken transports from
602         being distributed to clients.
604         * FIXES #15517 https://bugs.torproject.org/15517
605         For all clients who are coming from IPv6 addresses and are not
606         using Tor, who go to https://bridges.torproject.org, BridgeDB now
607         groups these clients together by /32.  This "grouping" causes all
608         IPv6 clients within the same IPv6 /32 to get the same bridges.
609         Previously, BridgeDB grouped IPv6 clients by /64 (which is
610         ridiculously small, considering standard IPv6 allocation sizes).
612         For all clients who are coming from IPv4 addresses and are not
613         using Tor, BridgeDB now groups these clients together by /16.
614         Previously, BridgeDB grouped IPv4 clients by /24.  (This latter
615         change was technically made as part of #4771.)
617         * FIXES #15464 https://bugs.torproject.org/15464
618         The setup procedure for creating a BridgeDB Continuous Integration
619         build machine is now simplified and generalised to include build
620         environments like Jenkins, not just TravisCI.
622         * FIXES #15866 https://bugs.torproject.org/15866
623         BridgeDB now ignores nearly all the information in the
624         networkstatus-bridges file created by the BridgeAuthority.
626         * ADDS benchmark tests to BridgeDB's test suite, and some of
627         BridgeDB's algorithms have been revised to improve their speed.
630 Changes in version 0.3.1 - 2015-03-24
632         * FIXES #14065 https://bugs.torproject.org/14065
633         When requesting vanilla IPv6 bridges from
634         https://bridges.torproject.org, BridgeDB would respond with IPv4
635         addresses.  It now correctly responds with IPv6 addresses.
637 And includes the following general changes:
639         * FIXES an issue with the filtering of hashrings while answering
640         requests for Pluggable Transports. (commit 3ef37df6)
642         * FIXES the return value from the GnuPG interface initialization
643         function (bridgedb.crypto.initializeGnuPG) when creating a test
644         signature has failed.
646         * CHANGES the way BridgeDB handles the case where it parses to
647         duplicate extrainfo descriptors (for the same Bridge) which also
648         have identical timestamps.  Before, we assumed this wasn't
649         possible.  It turns out that it not only is possible, but that
650         usually every batch of descriptors has at least one Bridge with
651         such a set of perfectly identical extrainfo descriptors.  Even
652         stranger, it appears that only Bridges started for the first time
653         quite recently (within the last eight hours) display this
654         behaviour.  BridgeDB now logs these errors, rather than leaving
655         them unhandled.
656         (commit a27d7905)
658         * ADDS an environment variable check to setup.py which controls
659         whether the setup.py script tries to install the dependencies
660         listed in the requirements.txt file with easy_install.  If the
661         environment variable BRIDGEDB_INSTALL_DEPENDENCIES=0, then
662         setup.py will not use easy_install.  When BridgeDB is installed
663         via `make install` the default is to not use easy_install;
664         however, when installed via `python setup.py install`, the default
665         is to use easy_install to check for, find, and install
666         dependencies.  (NOTE: the latter is *not* recommended.)
667         (commit d035fe64)
670 Changes in version 0.3.0 - 2015-03-21
672         * FIXES #2895 https://bugs.torproject.org/2895
673         BridgeDB no longer assumes that any extrainfo descriptor files are
674         in chronological order.
676         * FIXES #4405 https://bugs.torproject.org/4405
677         BridgeDB now has a built-in timer mechanism for scheduling
678         cronjobesque events. This is now used to routinely download and
679         parse the list of Tor exit relays in a completely asynchronous
680         manner.
682         * FIXES #9380 https://bugs.torproject.org/9380
683         BridgeDB now uses Stem (https://stem.torproject.org) for its
684         parsers, and has better classes for parsing and storing
685         information on Bridges and their Pluggable Transports.
686         Additionally, all of BridgeDB's parses and the new
687         Bridge/PluggableTransport classes all have 100% unittest and
688         integration test coverage.
690         * FIXES #10385 https://bugs.torproject.org/10385
691         BridgeDB now uses python-gnupg (https://pypi.python.org/gnupg)
692         instead of GPGME (libgpgme11 and pygpgme). Previously, when using
693         GPGME, BridgeDB was unable to sign emails with a subkey whose
694         master private key was not present, causing all signing to be
695         broken. Additionally, GPGME tried to access and modify the
696         BridgeDB users $HOME directory, and GPGME would also try to create
697         signatures with encryption-only subkeys, and try to
698         encrypt/decrypt with signing-only subkeys. All of these issues are
699         no more, because the writhing tangled mass of bugs known ad GPGME
700         is gone for good.
702         * FIXES #11216 https://bugs.torproject.org/11216
703         BridgeDB no longer parses any extrainfo descriptor files
704         cumulatively. Before, a Bridge which had a descriptor in
705         cached-extrainfo and in cached-extrainfo.new and supported obfs3,
706         obfs4, and scramblesuit transports would be parsed twice,
707         resulting in the Bridge having six transports. This is no longer
708         the case.
710         * HOTFIXES an issue with non-deterministic unittest failures in
711         the Mechanize-based integrations tests in
712         lib/bridgedb/test/test_https.py. hotfix/0.2.4-mechanize-tags
714         * FIXES part of #12507 https://bugs.torproject.org/12507
715         BridgeDB now has semi-automated developer documentation builds at
716         https://pythonhosted.org/bridgedb/.
718         * FIXES #12805 https://bugs.torproject.org/12805
719         BridgeDB is now packaged on PyPI, in the hopes that someday other
720         organisations will be able to run their own BridgeDBs.
722         * FIXES #12843 https://bugs.torproject.org/12843
723         BridgeDB will no longer distribute bridges which it believes are
724         located in Iran or Syria.
726         * FIXES #12872 https://bugs.torproject.org/12872
727         BridgeDB now has geolocational information for Bridges, telling it
728         which country each Bridge's primary ORAddress is within, as well
729         as geolocational information for each PluggableTransport address.
730         Thanks to Alden S. Page for the patches.
732         * FIXES #15155 https://bugs.torproject.org/15155
733         The instructions for obtaining a copy of Tor Browser should now be
734         more clear.
735         Thanks to Jens Kubieziel, Nick Mathewson, and Peter Palfrader.
737 And includes the following general changes:
738         * CHANGES BridgeDB's continuous integration infrastructure to run
739         tests for:
740                 - Twisted-13.2.0 (Debian Wheezy version),
741                 - Twisted-14.0.2 (Debian Jessie version), and
742                 - Twisted-15.0.0 (latest and greatest)
743         As well as testing both:
744                 - pyOpenSSL-0.13.1 (Debian Wheezy version), and
745                 - pyOpenSSL-0.14 (Debian Jessie version).
746         See https://travis-ci.org/isislovecruft/bridgedb/builds
748         * FIXES an issue with the $PYTHON_EGG_CACHE directory being group
749         writable on Travis-CI build machines.
751         * UPDATE English (en_US) translations.
753         * UPDATE English (en) translations.
755         * ADD Tamil (ta) translations.
756           Thanks to git12a.
758         * ADD Albanian (sq) translations.
759           Thanks to Bujar Tafili.
761         * ADD Slovenian (sl_SI) translations.
762           Thanks to Dušan, marko, and Nwolfy.
764         * ADD Slovak (sk_SK) translations.
765           Thanks to once.
767         * ADD Esperanto (eo) translations.
768           Thanks to identity, Rico Chan, and trio.
770         * ADD Bulgarian (bg) translations.
771           Thanks to aramaic.
773         * ADD Azerbaijani (az) translations.
774           Thanks to E.
776         * UPDATE Chinese (zh_TW) translations.
777           Thanks to LNDDYL.
779         * UPDATE Chinese (zh_CN) translations.
780           Thanks to Wu Ming Shi and YF.
782         * UPDATE Ukranian (uk) translations.
783           Thanks to Eugene ghostishev, LinuxChata, Oleksii Golub, and
784         Андрій Бандура.
786         * UPDATE Turkish (tr) translations.
787           Thanks to eromytsatiffird, Emir Sarı, Idil Yuksel, ozkansib,
788         Volkan Gezer, and zeki.
790         * UPDATE Swedish (sv) translations.
791           Thanks to Anders Jensen-Urstad, Emil Johansson, GabSeb, ph AA, phst,
792         and leveebreaks.
794         * UPDATE Slovak (sk) translations.
795           Thanks to elo, FooBar, Michal Slovák, Roman 'Kaktuxista' Benji, and
796         StefanH.
798         * UPDATE Russian (ru) translations.
799           Thanks to Andrey Yoker Ogurchikov, Evgrafov Denis, foo,
800         joshuaridney, Oleg, Sergey Briskin, Valid Olov, and Vitaliy Grishenko.
802         * UPDATE Romanian (ro) translations.
803           Thanks to Isus Satanescu, laura berindei, and clopotel.
805         * UPDATE Portuguese (pt_BR) translations.
806           Thanks to João Paulo S.S.
808         * UPDATE Portuguese (pt) translations.
809           Thanks to alfalb.as, André Monteiro, kagazz, Manuela Silva,
810         alfalb_mansil, Andrew_Melim, Pedro Albuquerque, Sérgio Marques, and
811         TiagoJMMC.
813         * UPDATE Polish (pl) translations.
814           Thanks to Aron, JerBen, bogdrozd, Dawid, Rikson, Krzysztof Łojowski,
815         oirpos, and seb.
817         * UPDATE Dutch (nl) translations.
818           Thanks to Adriaan Callaerts, Ann Boen, Cleveridge, Dick,
819         Johann Behrens, Shondoit Walker, Marco Brohet, guryman, Marco
820         Brohet, Tom Becht, Tonko Mulder, math1985, and BBLN.
822         * UPDATE Norwegian Bokmål (nb) translations.
823           Thanks to Allan Nordhøy, Harald, lateralus, Per Thorsheim,
824         and thor574.
826         * UPDATE Latvian (lv) translations.
827           Thanks to Ojārs Balcers and ThePirateDuck.
829         * UPDATE Khmer (km) translations.
830           Thanks to Seng Sutha, Sokhem Khoem, and Sok Sophea.
832         * UPDATE Japanese (ja) translations.
833           Thanks to brt, ABE Tsunehiko, タカハシ, Masaki Saito, and
834         藤前 甲.
836         * UPDATE Italian (it) translations.
837           Thanks to fetidyoo, Francesca Ciceri, HostFat, ironbishop, and
838         Jacob Appelbaum.
840         * UPDATE Hungarian (hu) translations.
841           Thanks to Blackywantscookies, Lajos Pasztor, Cerbo, and vargaviktor.
843         * UPDATE Croatian (hr) translations.
844           Thanks to Ana B, Armando Vega, skiddiep, Tomislav Siroglavić,
845         and gogo.
847         * UPDATE French (fr_CA) translations.
848           Thanks to Lunar, mehditaileb, Onizuka, and yahoe.001.
850         * UPDATE French (fr) translations.
851           Thanks to apaddlingduck, fayçal fatihi, Boubou, Cryptie,
852         Frisson Reynald, hpatte, Lucas Leroy, Lunar, Onizuka, and mehditaileb.
854         * UPDATE Finnish (fi) translations.
855           Thanks to Jorma Karvonen, Spacha, Ossi Kallunki, Sami Kuusisto,
856         viljaminojonen, and Finland355.
858         * UPDATE Farsi (fa) translations.
859           Thanks to arashaalaei, signal89, ardeshir, Gilberto, johnholzer,
860         Mohammad Hossein, perspolis, and Setareh.
862         * UPDATE Spanish (es) translations.
863           Thanks to dark_yoshi, toypurina, BL, NinjaTuna, Noel Torres,
864         Paola Falcon, strel, and Jonis.
866         * UPDATE English (en_GB) translations.
867           Thanks to Andi Chandler, Richard Shaylor, and ronnietse.
869         * UPDATE Greek (el) translations.
870           Thanks to Adrian Pappas, andromeas, oahanx, isv31, and kotkotkot.
872         * UPDATE German (de) translations.
873           Thanks to trantor, Ettore Atalan, unknwon_anonymous, konstibae,
874         Locke, Tobias Bannert, qbi, Sebastian, and debakel.
876         * UPDATE Danish (da) translations.
877           Thanks to Christian Villum, David Nielsen, OliverMller, torebjornson,
878         Thomas Pryds, and Tore Bjørnson.
880         * UPDATE Czech (cs) translations.
881           Thanks to A5h8d0wf0x, Adam Slovacek, Elisa, Sanky, Jiří Vírava,
882         mxsedlacek, and Radek Bensch.
884         * UPDATE Catalan (ca) translations.
885           Thanks to Albert, Assumpta Anglada, Eloi García i Fargas, Humbert,
886         and laia_.
888         * UPDATE Arabic (ar) translations.
889           Thanks to Ash and Valetudinarian.
891 Changes in version 0.2.4 - 2015-02-03
893         * HOTFIXES a UnicodeDecodeError resulting from patches for #12627.
894         https://bugs.torproject.org/12627
896         * FIXES #9874 https://bugs.torproject.org/9874
897         BridgeDB now has integration tests for all bridge distributors.
898         Thanks to trygve for the patches.
900         * FIXES #12871 https://bugs.torproject.org/12871
901         Bridge Buckets now work, even if the code for calculating Bridge
902         stability is disabled.
903         Thanks to Matt Finkel for the patches.
905         * FIXES part of #12029 https://bugs.torproject.org/12029
906         Major sections of the bridgedb.Bridges module, which holds
907         BridgeDB's main data structures for storing and parsing Bridges,
908         have been refactored in preparation for upcoming changes to use
909         Stem's parsers (see #9380 https://bugs.torproject.org/9380)
911         * FIXES #12932 https://bugs.torproject.org/12932
912         Arguments for Pluggable Transports in the bridge lines which
913         BridgeDB distributes to users are now properly
914         space-separated. This issue was affecting the deployment of the
915         obfs4 PT (see #12130 https://bugs.torproject.org/12130).
917         * FIXES #13123 https://bugs.torproject.org/13123
918         Previously, there were two additional whitespace characters at the
919         beginning of bridge lines handed out by BridgeDB's HTTPS
920         distributor, which would be annoyingly copy+pasted into TorLauncher
921         and torrcs, etc.  These are now gone.
923         * FIXES #12664 https://bugs.torproject.org/12664
924         Previously, for the bridge lines handed out by BridgeDB's HTTPS
925         distributor, the newlines were not properly pasted when a user
926         would copy+paste the lines. This is now fixed. Additionally, there
927         is now a "Select All" button (JS must be enabled) to select all
928         text for the bridge lines, to attempt to reduce user copy+paste
929         errors.  If the display area which contains the bridge lines is
930         clicked, and JS is enabled, it has the same effect as clicking the
931         "Select All" button.
933         * FIXES #14064 https://bugs.torproject.org/14064
934         The bridge lines handed out by BridgeDB's HTTPS distributor are
935         now displayed with a horizontal scrollbar if they are too long to
936         fit into the display area.
938         * FIXES #11345 https://bugs.torproject.org/11345
939         BridgeDB now supports giving users QRCodes for their bridge lines,
940         to facilitate getting bridges into Tails and onto mobile devices.
942         * FIXES #12130 https://bugs.torproject.org/12130
943         BridgeDB's distributors now have options to distribute obfs4 bridges.
945 And includes the following general changes:
946         * CHANGES the integration tests based on Mechanize to only run on
947         CI servers, not locally on developers laptops, since it requires
948         the running BridgeDB test/staging instance to offer a plaintext
949         HTTP interface. See commit 24acf6a72.
950         https://gitweb.torproject.org/bridgedb.git/commit/?id=24acf6a72931c602631c97dbbeb582c22cf446cb
952         * ADDS better installation instructions in README.rst for
953         developers who wish to test their changes to BridgeDB.
954         Thanks to Alden Page for the patch.
957 Changes in version 0.2.3 - 2014-07-26
959         * FIXES #5463 https://bugs.torproject.org/5463
960         BridgeDB can now OpenPGP sign outgoing emails.
962         * FIXES #9385 https://bugs.torproject.org/9385
963         BridgeDB now has the ability to blacklist email addresses, and
964         configurable options to fuzzy match and block addresses which are
965         similar enough to those in the blacklist.
967         * FIXES #11139 https://bugs.torproject.org/11139
968         You can now email BridgeDB from Riseup email addresses!
970         * FIXES #12147 https://bugs.torproject.org/12147
971         An additional issue with BridgeDB's code for scheduling actions
972         was identified by Robert Ransom, who also provided a unittest to
973         demonstrate the issue and test for future regressions. The issue
974         pointed out has also been fixed.
976         * FIXES #12635 https://bugs.torproject.org/12635
977         The links in BridgeDB's email and HTTPS distributor UIs have been
978         changed from the obsolete
979         https://www.torproject.org/projects/torbrowser.html.en#downloads-beta
980         to https://www.torproject.org/projects/torbrowser.html.
982         * FIXES #12650 https://bugs.torproject.org/12650
983         BridgeDB's translation files sometimes take a little while to
984         update because real live human volunteers need to go to
985         Transifex.org and convert the strings between languages. Then I
986         need to import the strings, check all of them by hand to make sure
987         there's no funny business which could harm users in them, and then
988         commit all the diffs. Sadly, there isn't much more we can do to
989         speed up this process, so sometimes BridgeDB's UI falls back to
990         English when it doesn't have new enough translations files. Sorry!
992 And includes the following general changes:
994         * UPDATE translation: Chinese - Taiwan (zh_TW)
995                 THANKS TO danfong.
996         * UPDATE translation: Chinese - China (zh_CN)
997                 THANKS TO Meng3, leungsookfan, and Wu Ming Shi.
998         * UPDATE translation: Turkish (tr)
999                 THANKS TO eromytsatiffird, Emre, Idil Yuksel, ozkansib,
1000                 Volkan Gezer, and zeki.
1001         * UPDATE translation: Swedish (sv)
1002                 THANKS TO Anders Jensen-Urstad, GabSeb, and phst.
1003         * UPDATE translation: Russian (ru)
1004                 THANKS TO Evgrafov Denis, Eugene, foo, Sergey Briskin,
1005                 Valid Olov, and Vitaliy Grishenko.
1006         * UPDATE translation: Brazilian Portuguese (pt_BR)
1007                 THANKS TO Isabel Ferreira, and Rodrigo Emmanuel Santana
1008                 Borges.
1009         * UPDATE translation: Portuguese (pt)
1010                 THANKS TO André Monteiro, kagazz, Manuela Silva,
1011                 Andrew_Melim, and Sérgio Marques.
1012         * UPDATE translation: Polish (pl)
1013                 THANKS TO Aron, Dawid, Krzysztof Łojowski, and seb.
1014         * UPDATE translation: Norwegian Bokmål (nb)
1015                 THANKS TO Allan Nordhøy, Harald, and thor574.
1016         * UPDATE translation: Malay (ms_MY)
1017                 THANKS TO shahril.
1018         * UPDATE translation: Latvian (lv)
1019                 THANKS TO Ojārs Balcers.
1020         * UPDATE translation: Khmer (km)
1021                 THANKS TO Seng Sutha, Sokhem Khoem, and Sok Sophea.
1022         * UPDATE translation: Hungarian (hu)
1023                 THANKS TO Blackywantscookies, and Cerbo.
1024         * UPDATE translation: Croatian (hr_HR)
1025                 THANKS TO Ana B.
1026         * UPDATE translation: Hebrew (he)
1027                 THANKS TO Elifelet.
1028         * UPDATE translation: Canadian French (fr_CA)
1029                 THANKS TO yahoe.001.
1030         * UPDATE translation: French (fr)
1031                 THANKS TO fayçal fatihi, Frisson Reynald, hpatte, Lunar,
1032                 Onizuka, themen, Towinet, and Yannick Heintz.
1033         * UPDATE translation: Finish (fi)
1034                 THANKS TO viljaminojonen, and Finland355.
1035         * UPDATE translation: Farsi (fa)
1036                 THANKS TO Mohammad Hossein.
1037         * UPDATE translation: Spanish - Chile (es_CL)
1038                 THANKS TO Pablo Lezaeta.
1039         * UPDATE translation: Spanish (es)
1040                 THANKS TO Paola Falcon.
1041         * UPDATE translation: British English (en_GB)
1042                 THANKS TO richardshaylor.
1043         * UPDATE translation: Greek (el)
1044                 THANKS TO Adrian Pappas, andromeas, isv31, and Wasilis
1045                 Mandratzis.
1046         * UPDATE translation: German (de)
1047                 THANKS TO Tobias Bannert.
1048         * UPDATE translation: Danish (da)
1049                 THANKS TO autofunk78.
1050         * UPDATE translation: Arabic (ar)
1051                 THANKS TO Ahmad Gharbeia, Mohamed El-Feky, AnonymousLady,
1052                 0xidz, Sherief Alaa , and محيي الدين.
1055 Changes in version 0.2.2 - 2014-06-06
1057         * FIXES #9874 https://bugs.torproject.org/9874
1058         BridgeDB's email and HTTPS distributors were written in a manner
1059         that makes them largely impossible to write unittests for. Since
1060         the recent rewrite of BridgeDB's email distributor server backends
1061         for version 0.2.1, BridgeDB email distributor is now testable and
1062         has near 100% code coverage, see
1063         https://coveralls.io/r/isislovecruft/bridgedb
1065         * FIXES #12086 https://bugs.torproject.org/12086
1066         BridgeDB was found to accept incoming emails sent to any email
1067         address whose local part included the word bridges, e.g. emails
1068         sent to 'givemebridges@serious.ly' would be responded to as if
1069         they were destined for BridgeDB's real email address.
1070           - BridgeDB now strictly checks that the local part of the email
1071             address that an incoming email was sent to (after removing plus
1072             aliases, i.e. '+es_ES', '+fa', etc.) exactly matches BridgeDB
1073             configured email address username.
1074           - BridgeDB now checks that the domain name portion of the email
1075             address that an incoming email was sent to either matches the
1076             domain name portion of BridgeDB's configured email address, or
1077             is a subdomain of that domain.
1079         * FIXES #12089 https://bugs.torproject.org/12089
1080         There has been a bug for quite some time now where BridgeDB could
1081         be used to email arbitrary email addresses (as long as these
1082         addresses were ones which BridgeDB allows, i.e. Gmail or Yahoo
1083         email addresses). This was due to BridgeDB not checking that the
1084         email address used in the SMTP 'MAIL FROM:' command on an incoming
1085         message matched the one used in that email's 'From:'
1086         header.
1087           - BridgeDB now checks that the email addresses in the SMTP 'MAIL
1088             FROM:' and the 'From:' header on that incoming email match, in
1089             addition to the previous checks that the email address' domain
1090             is in the set of allowed domains.
1092         * FIXES #12090 https://bugs.torproject.org/12090
1093         BridgeDB has been replying with an empty email. I don't actually
1094         know for sure if this one is fixed. Before deploying version
1095         0.2.1, the continuous integration tests showed email responses
1096         being correctly generated, and I was also able to receive
1097         correctly formed email responses from BridgeDB on a local testing
1098         instance on my laptop. It appears that this bug occurs only on the
1099         deployment server at ponticum.torproject.org, possibly due to the
1100         outdated Python version in Debian Wheezy. I have not been able to
1101         reproduce this bug on any other machine.
1103         * FIXES #12091 https://bugs.torproject.org/12091
1104         BridgeDB wasn't properly ignoring emails whose DKIM signature
1105         verification header read "X-DKIM-Authentication-Results: dunno".
1106           - Bridgedb now marks incoming emails which have a
1107             "X-DKIM-Authentication-Results: dunno" header as invalid and
1108             ignores them.
1110         * FIXES #12147 https://bugs.torproject.org/12147
1111         If a user refreshed https://bridges.torproject.org/bridges after
1112         successfully solving a CAPTCHA, BridgeDB would reply with a new
1113         set of bridges for each page refresh. This was due to the use of
1114         `getInterval()` in `IPBasedDistributor.getBridgesForIP()`.  The
1115         correct function to use is `getIntervalStart()`.  This had been
1116         noted in a "XXX FIXME" comment above the call for quite some time,
1117         however, when the `bridgedb.schedule` (previously called
1118         `bridgedb.Time`) module was revised to support CAPTCHA timeouts
1119         (#11215), the call to `getInterval()` was mistakenly not replaced
1120         with the correct function.
1121           - BridgeDB CAPTCHAs must be solved within 10 minutes.
1122           - Hashring rotation for bridges in BridgeDB HTTPS distributor
1123             occurs every 3 hours. Refreshing the page with bridges on it
1124             will return these same bridges for that time period, and
1125             afterwards redirect back to the CAPTCHA page.
1126         THANKS TO francisco on IRC and arma for reporting the bug.
1128         * FIXES #12212 https://bugs.torproject.org/12122
1129         TRANSLATOR comments are now properly extracted into the gettext PO
1130         template file.
1132 And include the following general changes:
1133         * FIXES an issue where, when verifying GnuPG signatures made by
1134         BridgeDB's email distributor, GnuPG would error, saying, "invalid
1135         armor header".
1137         * ADD Korean (ko) translations.
1138           Thanks to ilbe123, cwt96, Dr.what, and pCsOrI.
1140         * UPDATE Ukranian (uk) translations.
1141           Thanks to LinuxChata and ghostishev.
1143         * UPDATE Turkish (tr) translations.
1144           Thanks to volkangezer.
1146         * UPDATE Brazilian Portuguese (pt_BR) translations.
1147           Thanks to Communia, Humberto Sartini, Anastasia01, and recognitium.
1149         * UPDATE Polish (pl) translations.
1150           Thanks to hoek, yodaa, maxxx, and sebx.
1152         * UPDATE Dutch (nl) translations.
1153           Thanks to Ann Boen, erwindelaat, guryman, and BBLN.
1154           You guys are extra awesome for translating the phrase:
1155               "Uh oh, spaghettios!"
1156           into the Dutch:
1157               "Helaas pindakaas!"
1158           which, in English, literally means:
1159               "Unfortunately, peanut butter!"
1160           You guys totally just made my day. Thanks.
1162         * UPDATE Japanese (ja) translations.
1163           Thanks to plazmism, who is extra awesome for translating the phrase:
1164               "Uh oh, spaghettios!"
1165           into the Japanese:
1166               "おっとスパゲッティ!"
1167           which apparently the literal English translation is:
1168               "Husband spaghetti!"
1170         * UPDATE Italian (it) translations.
1171           Thanks to Random_R.
1173         * UPDATE Canadian French (fr_CA) translations.
1174           Thanks to Lunar.
1176         * UPDATE Spanish (es) translations.
1177           Thanks to dark_yoshi and strel.
1179         * UPDATE Greek (el) translations.
1180           Thanks to pappasadrian.
1182         * UPDATE German (de) translations.
1183           Thanks to trantor and unknwon_anonymous.
1185         * UPDATE Danish (da) translations.
1186           Thanks to autofunk78 and DavidNielsen.
1189 Changes in version 0.2.1 - 2014-05-16
1190         * FIXES #5463 https://bugs.torproject.org/5463
1191         Emails sent from BridgeDB's email distributor should now be signed.
1192           - BridgeDB's emails will be signed with its online GnuPG keypair. The
1193             public key has the following fingerprint:
1194                 DF81 1109 E17C 8BF1 34B5  EEB6 8DC4 3A28 4882 1E32
1195             The online keypair rotates (a new one is placed on the server once
1196             per year), and it will ALWAYS be signed with BridgeDB's offline
1197             keypair.
1198           - The online keypair above contains two subkeys. The signing subkey
1199             has the fingerprint:
1200                 9FE3 9D1A 7438 9223 3B3F  66F2 21B5 54E9 5938 F4D0
1201           - BridgeDB's offline keypair has the following fingerprint:
1202                 7B78 4370 15E6 3DF4 7BB1  270A CBD9 7AA2 4E8E 472E
1203         All of BridgeDB's keys may be found on the public keyservers, as
1204         well as at https://bridges.torproject.org/keys
1206         * FIXES #7547 https://bugs.torproject.org/7547
1207         BridgeDB's email distributor will now send you a message
1208         explaining how to use it, including valid commands and the list of
1209         Pluggable Transport TYPES currently supported. To receive help
1210         with the email distributor, simply send an email to
1211         mailto:bridges@torproject.org.
1212           - Any emails which do not contain a valid command will receive
1213         the help text in response.
1214           - Otherwise, to specifically request the help text, just say
1215                 "get help"
1216         in the body of your email.
1218         * FIXES #7550 https://bugs.torproject.org/7550
1219         BridgeDB's email responder is now interactive, as described in the
1220         above entry for ticket #7547.
1222         * FIXES #8241 https://bugs.torproject.org/8241
1223         BridgeDB's HTTP distributor won't tell you how to get obfs3
1224         bridges through email, although a blank email, or an email
1225         containing "get help" will.
1227         * CLOSES #9678 https://bugs.torproject.org/9678
1228         A "Select Language" button was requested for the HTTP distributor
1229         on https://bridges.torproject.org. Instead, translated pages are
1230         distributed automatically (via detecting the "Accept-Language"
1231         header which can be set in the Settings panel of all modern
1232         browers).
1233           - To request a specific translation, the "lang=LOCALE" argument
1234         can be added to the URL of any page. For example:
1235         https://bridges.torproject.org/options?lang=ar
1236         will provide the bridge options selection page in Arabic.
1238         * FIXES #11215 https://bugs.torproject.org/11215
1239         BridgeDB's usage of gimp-captcha, which creates a local cache of
1240         CAPTCHA for use on the HTTP distributor, now supports timeouts. If
1241         a CAPTCHA is not solved within 30 minutes of being served to a
1242         client, the solution is invalid regardless of its correctness.
1244         * FIXES #11475 https://bugs.torproject.org/11475
1245         BridgeDB's email responder, up until this point, explained how to
1246         use bridges with Vidalia. It now uses the same help text as found
1247         at https://bridges.torproject.org/howto which explains how to
1248         enter bridges into TorLauncher (used by Tor Browser and Tails).
1250         * FIXES #11522 https://bugs.torproject.org/11522
1251         There were several errors and bugs in BridgeDB's email
1252         distributor. The entire system of server supporting BridgeDB's
1253         email distribution system was rewritten.
1255         * FIXES #11664 https://bugs.torproject.org/11664
1256         Due to changes in the Python language builtin `buffer` in Python3,
1257         which were backported to Python 2.7.6, but neither backported to
1258         Python 2.6.x nor to Python <= 2.7.5, BridgeDB's use of
1259         `io.StringIO` and `io.BytesIO` combined with buffers had to be
1260         revised to support both the new and old Python `buffer` APIs.
1262         * FIXES #11753 https://bugs.torproject.org/11753
1263         BridgeDB's emails should now be translated.
1264           - The translations system for BridgeDB, as well as the template
1265         system for emails, was completely rewritten.  By default, email
1266         responses are in English. To receive an alternate translation,
1267         send an email to bridges+LOCALE@torproject.org, where "LOCALE" is
1268         a locale specifier.
1269           - For example, to receive BridgeDB emails translated into
1270         Chinese, use mailto:bridges+zh_CN@torproject.org.
1271           - Or for Farsi translations, use mailto:bridges+fa@torproject.org.
1272           - For the full list of currently supported LOCALE codes, see
1273         https://gitweb.torproject.org/user/isis/bridgedb.git/tree/HEAD:/lib/bridgedb/i18n/
1275 And includes the following general changes:
1276         * UPDATES the Italian (it) gettext file.
1277           Thanks to Francesca Ciceri.
1278         * ADD Welsh (cy) translations.
1279           Thanks to huwwaters and littlegreykida.
1280         * ADD Slovak (sk) translations.
1281           Thanks to Michelozzo and Svistwarrior273.
1282         * UPDATES the bridgedb.pot translation template file. All the new
1283         strings in the email and HTTP user interfaces will now need
1284         translation! To help out with translations, please see:
1285         https://www.transifex.com/projects/p/torproject/resource/2-bridgedb-bridgedb-pot/
1286         * FIXES several typos in the BridgeDB's code documentation.
1287         * ADDS code documentation for several previously undocumented modules.
1289 Changes in version 0.2.0 - 2014-04-19
1290         * FIXES #5232 Perform long running and blocking transactions in
1291                 background threads. Primarily this moves bridge descriptor
1292                 reparsing into another thread, which significantly increases
1293                 the availability of BridgeDB.
1294         * FIXES #9119 BridgeDB's logger now automatically sanitises all email
1295                 and IP addresses when the SAFELOGGING config option is enabled.
1296         * FIXES #9875 BridgeDB logger now has 100% unittest coverage.
1297         * FIXES #10803 Vidalia is no longer mentioned on
1298                 https://bridges.torproject.org, and instead there are new
1299                 instructions on how to enter bridges into TBB>=3.5 (with
1300                 TorLauncher).
1301         * FIXES #11346 The web interface now has a homepage link. By clicking
1302                 "BridgeDB" in the upper left corner, users can go back to the
1303                 start of TBB downloading and bridge selection instructions at
1304                 https://bridges.torproject.org.
1305         * FIXES #11370 We were using an old (and deprecated) module when we
1306                 created our email responses. Now we use the newer version.
1307         * FIXES #11377 CAPTCHAs on BridgeDB's HTTPS interface are now
1308                 case-insensitive.
1309                 Thanks to Kostas Jakeliunas for the patch.
1310         * FIXES #11522 fixes several issues with encodings and exception
1311                 handling in the email distributor.
1313 And includes the following general changes:
1314         * NEW interface design for https://bridges.torproject.org, including
1315                 updated CSS stylesheets, fonts, and HTML templates. In
1316                 particular, the https://bridges.torproject.org/options page has
1317                 been redesigned completely.
1318                 Thanks to Xengi for providing a modified design of the "roots"
1319                 Tor Project logo, which is used to link to
1320                 https://www.torproject.org.
1321         * CHANGES the TBB download link on the main web interface page to link
1322                 to the new TBB-3.6.x-beta bundles, which include patches by
1323                 David Fifield to unify TBB and PTTBB into one browser, so that
1324                 Pluggable Transports (PTs) are only enabled when the user
1325                 includes a bridge line which uses that PT.
1326         * FIXES plaintext responses on https://bridges.torproject.org,
1327                 these can be requested by using the 'format' HTTP parameter,
1328                 like so: https://bridges.torproject.org/bridges?format=plain
1329         * FIXES the logging of all lines of (including headers!) of incoming
1330                 emails.
1331         * FIXES logfile rotation so that the files are only reable/writable
1332                 by the running process owner, and no other user.
1333         * CHANGES the data format used for encrypted-then-HMACed CAPTCHAs
1334                 to assume that the HMAC is the first 20 bytes. Before we
1335                 assumed that the HMAC was separated from the encrypted data
1336                 with a ';' character, which causes intermittent issues with
1337                 some encoding and CAPTCHA solution values.
1338         * REFACTORS some of the translations handling code, so that soon emails
1339                 will be translated (see #7550), and
1340                 https://bridges.torproject.org should have a "Select Language"
1341                 button (see #9678).
1342         * BUMPS leekspin version to 0.1.3.
1344 Changes in version 0.1.6 - 2014-03-26
1345 BridgeDB 0.1.6 includes fixes for the following bugs:
1346         * FIXES #11196 BridgeDB should use leekspin
1347         * FIXES #11218 ReCaptchaProtectedResource.checkSolution()
1348                 doesn't expect a deferred
1349         * FIXES #11219 BridgeDB's twisted version doesn´t have a
1350                 `t.w.client.HTTPConnectionPool` class
1351         * FIXES #11231 BridgeDB's txrecaptcha returns the "No bridges
1352                 available!" page if 'captcha_response_field' is blank
1354 And includes the following general changes:
1355         * ADDS several new translations languages.
1357 Changes in version 0.1.5 - 2014-02-27
1358 BridgeDB 0.1.5 includes fixes for the following bugs:
1359         * FIXES #9264 Problem with transport lines in BridgeDB's bridge
1360                 pool assignment files
1361         * FIXES #10809 reCAPTCHA on bridges.torproject.org are impossible
1362                 to solve for humans
1363         * FIXES #10834 Configurable reCAPTCHA remoteip
1364         * FIXES #11127 reCaptcha verification is hardcoded to use
1365                 plaintext HTTP
1367 And includes the following general changes:
1368         * CHANGES the way the client's IP address is reported to the
1369         reCaptcha API server. Previously, for each client request, a
1370         completely random IP address was generated, and BridgeDB lied to
1371         the reCaptcha server by sending this random IP and saying that it
1372         was the client's IP. With these changes, BridgeDB can be
1373         configured to report a static IP address (it's own IP) as the
1374         client's IP, in the hopes that the IP whitelisting used by
1375         reCaptcha makes the returned CAPTCHAs less impossible to solve.
1376         * ADDS the ability to use a local cache of CAPTCHAs created by
1377         scripting Gimp with Python. See:
1378         https://github.com/isislovecruft/gimp-captcha
1379         * USES TLS during CAPTCHA solution verification when using
1380         reCaptcha.
1383 Changes in version 0.1.4 - 2014-02-21
1384 BridgeDB 0.1.4 includes fixes for the following bugs:
1385         * FIXES an RTL encoding issue in the "Step 2" text on index.html
1386                 of the HTTPS distributor.
1389 Changes in version 0.1.3 - 2014-02-21
1390 BridgeDB 0.1.3 includes fixes for the following bugs:
1391         * FIXES #9264 Problem with transport lines in BridgeDB's bridge
1392                 pool assignment files
1393         * FIXES a bug caused by attempts to convert descriptor digests
1394                 which could not be parsed into hexadecimal.
1395         * FIXES a unicode decoding error within the bridgedb.persistent
1396                 module.
1397         * REMOVES continuous integration testing for Python 2.6.
1399 Including the following general changes:
1400         * ADD volunteer page text for GSoC 2014 applications.
1403 Changes in version 0.1.2 - 2014-02-05
1404 BridgeDB 0.1.2 includes fixes for the following bugs:
1405         * FIXES #10811 BridgeDB's assignments.log files are not being updated
1408 Changes in version 0.1.1 - 2014-02-03
1409 BridgeDB 0.1.1 includes fixes for the following bugs:
1410         * FIXES #9127 Users can't ask for ipv6 bridges with the new bridgedb
1411                 interface
1412         * FIXES #9988 Refactor BridgeDB's use of `sha` module to use `hashlib`
1413         * FIXES #10724 Most of the time spent in testing, as well as most
1414                 of the time spent when "BridgeDB is down" (i.e. when I reply
1415                 with "BridgeDB is single-threaded (see #5232) and is parsing
1416                 millions of descriptors"), is within the same
1417                 `bridgedb.Stability.addOrUpdateBridgeHistory()` function (see
1418                 #10724). This function is pretty brutal on CPU and memory, is
1419                 blocking, and it needs to runs thousands and thousands of
1420                 times whenever BridgeDB is restarted (every half hour). The
1421                 algorithm within that function has a time complexity increasing
1422                 linearithmically relative to the number of bridges and timestamps
1423                 already within the database. [0]
1424                 This patch adds a config option to disable/enable running
1425                 the `addOrUpdateBridgeHistory()` function.
1426                 [0]: https://en.wikipedia.org/wiki/Time_complexity#Linearithmic_time
1427         * FIXES #10737 POST arguments to bridges.torproject.org are dropped if
1428                 entering a CAPTCHA fails
1430 Including the following general changes:
1431         * ADDS A general simple error page to display rather than
1432                 webserver tracebacks. See #6127.
1433         * MOVES The recently added BridgeDB specification file
1434                 ('doc/bridge-db-spec.txt') to the torspec repo:
1435                 https://gitweb.torproject.org/torspec.git
1436         * FIXES template caching for the web interface.
1439 Changes in version 0.1.0 - 2014-01-14
1440 BridgeDB 0.1.0 includes fixes for the following bugs:
1441         * FIXES #1606 Write a BridgeDB spec
1442         * FIXES #3573 bridges.torproject.org doesn't have a robots.txt
1443         * FIXES #6127 bridges.tpo runs in development mode
1444         * FIXES #9013 BridgeDB should pass pluggable transport
1445                 shared-secrets to clients
1446         * FIXES #9157 Persian and Arabic should be right aligned on bridges.tpo
1447         * FIXES #9462 BridgeDB netstatus descriptor parsers need refactoring
1448         * FIXES #9959 BridgeDB seems to be missing English translations
1449         * FIXES #9865 Add automated code coverage report generation
1450         * FIXES #9872 Create a test runner for BridgeDB unittests
1451         * FIXES #9873 Convert BridgeDB's old unittests to use twisted.trial
1452         * FIXES #9937 Create fake non-sanitised bridge descriptors for
1453                 BridgeDB testing purposes
1454         * FIXES #10333 Indexing list-like objects by 0L in
1455                 Bridges.getConfigLine
1456         * FIXES #10446 BridgeDB is/was using a GeoIP module which is
1457                 incompatible with virtualenvs
1458         * FIXES #10559 BridgeDB writes `keyid=` before fingerprints
1460 Including the following general changes:
1461         * ADD Numerous unittests and automated continuous integration testing.
1462         * ADD Patches by sysrqb to correctly render right-to-left languages.
1463         * FIXES fallback languages for translations.
1464         * ADD Sphinx makefiles, substantial amounts of documentation.
1465         * ADD Documentations builds (currently at
1466               https://para.noid.cat/bridgedb)
1469 Changes in version 0.0.1 - 2013-08-20
1470 BridgeDB 0.0.1 includes fixes for the following bugs:
1471         * FIXES #5332 Update BridgeDB documentation with deployment
1472                 instructions
1473         * FIXES #9156 BridgeDB: Users try to add obfsbridges to their
1474                 normal TBB
1475         These commits were added to fix a compatibility issue with
1476         Vidalia, though they may be reverted to switch back to the old
1477         behaviour of returning bridge lines in the form:
1478           Bridge [transport_method] address:port [keyid=fingerprint] [K=v] […]
1479         in order to work with torrc files and the new TBB-3.x packages
1480         which use TorLauncher instead of Vidalia.
1481         * PARTIAL FIX #9264 Problem with transport lines in BridgeDB's
1482                   bridge pool assignment files.
1483         * FIXES #9425 Create and document a better BridgeDB (re)deployment
1484                 strategy
1486 Including the following general changes:
1487         * UPDATE translations files with finished files from Transifex for
1488         the strings for the newly-refactored web interface created by
1489         gsathya.
1490         * ADD an automatic version-numbering system as part of developing
1491         a better deployment strategy.
1492         * CHANGE setup.py script to automatically install Python-based
1493         dependencies from requirements.txt.
1494         * REMOVE MANIFEST.in and put equivalent 'include' directives into
1495         setup.py (the less places we have for manually keeping track of
1496         files, the better).
1497         * REMOVE the "bridge " prefix from the lines returned on the web
1498         interface.