commit 1f2ea0f2eb5ab19d272b72e022bd5f0266662780 Author: Damian Johnson atagar@torproject.org Date: Sat Feb 22 07:11:43 2014 -0800
Recognize platform line for node-Tor relays
We have a few relays in the wild running node-Tor, a JS counterpart for tor...
https://github.com/Ayms/node-Tor
These relays have a 'node-' prefix on their platform lines. For instance...
'platform node-Tor 0.1.0 on Linux x86_64' https://atlas.torproject.org/#details/E0671CF9CB593F27CD389CD4DD819BF9448EA8...
Caught by sysrqb on...
https://trac.torproject.org/11008 --- stem/descriptor/server_descriptor.py | 2 +- test/unit/descriptor/server_descriptor.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py index 5537de7..a88594b 100644 --- a/stem/descriptor/server_descriptor.py +++ b/stem/descriptor/server_descriptor.py @@ -440,7 +440,7 @@ class ServerDescriptor(Descriptor): # There's no guarantee that we'll be able to pick these out the # version, but might as well try to save our caller the effort.
- platform_match = re.match("^Tor (\S*).* on (.*)$", value) + platform_match = re.match("^(?:node-)?Tor (\S*).* on (.*)$", value)
if platform_match: version_str, self.operating_system = platform_match.groups() diff --git a/test/unit/descriptor/server_descriptor.py b/test/unit/descriptor/server_descriptor.py index b0af7cc..6308535 100644 --- a/test/unit/descriptor/server_descriptor.py +++ b/test/unit/descriptor/server_descriptor.py @@ -9,6 +9,7 @@ import unittest import stem.descriptor.server_descriptor import stem.exit_policy import stem.prereq +import stem.version import stem.util.str_tools
from stem.descriptor.server_descriptor import RelayDescriptor, BridgeDescriptor @@ -143,6 +144,17 @@ class TestServerDescriptor(unittest.TestCase): desc = RelayDescriptor(desc_text, validate = False) self.assertEquals(b"", desc.platform)
+ @patch('stem.descriptor.server_descriptor.RelayDescriptor._verify_digest', Mock()) + def test_platform_for_node_tor(self): + """ + Parse a platform line belonging to a node-Tor relay. + """ + + desc = get_relay_server_descriptor({"platform": "node-Tor 0.1.0 on Linux x86_64"}) + self.assertEquals(b"node-Tor 0.1.0 on Linux x86_64", desc.platform) + self.assertEquals(stem.version.Version("0.1.0"), desc.tor_version) + self.assertEquals("Linux x86_64", desc.operating_system) + def test_protocols_no_circuit_versions(self): """ Constructs with a protocols line without circuit versions.
tor-commits@lists.torproject.org