Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ZerXes
Tor
Commits
9a61d3f5
Commit
9a61d3f5
authored
Jan 15, 2019
by
Nick Mathewson
🏃
Browse files
Merge branch 'bug24953_squashed'
parents
c281e587
d47e7863
Changes
2
Hide whitespace changes
Inline
Side-by-side
changes/bug24953
0 → 100644
View file @
9a61d3f5
o Minor bugfixes (fallback scripts):
- In updateFallbackDirs.py, call the filter file a "fallback list"
instead of a "whitelist" in check_existing mode.
Fixes bug 24953; bugfix on 0.3.0.3-alpha.
scripts/maint/updateFallbackDirs.py
View file @
9a61d3f5
...
...
@@ -1594,7 +1594,11 @@ class CandidateList(dict):
""" Apply the fallback whitelist_obj to this fallback list,
passing exact to is_in_whitelist(). """
excluded_count
=
0
logging
.
debug
(
'Applying whitelist'
)
list_type
=
'whitelist'
if
whitelist_obj
[
'check_existing'
]:
list_type
=
'fallback list'
logging
.
debug
(
'Applying {}'
.
format
(
list_type
))
# parse the whitelist
whitelist
=
self
.
load_relaylist
(
whitelist_obj
)
filtered_fallbacks
=
[]
...
...
@@ -1609,14 +1613,18 @@ class CandidateList(dict):
else
:
# exclude
excluded_count
+=
1
log_excluded
(
'Excluding %s: not in
whitelist
.'
,
f
.
_fpr
)
log_excluded
(
'Excluding %s: not in
%s
.'
,
f
.
_fpr
,
list_type
)
self
.
fallbacks
=
filtered_fallbacks
return
excluded_count
@
staticmethod
def
summarise_filters
(
initial_count
,
excluded_count
):
return
'/* Whitelist excluded %d of %d candidates. */'
%
(
def
summarise_filters
(
initial_count
,
excluded_count
,
check_existing
):
list_type
=
'Whitelist'
if
check_existing
:
list_type
=
'Fallback list'
return
'/* %s excluded %d of %d candidates. */'
%
(
list_type
,
excluded_count
,
initial_count
)
# calculate each fallback's measured bandwidth based on the median
...
...
@@ -2146,7 +2154,7 @@ class CandidateList(dict):
fallback_count
)))
def
summarise_fallbacks
(
self
,
eligible_count
,
operator_count
,
failed_count
,
guard_count
,
target_count
):
guard_count
,
target_count
,
check_existing
):
s
=
''
# Report:
# whether we checked consensus download times
...
...
@@ -2198,12 +2206,15 @@ class CandidateList(dict):
s
+=
'
\n
'
s
+=
'*/'
if
fallback_count
<
MIN_FALLBACK_COUNT
:
list_type
=
'whitelist'
if
check_existing
:
list_type
=
'fallback list'
# We must have a minimum number of fallbacks so they are always
# reachable, and are in diverse locations
s
+=
'
\n
'
s
+=
'#error Fallback Count %d is too low. '
%
(
fallback_count
)
s
+=
'Must be at least %d for diversity. '
%
(
MIN_FALLBACK_COUNT
)
s
+=
'Try adding entries to
the whitelist, '
s
+=
'Try adding entries to
%s, '
%
(
list_type
)
s
+=
'or setting INCLUDE_UNLISTED_ENTRIES = True.'
return
s
...
...
@@ -2211,14 +2222,16 @@ def process_existing():
logging
.
basicConfig
(
level
=
logging
.
INFO
)
logging
.
getLogger
(
'stem'
).
setLevel
(
logging
.
INFO
)
whitelist
=
{
'data'
:
parse_fallback_file
(
FALLBACK_FILE_NAME
),
'name'
:
FALLBACK_FILE_NAME
}
'name'
:
FALLBACK_FILE_NAME
,
'check_existing'
:
True
}
list_fallbacks
(
whitelist
,
exact
=
True
)
def
process_default
():
logging
.
basicConfig
(
level
=
logging
.
WARNING
)
logging
.
getLogger
(
'stem'
).
setLevel
(
logging
.
WARNING
)
whitelist
=
{
'data'
:
read_from_file
(
WHITELIST_FILE_NAME
,
MAX_LIST_FILE_SIZE
),
'name'
:
WHITELIST_FILE_NAME
}
'name'
:
WHITELIST_FILE_NAME
,
'check_existing'
:
False
}
list_fallbacks
(
whitelist
,
exact
=
False
)
## Main Function
...
...
@@ -2244,7 +2257,11 @@ def list_fallbacks(whitelist, exact=False):
""" Fetches required onionoo documents and evaluates the
fallback directory criteria for each of the relays,
passing exact to apply_filter_lists(). """
print
"/* type=fallback */"
if
whitelist
[
'check_existing'
]:
print
"/* type=fallback */"
else
:
print
"/* type=whitelist */"
print
(
"/* version={} */"
.
format
(
cleanse_c_multiline_comment
(
FALLBACK_FORMAT_VERSION
)))
now
=
datetime
.
datetime
.
utcnow
()
...
...
@@ -2284,7 +2301,8 @@ def list_fallbacks(whitelist, exact=False):
# instead, there will be an info-level log during the eligibility check.
initial_count
=
len
(
candidates
.
fallbacks
)
excluded_count
=
candidates
.
apply_filter_lists
(
whitelist
,
exact
=
exact
)
print
candidates
.
summarise_filters
(
initial_count
,
excluded_count
)
print
candidates
.
summarise_filters
(
initial_count
,
excluded_count
,
whitelist
[
'check_existing'
])
eligible_count
=
len
(
candidates
.
fallbacks
)
# calculate the measured bandwidth of each relay,
...
...
@@ -2337,7 +2355,8 @@ def list_fallbacks(whitelist, exact=False):
if
len
(
candidates
.
fallbacks
)
>
0
:
print
candidates
.
summarise_fallbacks
(
eligible_count
,
operator_count
,
failed_count
,
guard_count
,
target_count
)
target_count
,
whitelist
[
'check_existing'
])
else
:
print
'/* No Fallbacks met criteria */'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment