summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* | | Merge branch 'hotfix/9462B-netstatus-returns-None' into developIsis Lovecruft2013-12-20
|\ \ \ | |/ /
| * | Handle case when (ip, portlist) from parseALine() is (None, None).Isis Lovecruft2013-12-20
| | | | | | | | | | | | | | | | | | * FIXES a bug where bridgedb.Bridges.parseStatusFile() doesn't handle the (None, None) for (ip, portlist) which is returned whenever bridgedb.parse.networkstatus.parseALine() couldn't parse the line.
| * | Change logged exception to error in parseALine().Isis Lovecruft2013-12-20
| | |
| * | Allow 'a'-lines which don't start with 'a' for backward compatibility.Isis Lovecruft2013-12-20
|/ / | | | | | | | | | | | | The removed bridgedb.Bridges.parseORAddressLine() function was able to take a networkstatus line which started with 'a' or didn't. It's a mess to change all the code, so for now just log a warning when we recieve a line in bridgedb.parse.networkstatus.parseALine() which doesn't start with 'a'.
* | Merge branch 'fix/1606-based-on_bug1606_spec_update_rebased_r1' into developIsis Lovecruft2013-12-13
|\ \
| * | Move specs and proposals into doc/ directory.Isis Lovecruft2013-12-13
| | |
| * | Update spec: PT args are comma-separated.fix/1606-based-on_bug1606_spec_update_rebased_r1Isis Lovecruft2013-12-13
| | |
| * | Update spec: We also parse the "published" line.Isis Lovecruft2013-12-13
| | |
| * | Add description about how we display bridge addressesMatthew Finkel2013-12-13
| | |
| * | Attempt to answer some old questions, ask a new one.Matthew Finkel2013-12-13
| | |
| * | We can sign all outgoing emails nowMatthew Finkel2013-12-13
| | |
| * | Describe how we decide the number of bridges we will returnMatthew Finkel2013-12-13
| | |
| * | Improve description of IP-based distributorMatthew Finkel2013-12-13
| | | | | | | | | | | | | | | We now use a CAPTCHA to weed out (most) scrapers. Also, improve description of how bridges are selected based on filters and rings.
| * | Reword and improve description of the distributorMatthew Finkel2013-12-13
| | |
| * | Clarify how we parse bridge descriptorsMatthew Finkel2013-12-13
| | | | | | | | | | | | | | | Bring the description inline with how the the implementation handles the descriptors and bridges.
| * | We use the "a" line of a bridge from the NS for its OR AddressMatthew Finkel2013-12-13
| | | | | | | | | | | | | | | | | | The "a" line in the network status is checked and signed by the bridge authority, so we prefer this over the "or-address" line in the bridge descriptor.
| * | We now support extra-info documents and pluggable transportsMatthew Finkel2013-12-13
| | | | | | | | | | | | | | | | | | BridgeDB supports parsing extra-info documents which allows it to retrieve information regarding the pluggable transports a bridge accepts.
| * | Minor grammatical and clarifying correctionsMatthew Finkel2013-12-13
| | |
| * | Clarify which bridges are used and which ones are skippedMatthew Finkel2013-12-13
|/ / | | | | | | | | | | If we receive a descriptor for a bridge which was not listed in the network status, then we should not use it. We do not use it, but this is not obvious without some investigation. Make this obvious.
* | Merge branch 'fix/9013_r1' into developIsis Lovecruft2013-12-13
|\ \
| * | Tor expects the PT argument separator to be a commafix/9013_r1Matthew Finkel2013-12-13
|/ /
* | Merge branch 'fix/9462-refactor-netstatus-parsers_r9462C_r2' into developIsis Lovecruft2013-12-12
|\ \
| * | Add three new unittests for parseRLine() base64 encoding issues.fix/9462-refactor-netstatus-parsers_r9462C_r2Isis Lovecruft2013-12-11
| | |
| * | Change parse.networkstatus unittest values to be clearer when decoded.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | Store the pre-base64-encoded value so that the checks are clearer if they fail. Also, remove a str() around a couple `nick` values, they do not make a difference now that the proper __future__ imports are in place.
| * | Move base64 re-padding logic into separate function.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | This logic is not specific to parsing networkstatus descriptors, so for now I've placed it in parse.parseUnpaddedBase64() ― though it could live somewhere else later.
| * | Only return the re-padded base64 string if no errors were raised.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | * CHANGE parse.padBase64() to only return a value if no exceptions were raised during parsing.
| * | Raise ValueError rather than logging in parse.padBase64().Isis Lovecruft2013-12-11
| | |
| * | Merge branch 'fix/10333-index-by-0L_r2' into ↵Isis Lovecruft2013-12-11
| |\ \ | | | | | | | | | | | | fix/9462-refactor-netstatus-parsers_r9462C_r2
| | * | Add two unittests for PortList.__getitem__ to debug #10333.fix/10333-index-by-0L_r2Isis Lovecruft2013-12-11
| | | |
| | * | Make PortList.__getitem__ unittest more explicit.Isis Lovecruft2013-12-11
| | | |
| | * | Fix two unittests for PortList.__getitem__().Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | | | | * FIXES two unittests which erroneously passed before the previous commit which fixed #10333, and then erroneously failed after the fix. They should now correctly test indexing the portlist.
| * | | Merge branch 'fix/10333-index-by-0L_r2' into ↵Isis Lovecruft2013-12-11
| |\ \ \ | | |/ / | | | | | | | | fix/9462-refactor-netstatus-parsers_r9462C_r2
| | * | Fix an error where `PortList`s could not be indexed by strings.Isis Lovecruft2013-12-11
| |/ / | | | | | | | | | | | | | | | The `long` in #10333 should index the PortList as a string, not an integer. * FIXES #10333
| * | Fix lengths of base64 fields in unittests for parseRLine().Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | In real `@type bridge-networkstatus` documents, the base64 fields are 27 characters in length, not 29 characters.
| * | Update unittest parameter docstrings for parseRLine() tests.Isis Lovecruft2013-12-11
| | |
| * | Remove trailing '='s from unittests for networkstatus.parseRLine().Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Because of the bug fixed in the last commit, two unittests in `test_parse_networkstatus.ParseNetworkStatusRLineTests` now FAIL. They are: ø test_invalidDescriptorDigest_missingBase64padding ø test_invalidIPAddress
| * | Add base64 padding to networkstatus 'descDigest' field.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The trailing '='s in the "descriptor digest" field of an `@type-bridge-networkstatus` descriptor are removed before placing them in the descriptor. Therefore, before un-base64-encoding this field, we must re-add the trailing '='s character padding back in, the same as we already to for the "identity digest" field on that same descriptor line. * FIXES a bug in function `bridgedb.parse.networkstatus.parseRLine()` which resulted in the "descriptor digest" field (and all fields after it on the 'r'-line) being set to `None`, due to a base64 decoding error from missing '=' character padding.
| * | Fix typo in inline comment in bridgedb.parse.networkstatus.parseRLine().Isis Lovecruft2013-12-11
| | |
| * | Add more parser logging to Bridges.parseStatusFile().Isis Lovecruft2013-12-11
| | | | | | | | | | | | * FIXES part of #9377
| * | Condense two log calls into one in Bridges.parseExtraInfo().Isis Lovecruft2013-12-11
| | |
| * | Move Bridges.getConfigLine() documentation into function docstring.Isis Lovecruft2013-12-11
| | |
| * | Change `PortList` to `addr.PortList` in bridgedb.Bridges module.Isis Lovecruft2013-12-11
| | |
| * | Fix an iter-over-null-value bug in Dist.IPBasedDistributor class.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | In the initialisor of Dist.IPBasedDistributor, the `ipCatagories` and `answerParameters` both default to `None` and then they are immediately iterated over.
| * | Do not catch general Exceptions in isValidRouterNickname.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | General exceptions here are never raised, and all exceptions which are raised are handled by the calling function, parseRLine().
| * | Refactor networkstatus.parseALine() raise/return more sane values.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were some cases raised within the unittests where, when the IP address had failed to parse, `networkstatus.parseALine()` would return an `addr.PortList` and `None` (for the IP). Having a PortList without an IP address is useless, so instead we should deal with parsing the IP first, and checking its validity. Then, if we have the IP, we should parse and check the ports, then create the PortList. * CHANGE logic of the bridgedb.parse.networkstatus.parseALine() function so that all of the parsing takes place in one `try:` block, and the `except`s catch any and all raised errors, logging messages and reseting variables to None as appropriate. * ADD a FutureWarning if we ever see a networkstatus document with a valid IPc4 address as one of its `ORAddress`es, because this means that tor/torspec and the descriptors have changed format. * CHANGE networkstatus.parseALine() to only return a PortList if an IP address was successfully parsed.
| * | Catch all parser exceptions in parse.networkstatus.parseRLine().Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than raising exceptions during parsing, we should try to log appropriate messages. If the error had a known cause, i.e. one that is due to a badly formatted descriptor, then we should make note of the relevant information from the bad descriptor, and reset any affected variables to None. If the error is possibly do to a newly implemented change in the descriptor format in tor, we should likewise log the event, generate a loud warning about a possible descriptor format change, and continue as before. In networkstatus documents and [bridge-]server-descriptors, it is possible that the `ORAddress` lines may soon change (#9729): 1. to allow more than one ORAddress line, and 2. to allow extra IPv4 addresses in the ORAddress lines. Additionally, remove exception and handlers which are never raised in parseRLine(). 1. The catch for `IndexError`s in networkstatus.parseRLine() is removed: At the beginning of `parseRLine()`, a `NetworkstatusParsingError` is raised if there are less than eight fields in the descriptor, so there is no way that an `IndexError` would ever get raised. Coverage branch reports also show that this `except:` block is never touched. 2. Remove the `InvalidNetworkstatusDescriptorDigest` exception class: …as well as all corresponding code for raising and handling it. The way it was used, there is no possible way that these lines will get executed, because the descriptor digest will either be a str or None. If None, then an error is raised earlier for having too few fields in the 'r'-line. If a str, then `binascii.a2b_base64() will always produce some kind of string, and its exceptions are handled separate. Therefore, there is no way for the descriptor digest to be 0, None, or False. In `bridgedb.parse.networkstatus.parseRLine()` function: * CHANGE to catch and handle all `InvalidNetworkstatusRouterIdentity`, and `NetworkstatusParsingErrors`, exceptions raised during parsing. * REMOVE unnecessary `except IndexError` block. * REMOVE `InvalidNetworkstatusDescriptorDigest` exception class. * CHANGE logging of caught exceptions to use `exc`, not `exc.message`. The later has been deprecated since Python2.6.
| * | Remove line that duplicated setting the flags in parseSLine().Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | The lines following this one (i.e. ``stable = 'Stable' in flags``) ensure that if a particular flags isn't present in the flags, then the variable is false; there is no need to set each variable twice. * REMOVE duplicate variable instantiation/setting from bridgedb.parse.networkstatus.parseSLine() function.
| * | Fix a log message in networkstatus.parseSLine() function.Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | | | | | | | Before, it was only printing whatever was originally found in the networkstatus line, *not* which flags we had successfully parsed. Since we only actually care that we are correctly able to parse relevant flags, that is what the log message should contain.
| * | Remove unused exception ParseORAddressError from bridgedb.Bridges.Isis Lovecruft2013-12-11
| | |
| * | Move constant ALPHANUMERIC into function isValidRouterNickname().Isis Lovecruft2013-12-11
| | | | | | | | | | | | | | | It isn't used anywhere else, and it would be silly to import it from here, so there is no reason to have it at the module level.