[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Mislabeled server descriptors as being version 3
commit cffc3c1be1c4c2a00ce41325a37038d83c8a80a1
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Sat May 5 15:47:06 2012 -0700
Mislabeled server descriptors as being version 3
We're using version 3 of the dir-spec, but server descriptors themselves are
still using their initial version. Correcting the class names and documentation
that labeled them as being version 3. Thanks to Karsten for the correction!
---
stem/descriptor/__init__.py | 2 +-
stem/descriptor/server_descriptor.py | 36 ++++++++++++------------
test/integ/descriptor/server_descriptor.py | 16 +++++-----
test/unit/descriptor/server_descriptor.py | 42 ++++++++++++++--------------
4 files changed, 48 insertions(+), 48 deletions(-)
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 21f40c2..2af1fb0 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -41,7 +41,7 @@ def parse_file(path, descriptor_file):
descriptor_file.seek(0)
if filename == "cached-descriptors" or first_line.startswith("router "):
- for desc in stem.descriptor.server_descriptor.parse_file_v3(descriptor_file):
+ for desc in stem.descriptor.server_descriptor.parse_file(descriptor_file):
desc._set_path(path)
yield desc
else:
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index d56b453..5a187df 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -7,13 +7,13 @@ etc). This information is provided from a few sources...
- the 'cached-descriptors' file in tor's data directory
- tor metrics, at https://metrics.torproject.org/data.html
-parse_file_v3 - Iterates over the server descriptors in a file.
-ServerDescriptorV3 - Tor server descriptor, version 3.
- | |- RelayDescriptorV3 - Server descriptor for a relay.
+parse_file - Iterates over the server descriptors in a file.
+ServerDescriptor - Tor server descriptor.
+ | |- RelayDescriptor - Server descriptor for a relay.
| | |- is_valid - checks the signature against the descriptor content
| | +- digest - calculates the digest value for our content
| |
- | +- BridgeDescriptorV3 - Scrubbed server descriptor for a bridge.
+ | +- BridgeDescriptor - Scrubbed server descriptor for a bridge.
| |- is_scrubbed - checks if our content has been properly scrubbed
| +- get_scrubbing_issues - description of issues with our scrubbing
|
@@ -66,10 +66,10 @@ SINGLE_FIELDS = (
"allow-single-hop-exits",
)
-def parse_file_v3(descriptor_file, validate = True):
+def parse_file(descriptor_file, validate = True):
"""
- Iterates over the version 3 server descriptors in a file. This can read
- either relay or bridge v3 server descriptors.
+ Iterates over the server descriptors in a file. This can read either relay or
+ bridge server descriptors.
Arguments:
descriptor_file (file) - file with descriptor content
@@ -77,7 +77,7 @@ def parse_file_v3(descriptor_file, validate = True):
True, skips these checks otherwise
Returns:
- iterator for ServerDescriptorV3 instances in the file
+ iterator for ServerDescriptor instances in the file
Raises:
ValueError if the contents is malformed and validate is True
@@ -95,7 +95,7 @@ def parse_file_v3(descriptor_file, validate = True):
descriptor_file.seek(0)
if first_line.startswith("router Unnamed 10."):
- yield BridgeDescriptorV3(descriptor_file.read())
+ yield BridgeDescriptor(descriptor_file.read())
return
# Handler for relay descriptors
@@ -137,7 +137,7 @@ def parse_file_v3(descriptor_file, validate = True):
annotations = map(str.strip, annotations)
descriptor_text = "".join(descriptor_content)
- descriptor = RelayDescriptorV3(descriptor_text, validate, annotations)
+ descriptor = RelayDescriptor(descriptor_text, validate, annotations)
yield descriptor
else: break # done parsing descriptors
@@ -175,9 +175,9 @@ def _read_until_keyword(keyword, descriptor_file, inclusive = False):
return content
-class ServerDescriptorV3(stem.descriptor.Descriptor):
+class ServerDescriptor(stem.descriptor.Descriptor):
"""
- Common parent for version 3 server descriptors.
+ Common parent for server descriptors.
Attributes:
nickname (str) - relay's nickname (*)
@@ -599,7 +599,7 @@ class ServerDescriptorV3(stem.descriptor.Descriptor):
def _first_keyword(self): return None
def _last_keyword(self): return None
-class RelayDescriptorV3(ServerDescriptorV3):
+class RelayDescriptor(ServerDescriptor):
"""
Version 3 server descriptor, as specified in...
https://gitweb.torproject.org/torspec.git/blob/HEAD:/dir-spec.txt
@@ -618,7 +618,7 @@ class RelayDescriptorV3(ServerDescriptorV3):
self.signature = None
self._digest = None
- ServerDescriptorV3.__init__(self, raw_contents, validate, annotations)
+ ServerDescriptor.__init__(self, raw_contents, validate, annotations)
def is_valid(self):
"""
@@ -680,7 +680,7 @@ class RelayDescriptorV3(ServerDescriptorV3):
self.signature = block_contents
del entries["router-signature"]
- ServerDescriptorV3._parse(self, entries, validate)
+ ServerDescriptor._parse(self, entries, validate)
def _required_fields(self):
return REQUIRED_FIELDS
@@ -694,7 +694,7 @@ class RelayDescriptorV3(ServerDescriptorV3):
def _last_keyword(self):
return "router-signature"
-class BridgeDescriptorV3(ServerDescriptorV3):
+class BridgeDescriptor(ServerDescriptor):
"""
Version 3 bridge descriptor, as specified in...
https://metrics.torproject.org/formats.html#bridgedesc
@@ -708,7 +708,7 @@ class BridgeDescriptorV3(ServerDescriptorV3):
def __init__(self, raw_contents, validate = True, annotations = None):
self.address_alt = []
self._scrubbing_issues = None
- ServerDescriptorV3.__init__(self, raw_contents, validate, annotations)
+ ServerDescriptor.__init__(self, raw_contents, validate, annotations)
def _parse(self, entries, validate):
entries = dict(entries)
@@ -744,7 +744,7 @@ class BridgeDescriptorV3(ServerDescriptorV3):
del entries["or-address"]
- ServerDescriptorV3._parse(self, entries, validate)
+ ServerDescriptor._parse(self, entries, validate)
def is_scrubbed(self):
"""
diff --git a/test/integ/descriptor/server_descriptor.py b/test/integ/descriptor/server_descriptor.py
index 84732b8..5ad700f 100644
--- a/test/integ/descriptor/server_descriptor.py
+++ b/test/integ/descriptor/server_descriptor.py
@@ -74,7 +74,7 @@ dskLSPz8beUW7bzwDjR6EVNGpyoZde83Ejvau+5F2c6cGnlu91fiZN3suE88iE6e
Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
-----END SIGNATURE-----"""
- desc = stem.descriptor.server_descriptor.RelayDescriptorV3(descriptor_contents)
+ desc = stem.descriptor.server_descriptor.RelayDescriptor(descriptor_contents)
self.assertEquals("caerSidi", desc.nickname)
self.assertEquals("A7569A83B5706AB1B1A9CB52EFF7D2D32E4553EB", desc.fingerprint)
self.assertEquals("71.35.133.197", desc.address)
@@ -116,7 +116,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
descriptor_contents = descriptor_file.read()
descriptor_file.close()
- desc = stem.descriptor.server_descriptor.RelayDescriptorV3(descriptor_contents)
+ desc = stem.descriptor.server_descriptor.RelayDescriptor(descriptor_contents)
self.assertEquals("krypton", desc.nickname)
self.assertEquals("3E2F63E2356F52318B536A12B6445373808A5D6C", desc.fingerprint)
self.assertEquals("212.37.39.59", desc.address)
@@ -181,7 +181,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
RAN_CACHED_DESCRIPTOR_TEST = True
with open(descriptor_path) as descriptor_file:
- for desc in stem.descriptor.server_descriptor.parse_file_v3(descriptor_file):
+ for desc in stem.descriptor.server_descriptor.parse_file(descriptor_file):
# the following attributes should be deprecated, and not appear in the wild
self.assertEquals(None, desc.read_history)
self.assertEquals(None, desc.write_history)
@@ -214,7 +214,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
expected_published = datetime.datetime(2012, 3, 21, 16, 28, 14)
expected_contact = "2048R/F171EC1F Johan Bl\xc3\xa5b\xc3\xa4ck \xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf"
- desc = stem.descriptor.server_descriptor.RelayDescriptorV3(descriptor_contents)
+ desc = stem.descriptor.server_descriptor.RelayDescriptor(descriptor_contents)
self.assertEquals("torrelay389752132", desc.nickname)
self.assertEquals("FEBC7F992AC418BBE42BC13FE94EFCFE6549197E", desc.fingerprint)
self.assertEquals("130.243.230.116", desc.address)
@@ -253,7 +253,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
descriptor_contents = descriptor_file.read()
descriptor_file.close()
- desc = stem.descriptor.server_descriptor.RelayDescriptorV3(descriptor_contents)
+ desc = stem.descriptor.server_descriptor.RelayDescriptor(descriptor_contents)
self.assertEquals("pogonip", desc.nickname)
self.assertEquals("6DABD62BC65D4E6FE620293157FC76968DAB9C9B", desc.fingerprint)
@@ -280,7 +280,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
descriptor_contents = descriptor_file.read()
descriptor_file.close()
- desc = stem.descriptor.server_descriptor.RelayDescriptorV3(descriptor_contents)
+ desc = stem.descriptor.server_descriptor.RelayDescriptor(descriptor_contents)
self.assertEquals("TipTor", desc.nickname)
self.assertEquals("137962D4931DBF08A24E843288B8A155D6D2AEDD", desc.fingerprint)
@@ -290,7 +290,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
# should appear
descriptor_contents = descriptor_contents.replace("Tor 0.1.1.25", "Tor 0.1.2.7")
- self.assertRaises(ValueError, stem.descriptor.server_descriptor.RelayDescriptorV3, descriptor_contents)
+ self.assertRaises(ValueError, stem.descriptor.server_descriptor.RelayDescriptor, descriptor_contents)
def test_bridge_descriptor(self):
"""
@@ -311,7 +311,7 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
"$8C8A470D7C23151665A7B84E75E89FCC205A3304",
]
- desc = stem.descriptor.server_descriptor.BridgeDescriptorV3(descriptor_contents)
+ desc = stem.descriptor.server_descriptor.BridgeDescriptor(descriptor_contents)
self.assertEquals("Unnamed", desc.nickname)
self.assertEquals("AE54E28ED069CDF45F3009F963EE3B3D6FA26A2E", desc.fingerprint)
self.assertEquals("10.45.227.253", desc.address)
diff --git a/test/unit/descriptor/server_descriptor.py b/test/unit/descriptor/server_descriptor.py
index 101cdcd..e3b2ec6 100644
--- a/test/unit/descriptor/server_descriptor.py
+++ b/test/unit/descriptor/server_descriptor.py
@@ -7,7 +7,7 @@ import StringIO
import unittest
import stem.descriptor.server_descriptor
-from stem.descriptor.server_descriptor import RelayDescriptorV3, BridgeDescriptorV3
+from stem.descriptor.server_descriptor import RelayDescriptor, BridgeDescriptor
CRYPTO_BLOB = """
MIGJAoGBAJv5IIWQ+WDWYUdyA/0L8qbIkEVH/cwryZWoIaPAzINfrw1WfNZGtBmg
@@ -80,7 +80,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor()
- desc = RelayDescriptorV3(desc_text)
+ desc = RelayDescriptor(desc_text)
self.assertEquals("caerSidi", desc.nickname)
self.assertEquals("71.35.133.197", desc.address)
@@ -95,7 +95,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor({"opt": "contact www.atagar.com/contact/"})
- desc = RelayDescriptorV3(desc_text)
+ desc = RelayDescriptor(desc_text)
self.assertEquals("www.atagar.com/contact/", desc.contact)
def test_unrecognized_line(self):
@@ -104,7 +104,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor({"pepperjack": "is oh so tasty!"})
- desc = RelayDescriptorV3(desc_text)
+ desc = RelayDescriptor(desc_text)
self.assertEquals(["pepperjack is oh so tasty!"], desc.get_unrecognized_lines())
def test_proceeding_line(self):
@@ -185,12 +185,12 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor({"platform": ""})
- desc = RelayDescriptorV3(desc_text, validate = False)
+ desc = RelayDescriptor(desc_text, validate = False)
self.assertEquals("", desc.platform)
# does the same but with 'platform ' replaced with 'platform'
desc_text = desc_text.replace("platform ", "platform")
- desc = RelayDescriptorV3(desc_text, validate = False)
+ desc = RelayDescriptor(desc_text, validate = False)
self.assertEquals("", desc.platform)
def test_protocols_no_circuit_versions(self):
@@ -212,7 +212,7 @@ class TestServerDescriptor(unittest.TestCase):
desc_text = _make_descriptor({"published": "2012-02-29 04:03:19"})
expected_published = datetime.datetime(2012, 2, 29, 4, 3, 19)
- self.assertEquals(expected_published, RelayDescriptorV3(desc_text).published)
+ self.assertEquals(expected_published, RelayDescriptor(desc_text).published)
def test_published_no_time(self):
"""
@@ -232,7 +232,7 @@ class TestServerDescriptor(unittest.TestCase):
for field in ("read-history", "write-history"):
value = "2005-12-16 18:00:48 (900 s) 81,8848,8927,8927,83,8848"
desc_text = _make_descriptor({"opt %s" % field: value})
- desc = RelayDescriptorV3(desc_text)
+ desc = RelayDescriptor(desc_text)
if field == "read-history":
attr = (desc.read_history, desc.read_history_end,
@@ -256,7 +256,7 @@ class TestServerDescriptor(unittest.TestCase):
value = "2005-12-17 01:23:11 (900 s) "
desc_text = _make_descriptor({"opt read-history": value})
- desc = RelayDescriptorV3(desc_text)
+ desc = RelayDescriptor(desc_text)
self.assertEquals(value, desc.read_history)
self.assertEquals(datetime.datetime(2005, 12, 17, 1, 23, 11), desc.read_history_end)
self.assertEquals(900, desc.read_history_interval)
@@ -271,8 +271,8 @@ class TestServerDescriptor(unittest.TestCase):
desc_text += _make_descriptor()
desc_text += "\ntrailing text that should be ignored, ho hum"
- # running parse_file_v3 should provide an iterator with a single descriptor
- desc_iter = stem.descriptor.server_descriptor.parse_file_v3(StringIO.StringIO(desc_text))
+ # running parse_file should provide an iterator with a single descriptor
+ desc_iter = stem.descriptor.server_descriptor.parse_file(StringIO.StringIO(desc_text))
desc_entries = list(desc_iter)
self.assertEquals(1, len(desc_entries))
desc = desc_entries[0]
@@ -299,10 +299,10 @@ class TestServerDescriptor(unittest.TestCase):
for attr in stem.descriptor.server_descriptor.REQUIRED_FIELDS:
desc_text = _make_descriptor(exclude = [attr])
- self.assertRaises(ValueError, RelayDescriptorV3, desc_text)
+ self.assertRaises(ValueError, RelayDescriptor, desc_text)
# check that we can still construct it without validation
- desc = RelayDescriptorV3(desc_text, validate = False)
+ desc = RelayDescriptor(desc_text, validate = False)
# for one of them checks that the corresponding values are None
if attr == "router":
@@ -318,7 +318,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor(is_bridge = True)
- desc = BridgeDescriptorV3(desc_text)
+ desc = BridgeDescriptor(desc_text)
self.assertEquals("Unnamed", desc.nickname)
self.assertEquals("10.45.227.253", desc.address)
@@ -347,7 +347,7 @@ class TestServerDescriptor(unittest.TestCase):
for attr in unsanitized_attr:
desc_text = _make_descriptor(attr, is_bridge = True)
- desc = BridgeDescriptorV3(desc_text)
+ desc = BridgeDescriptor(desc_text)
self.assertFalse(desc.is_scrubbed())
def test_bridge_unsanitized_relay(self):
@@ -357,7 +357,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor()
- desc = BridgeDescriptorV3(desc_text)
+ desc = BridgeDescriptor(desc_text)
self.assertFalse(desc.is_scrubbed())
def test_or_address_v4(self):
@@ -366,7 +366,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor({"or-address": "10.45.227.253:9001"}, is_bridge = True)
- desc = BridgeDescriptorV3(desc_text)
+ desc = BridgeDescriptor(desc_text)
self.assertEquals([("10.45.227.253", 9001, False)], desc.address_alt)
def test_or_address_v6(self):
@@ -375,7 +375,7 @@ class TestServerDescriptor(unittest.TestCase):
"""
desc_text = _make_descriptor({"or-address": "[fd9f:2e19:3bcf::02:9970]:9001"}, is_bridge = True)
- desc = BridgeDescriptorV3(desc_text)
+ desc = BridgeDescriptor(desc_text)
self.assertEquals([("fd9f:2e19:3bcf::02:9970", 9001, True)], desc.address_alt)
def test_or_address_multiple(self):
@@ -394,7 +394,7 @@ class TestServerDescriptor(unittest.TestCase):
("fd9f:2e19:3bcf::02:9970", 443, True),
]
- desc = BridgeDescriptorV3(desc_text)
+ desc = BridgeDescriptor(desc_text)
self.assertEquals(expected_address_alt, desc.address_alt)
def _expect_invalid_attr(self, desc_text, attr = None, expected_value = None):
@@ -404,8 +404,8 @@ class TestServerDescriptor(unittest.TestCase):
value when we're constructed without validation.
"""
- self.assertRaises(ValueError, RelayDescriptorV3, desc_text)
- desc = RelayDescriptorV3(desc_text, validate = False)
+ self.assertRaises(ValueError, RelayDescriptor, desc_text)
+ desc = RelayDescriptor(desc_text, validate = False)
if attr:
# check that the invalid attribute matches the expected value when
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits