commit fd37bd0af93c8cbc66901e71a03f7cb52d57070e Author: teor teor@torproject.org Date: Mon Dec 9 16:02:12 2019 +1000
update: Rename fallback.whitelist to fallback_offer_list
The input list is a list of potential fallbacks, that relay operators have offered to have hard-coded in Tor. To avoid relay operator confusion, we should rename the list based on how we use it.
Preparation for 24839.
Fixes bug 32699. --- fallback.whitelist => fallback_offer_list | 0 updateFallbackDirs.py | 84 ++++++++++++++++--------------- 2 files changed, 43 insertions(+), 41 deletions(-)
diff --git a/fallback.whitelist b/fallback_offer_list similarity index 100% rename from fallback.whitelist rename to fallback_offer_list diff --git a/updateFallbackDirs.py b/updateFallbackDirs.py index 02f97e3..3cef7ff 100755 --- a/updateFallbackDirs.py +++ b/updateFallbackDirs.py @@ -263,23 +263,23 @@ ONIONOO_LIMIT = getenv_conf('TOR_FB_ONIONOO_LIMIT', LOCAL_FILES_ONLY = getenv_conf('TOR_FB_LOCAL_FILES_ONLY', False, custom_bool)
-## Whitelist Filter Settings +## Offer List Filter Settings
-# The whitelist contains entries that are included if one of the unique +# The offer list contains entries that are included if one of the unique # attributes matches (IPv4, id, or IPv6 (optional))
-# What happens to entries not in whitelist? +# What happens to relays not in the offer list? # When True, they are included, when False, they are excluded INCLUDE_UNLISTED_ENTRIES = getenv_conf('TOR_FB_INCLUDE_UNLISTED_ENTRIES', OUTPUT_CANDIDATES, custom_bool)
-WHITELIST_FILE_NAME = getenv_conf('TOR_FB_WHITELIST_FILE_NAME', - 'fallback.whitelist', str) +OFFER_LIST_FILE_NAME = getenv_conf('TOR_FB_OFFER_LIST_FILE_NAME', + 'fallback_offer_list', str) FALLBACK_FILE_NAME = ( getenv_conf('TOR_FB_FALLBACK_FILE_NAME', '../tor/src/app/config/fallback_dirs.inc', str))
-# The number of bytes we'll read from the whitelist file before giving up +# The number of bytes we'll read from the offer list file before giving up MAX_LIST_FILE_SIZE = getenv_conf('TOR_FB_MAX_LIST_FILE_SIZE', 1024 * 1024, int)
@@ -1166,8 +1166,8 @@ class Candidate(object): dirport orport id - ipv6 address and port (if present in the fallback or the whitelist) - If the fallback has an ipv6 key, the whitelist line must also have + ipv6 address and port (if present in the fallback or the offer list) + If the fallback has an ipv6 key, the offer list line must also have it, otherwise they don't match.
Logs a warning-level message if the fallback would be an exact match, @@ -1211,8 +1211,8 @@ class Candidate(object): 'to %s:%d?', self._fpr, entry['ipv6'], self.ipv6addr, self.ipv6orport) return False - # if the fallback has an IPv6 address but the whitelist entry - # doesn't, or vice versa, the whitelist entry doesn't match + # if the fallback has an IPv6 address but the offer list entry + # doesn't, or vice versa, the offer list entry doesn't match elif entry.has_key('ipv6') and not self.has_ipv6(): logging.warning('%s excluded: has it lost its former IPv6 address %s?', self._fpr, entry['ipv6']) @@ -1229,7 +1229,7 @@ class Candidate(object): in entry matches: id ipv4 - ipv6 (if present in both the fallback and whitelist) + ipv6 (if present in both the fallback and offer list) The ports and nickname are ignored. Missing or extra ipv6 addresses are ignored.
@@ -1244,12 +1244,13 @@ class Candidate(object): return True return False
- def is_in_whitelist(self, relaylist, exact=False): + def is_in_offer_list(self, relaylist, exact=False): """ If exact is True (existing fallback list), check if this fallback is - an exact match for any whitelist entry, using entry_matches_exact(). + an exact match for any offer list entry, using entry_matches_exact().
- If exact is False (new fallback whitelist), check if this fallback is - a fuzzy match for any whitelist entry, using entry_matches_fuzzy(). """ + If exact is False (new fallback offer list), check if this fallback is + a fuzzy match for any offer list entry, using entry_matches_fuzzy(). + """ for entry in relaylist: if exact: if self.entry_matches_exact(entry): @@ -1752,21 +1753,21 @@ class CandidateList(dict): relaylist.append(relay_entry) return relaylist
- def apply_filter_lists(self, whitelist_obj, exact=False): - """ Apply the fallback whitelist_obj to this fallback list, - passing exact to is_in_whitelist(). """ + def apply_filter_lists(self, offer_list_obj, exact=False): + """ Apply the fallback offer_list_obj to this fallback list, + passing exact to is_in_offer_list(). """ excluded_count = 0 - list_type = 'whitelist' - if whitelist_obj['check_existing']: + list_type = 'offer list' + if offer_list_obj['check_existing']: list_type = 'fallback list'
logging.debug('Applying {}'.format(list_type)) - # parse the whitelist - whitelist = self.load_relaylist(whitelist_obj) + # parse the offer list + offer_list = self.load_relaylist(offer_list_obj) filtered_fallbacks = [] for f in self.fallbacks: - in_whitelist = f.is_in_whitelist(whitelist, exact=exact) - if in_whitelist: + in_offer_list = f.is_in_offer_list(offer_list, exact=exact) + if in_offer_list: # include filtered_fallbacks.append(f) elif INCLUDE_UNLISTED_ENTRIES: @@ -1782,7 +1783,7 @@ class CandidateList(dict):
@staticmethod def summarise_filters(initial_count, excluded_count, check_existing): - list_type = 'Whitelist' + list_type = 'Offer list' if check_existing: list_type = 'Fallback list'
@@ -2368,7 +2369,7 @@ class CandidateList(dict): s += '\n' s += '*/' if fallback_count < MIN_FALLBACK_COUNT: - list_type = 'whitelist' + list_type = 'offer list' if check_existing: list_type = 'fallback list' # We must have a minimum number of fallbacks so they are always @@ -2383,18 +2384,19 @@ class CandidateList(dict): 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, - 'check_existing' : True} - list_fallbacks(whitelist, exact=True) + offer_list = {'data': parse_fallback_file(FALLBACK_FILE_NAME), + 'name': FALLBACK_FILE_NAME, + 'check_existing' : True} + list_fallbacks(offer_list, exact=True)
def process_default(): logging.basicConfig(level=logging.INFO) logging.getLogger('stem').setLevel(logging.INFO) - whitelist = {'data': read_from_file(WHITELIST_FILE_NAME, MAX_LIST_FILE_SIZE), - 'name': WHITELIST_FILE_NAME, - 'check_existing': False} - list_fallbacks(whitelist, exact=False) + offer_list = {'data': read_from_file(OFFER_LIST_FILE_NAME, + MAX_LIST_FILE_SIZE), + 'name': OFFER_LIST_FILE_NAME, + 'check_existing': False} + list_fallbacks(offer_list, exact=False)
## Main Function def main(): @@ -2415,7 +2417,7 @@ def log_excluded(msg, *args): else: logging.info(msg, *args)
-def list_fallbacks(whitelist, exact=False): +def list_fallbacks(offer_list, exact=False): """ Fetches required onionoo documents and evaluates the fallback directory criteria for each of the relays, passing exact to apply_filter_lists(). """ @@ -2426,7 +2428,7 @@ def list_fallbacks(whitelist, exact=False): timestamp = now.strftime('%Y%m%d%H%M%S') print ("/* timestamp={} */" .format(cleanse_c_multiline_comment(timestamp))) - if whitelist['check_existing']: + if offer_list['check_existing']: print "/* source=fallback */" else: print "/* source=whitelist */" @@ -2456,15 +2458,15 @@ def list_fallbacks(whitelist, exact=False): candidates.compute_fallbacks() prefilter_fallbacks = copy.copy(candidates.fallbacks)
- # filter with the whitelist + # filter with the offer list # if a relay has changed IPv4 address or ports recently, it will be excluded # as ineligible before we call apply_filter_lists, and so there will be no - # warning that the details have changed from those in the whitelist. + # warning that the details have changed from those in the offer list. # 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) + excluded_count = candidates.apply_filter_lists(offer_list, exact=exact) print candidates.summarise_filters(initial_count, excluded_count, - whitelist['check_existing']) + offer_list['check_existing']) eligible_count = len(candidates.fallbacks)
# calculate the measured bandwidth of each relay, @@ -2518,7 +2520,7 @@ def list_fallbacks(whitelist, exact=False): print candidates.summarise_fallbacks(eligible_count, operator_count, failed_count, guard_count, target_count, - whitelist['check_existing']) + offer_list['check_existing']) else: print '/* No Fallbacks met criteria */'
tor-commits@lists.torproject.org