mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Depending on script mode, either use 'whitelist' or 'fallback list'
This commit is contained in:
parent
7fbe7a2563
commit
d47e7863bd
1 changed files with 23 additions and 9 deletions
|
@ -1594,7 +1594,11 @@ class CandidateList(dict):
|
||||||
""" Apply the fallback whitelist_obj to this fallback list,
|
""" Apply the fallback whitelist_obj to this fallback list,
|
||||||
passing exact to is_in_whitelist(). """
|
passing exact to is_in_whitelist(). """
|
||||||
excluded_count = 0
|
excluded_count = 0
|
||||||
logging.debug('Applying fallback list')
|
list_type = 'whitelist'
|
||||||
|
if whitelist_obj['check_existing']:
|
||||||
|
list_type = 'fallback list'
|
||||||
|
|
||||||
|
logging.debug('Applying {}'.format(list_type))
|
||||||
# parse the whitelist
|
# parse the whitelist
|
||||||
whitelist = self.load_relaylist(whitelist_obj)
|
whitelist = self.load_relaylist(whitelist_obj)
|
||||||
filtered_fallbacks = []
|
filtered_fallbacks = []
|
||||||
|
@ -1609,8 +1613,8 @@ class CandidateList(dict):
|
||||||
else:
|
else:
|
||||||
# exclude
|
# exclude
|
||||||
excluded_count += 1
|
excluded_count += 1
|
||||||
log_excluded('Excluding %s: not in fallback list.',
|
log_excluded('Excluding %s: not in %s.',
|
||||||
f._fpr)
|
f._fpr, list_type)
|
||||||
self.fallbacks = filtered_fallbacks
|
self.fallbacks = filtered_fallbacks
|
||||||
return excluded_count
|
return excluded_count
|
||||||
|
|
||||||
|
@ -2150,7 +2154,7 @@ class CandidateList(dict):
|
||||||
fallback_count)))
|
fallback_count)))
|
||||||
|
|
||||||
def summarise_fallbacks(self, eligible_count, operator_count, failed_count,
|
def summarise_fallbacks(self, eligible_count, operator_count, failed_count,
|
||||||
guard_count, target_count):
|
guard_count, target_count, check_existing):
|
||||||
s = ''
|
s = ''
|
||||||
# Report:
|
# Report:
|
||||||
# whether we checked consensus download times
|
# whether we checked consensus download times
|
||||||
|
@ -2202,12 +2206,15 @@ class CandidateList(dict):
|
||||||
s += '\n'
|
s += '\n'
|
||||||
s += '*/'
|
s += '*/'
|
||||||
if fallback_count < MIN_FALLBACK_COUNT:
|
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
|
# We must have a minimum number of fallbacks so they are always
|
||||||
# reachable, and are in diverse locations
|
# reachable, and are in diverse locations
|
||||||
s += '\n'
|
s += '\n'
|
||||||
s += '#error Fallback Count %d is too low. '%(fallback_count)
|
s += '#error Fallback Count %d is too low. '%(fallback_count)
|
||||||
s += 'Must be at least %d for diversity. '%(MIN_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.'
|
s += 'or setting INCLUDE_UNLISTED_ENTRIES = True.'
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
@ -2215,14 +2222,16 @@ def process_existing():
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
logging.getLogger('stem').setLevel(logging.INFO)
|
logging.getLogger('stem').setLevel(logging.INFO)
|
||||||
whitelist = {'data': parse_fallback_file(FALLBACK_FILE_NAME),
|
whitelist = {'data': parse_fallback_file(FALLBACK_FILE_NAME),
|
||||||
'name': FALLBACK_FILE_NAME}
|
'name': FALLBACK_FILE_NAME,
|
||||||
|
'check_existing' : True}
|
||||||
list_fallbacks(whitelist, exact=True)
|
list_fallbacks(whitelist, exact=True)
|
||||||
|
|
||||||
def process_default():
|
def process_default():
|
||||||
logging.basicConfig(level=logging.WARNING)
|
logging.basicConfig(level=logging.WARNING)
|
||||||
logging.getLogger('stem').setLevel(logging.WARNING)
|
logging.getLogger('stem').setLevel(logging.WARNING)
|
||||||
whitelist = {'data': read_from_file(WHITELIST_FILE_NAME, MAX_LIST_FILE_SIZE),
|
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)
|
list_fallbacks(whitelist, exact=False)
|
||||||
|
|
||||||
## Main Function
|
## Main Function
|
||||||
|
@ -2248,7 +2257,11 @@ def list_fallbacks(whitelist, exact=False):
|
||||||
""" Fetches required onionoo documents and evaluates the
|
""" Fetches required onionoo documents and evaluates the
|
||||||
fallback directory criteria for each of the relays,
|
fallback directory criteria for each of the relays,
|
||||||
passing exact to apply_filter_lists(). """
|
passing exact to apply_filter_lists(). """
|
||||||
|
if whitelist['check_existing']:
|
||||||
print "/* type=fallback */"
|
print "/* type=fallback */"
|
||||||
|
else:
|
||||||
|
print "/* type=whitelist */"
|
||||||
|
|
||||||
print ("/* version={} */"
|
print ("/* version={} */"
|
||||||
.format(cleanse_c_multiline_comment(FALLBACK_FORMAT_VERSION)))
|
.format(cleanse_c_multiline_comment(FALLBACK_FORMAT_VERSION)))
|
||||||
now = datetime.datetime.utcnow()
|
now = datetime.datetime.utcnow()
|
||||||
|
@ -2342,7 +2355,8 @@ def list_fallbacks(whitelist, exact=False):
|
||||||
if len(candidates.fallbacks) > 0:
|
if len(candidates.fallbacks) > 0:
|
||||||
print candidates.summarise_fallbacks(eligible_count, operator_count,
|
print candidates.summarise_fallbacks(eligible_count, operator_count,
|
||||||
failed_count, guard_count,
|
failed_count, guard_count,
|
||||||
target_count)
|
target_count,
|
||||||
|
whitelist['check_existing'])
|
||||||
else:
|
else:
|
||||||
print '/* No Fallbacks met criteria */'
|
print '/* No Fallbacks met criteria */'
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue