-
Notifications
You must be signed in to change notification settings - Fork 0
/
stem-63a476056017dda5ede35efc4e4f7acfcc1d7d1a.patch
112 lines (107 loc) · 4.6 KB
/
stem-63a476056017dda5ede35efc4e4f7acfcc1d7d1a.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
diff --git a/stem/directory.py b/stem/directory.py
index 710e598e..ae65a417 100644
--- a/stem/directory.py
+++ b/stem/directory.py
@@ -63,7 +63,7 @@ AUTHORITY_ADDR = re.compile('"([\\d\\.]+):(\\d+) ([\\dA-F ]{49})",')
FALLBACK_DIV = '/* ===== */'
FALLBACK_MAPPING = re.compile('/\\*\\s+(\\S+)=(\\S*)\\s+\\*/')
-FALLBACK_ADDR = re.compile('"([\\d\\.]+):(\\d+) orport=(\\d+) id=([\\dA-F]{40}).*')
+FALLBACK_ADDR = re.compile('"([\\d\\.]+) orport=(\\d+) id=([\\dA-F]{40}).*')
FALLBACK_NICKNAME = re.compile('/\\* nickname=(\\S+) \\*/')
FALLBACK_EXTRAINFO = re.compile('/\\* extrainfo=([0-1]) \\*/')
FALLBACK_IPV6 = re.compile('" ipv6=\\[([\\da-f:]+)\\]:(\\d+)"')
@@ -141,7 +141,7 @@ class Directory(object):
raise ValueError('%s has an invalid IPv4 address: %s' % (identifier, address))
elif not connection.is_valid_port(or_port):
raise ValueError('%s has an invalid ORPort: %s' % (identifier, or_port))
- elif not connection.is_valid_port(dir_port):
+ elif not connection.is_valid_port(dir_port, True):
raise ValueError('%s has an invalid DirPort: %s' % (identifier, dir_port))
elif not tor_tools.is_valid_fingerprint(fingerprint):
raise ValueError('%s has an invalid fingerprint: %s' % (identifier, fingerprint))
@@ -418,7 +418,8 @@ class Fallback(Directory):
if mapping:
header[mapping.group(1)] = mapping.group(2)
else:
- raise OSError('Malformed fallback directory header line: %s' % line)
+ # Ignore unknown lines so the file can evolve without breaking this.
+ continue
Fallback._pop_section(lines) # skip human readable comments
@@ -433,12 +434,12 @@ class Fallback(Directory):
results = {}
for matches in _directory_entries(lines, Fallback._pop_section, (FALLBACK_ADDR, FALLBACK_NICKNAME, FALLBACK_EXTRAINFO, FALLBACK_IPV6), required = (FALLBACK_ADDR,)):
- address, dir_port, or_port, fingerprint = matches[FALLBACK_ADDR] # type: ignore
+ address, or_port, fingerprint = matches[FALLBACK_ADDR] # type: ignore
results[fingerprint] = Fallback(
address = address,
or_port = int(or_port),
- dir_port = int(dir_port),
+ dir_port = 0,
fingerprint = fingerprint,
nickname = matches.get(FALLBACK_NICKNAME), # type: ignore
has_extrainfo = matches.get(FALLBACK_EXTRAINFO) == '1',
@@ -571,11 +572,11 @@ DIRECTORY_AUTHORITIES = {
),
'tor26': Authority(
nickname = 'tor26',
- address = '86.59.21.38',
+ address = '217.196.147.77',
or_port = 443,
dir_port = 80,
- fingerprint = '847B1F850344D7876491A54892F904934E4EB85D',
orport_v6 = ('2001:858:2:2:aabb:0:563b:1526', 443),
+ fingerprint = '847B1F850344D7876491A54892F904934E4EB85D',
v3ident = '14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4',
),
'dizum': Authority(
@@ -591,8 +592,8 @@ DIRECTORY_AUTHORITIES = {
address = '131.188.40.189',
or_port = 443,
dir_port = 80,
- fingerprint = 'F2044413DAC2E02E3D6BCF4735A19BCA1DE97281',
orport_v6 = ('2001:638:a000:4140::ffff:189', 443),
+ fingerprint = 'F2044413DAC2E02E3D6BCF4735A19BCA1DE97281',
v3ident = 'ED03BB616EB2F60BEC80151114BB25CEF515B226',
),
'dannenberg': Authority(
@@ -609,18 +610,10 @@ DIRECTORY_AUTHORITIES = {
address = '171.25.193.9',
or_port = 80,
dir_port = 443,
- fingerprint = 'BD6A829255CB08E66FBE7D3748363586E46B3810',
orport_v6 = ('2001:67c:289c::9', 80),
+ fingerprint = 'BD6A829255CB08E66FBE7D3748363586E46B3810',
v3ident = '49015F787433103580E3B66A1707A00E60F2D15B',
),
- 'Faravahar': Authority(
- nickname = 'Faravahar',
- address = '154.35.175.225',
- or_port = 443,
- dir_port = 80,
- fingerprint = 'CF6D0AAFB385BE71B8E111FC5CFF4B47923733BC',
- v3ident = 'EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97',
- ),
'longclaw': Authority(
nickname = 'longclaw',
address = '199.58.81.140',
@@ -634,10 +627,19 @@ DIRECTORY_AUTHORITIES = {
address = '204.13.164.118',
or_port = 443,
dir_port = 80,
- fingerprint = '24E2F139121D4394C54B5BCC368B3B411857C413',
orport_v6 = ('2620:13:4000:6000::1000:118', 443),
+ fingerprint = '24E2F139121D4394C54B5BCC368B3B411857C413',
v3ident = '27102BC123E7AF1D4741AE047E160C91ADC76B21',
),
+ 'faravahar': Authority(
+ nickname = 'faravahar',
+ address = '216.218.219.41',
+ or_port = 443,
+ dir_port = 80,
+ orport_v6 = ('2001:470:164:2::2', 443),
+ fingerprint = 'E3E42D35F801C9D5AB23584E0025D56FE2B33396',
+ v3ident = '70849B868D606BAECFB6128C5E3D782029AA394F',
+ ),
'Serge': Authority(
nickname = 'Serge',
address = '66.111.2.131',