From 7b5448942cb7501aac960e98f73b7ee11a434517 Mon Sep 17 00:00:00 2001 From: Jordan Date: Fri, 27 Mar 2020 12:47:54 -0700 Subject: add per-key middle/exit count to header --- tor-metrics/generate.py | 72 +++++++++++++++++++++-------- tor-metrics/templates/as.html | 2 +- tor-metrics/templates/country.html | 2 +- tor-metrics/templates/effective_family.html | 2 +- tor-metrics/templates/flag.html | 2 +- tor-metrics/templates/platform.html | 2 +- 6 files changed, 58 insertions(+), 24 deletions(-) diff --git a/tor-metrics/generate.py b/tor-metrics/generate.py index ce7f5c2..ce3fa2a 100755 --- a/tor-metrics/generate.py +++ b/tor-metrics/generate.py @@ -66,10 +66,15 @@ def sort_relays(relays): relays.json['sorted'][key][v] = dict() relays.json['sorted'][key][v]['relays'] = list() relays.json['sorted'][key][v]['bw'] = 0 - if idx not in relays.json['sorted'][key][v]['relays']: - bw = relay['observed_bandwidth'] - relays.json['sorted'][key][v]['relays'].append(idx) - relays.json['sorted'][key][v]['bw'] += bw + relays.json['sorted'][key][v]['exit_count'] = 0 + relays.json['sorted'][key][v]['middle_count'] = 0 + bw = relay['observed_bandwidth'] + relays.json['sorted'][key][v]['relays'].append(idx) + relays.json['sorted'][key][v]['bw'] += bw + if 'Exit' in relay['flags']: + relays.json['sorted'][key][v]['exit_count'] += 1 + else: + relays.json['sorted'][key][v]['middle_count'] += 1 flags = relay['flags'] for flag in flags: @@ -80,10 +85,15 @@ def sort_relays(relays): relays.json['sorted']['flags'][flag] = dict() relays.json['sorted']['flags'][flag]['relays'] = list() relays.json['sorted']['flags'][flag]['bw'] = 0 - if idx not in relays.json['sorted']['flags'][flag]['relays']: - bw = relay['observed_bandwidth'] - relays.json['sorted']['flags'][flag]['relays'].append(idx) - relays.json['sorted']['flags'][flag]['bw'] += bw + relays.json['sorted']['flags'][flag]['exit_count'] = 0 + relays.json['sorted']['flags'][flag]['middle_count'] = 0 + bw = relay['observed_bandwidth'] + relays.json['sorted']['flags'][flag]['relays'].append(idx) + relays.json['sorted']['flags'][flag]['bw'] += bw + if 'Exit' in relay['flags']: + relays.json['sorted']['flags'][flag]['exit_count'] += 1 + else: + relays.json['sorted']['flags'][flag]['middle_count'] += 1 members = relay['effective_family'] for member in members: @@ -94,10 +104,15 @@ def sort_relays(relays): relays.json['sorted']['family'][member] = dict() relays.json['sorted']['family'][member]['relays'] = list() relays.json['sorted']['family'][member]['bw'] = 0 - if idx not in relays.json['sorted']['family'][member]['relays']: - bw = relay['observed_bandwidth'] - relays.json['sorted']['family'][member]['relays'].append(idx) - relays.json['sorted']['family'][member]['bw'] += bw + relays.json['sorted']['family'][member]['exit_count'] = 0 + relays.json['sorted']['family'][member]['middle_count'] = 0 + bw = relay['observed_bandwidth'] + relays.json['sorted']['family'][member]['relays'].append(idx) + relays.json['sorted']['family'][member]['bw'] += bw + if 'Exit' in relay['flags']: + relays.json['sorted']['family'][member]['exit_count'] += 1 + else: + relays.json['sorted']['family'][member]['middle_count'] += 1 def unsorted(relays, filename, is_index): ''' @@ -128,15 +143,22 @@ def effective_family(relays): for family in relays.json['sorted']['family']: members = [] bandwidth = relays.json['sorted']['family'][family]['bw'] + exit_count = relays.json['sorted']['family'][family]['exit_count'] + middle_count = relays.json['sorted']['family'][family]['middle_count'] for m_relay in relays.json['sorted']['family'][family]['relays']: members.append(relay_list[m_relay]) dir_path = os.path.join(output_path, family) os.makedirs(dir_path) f_bandwidth = round(bandwidth / 1000000, 2) # convert to MB/s relays.json['relay_subset'] = members - rendered = template.render(relays=relays, bandwidth=f_bandwidth, - is_index=False, path_prefix='../../', - deactivate='family', family=family) + rendered = template.render(relays=relays, + bandwidth=f_bandwidth, + exit_count=exit_count, + middle_count=middle_count, + is_index=False, + path_prefix='../../', + deactivate='family', + family=family) with open(os.path.join(dir_path, 'index.html'), 'w', encoding='utf8') as html: html.write(rendered) @@ -159,13 +181,19 @@ def pages_by_key(relays, key): for idx in relays.json['sorted'][key][v]['relays']: m_relays.append(relays.json['relays'][idx]) bandwidth = relays.json['sorted'][key][v]['bw'] + exit_count = relays.json['sorted'][key][v]['exit_count'] + middle_count = relays.json['sorted'][key][v]['middle_count'] dir_path = os.path.join(output_path, v) os.makedirs(dir_path) f_bandwidth = round(bandwidth / 1000000, 2) # convert to MB/s relays.json['relay_subset'] = m_relays rendered = template.render(relays=relays, - bandwidth=f_bandwidth, is_index=False, - path_prefix='../../', deactivate=key, + bandwidth=f_bandwidth, + exit_count=exit_count, + middle_count=middle_count, + is_index=False, + path_prefix='../../', + deactivate=key, special_countries=countries.THE_PREFIXED) with open(os.path.join(dir_path, 'index.html'), 'w', encoding='utf8') as html: @@ -188,12 +216,18 @@ def pages_by_flag(relays): for idx in relays.json['sorted']['flags'][flag]['relays']: m_relays.append(relays.json['relays'][idx]) bandwidth = relays.json['sorted']['flags'][flag]['bw'] + exit_count = relays.json['sorted']['flags'][flag]['exit_count'] + middle_count = relays.json['sorted']['flags'][flag]['middle_count'] os.makedirs(output_path) f_bandwidth = round(bandwidth / 1000000, 2) # convert to MB/s relays.json['relay_subset'] = m_relays rendered = template.render(relays=relays, - bandwidth=f_bandwidth, is_index=False, - path_prefix='../../', deactivate=flag, + bandwidth=f_bandwidth, + exit_count=exit_count, + middle_count=middle_count, + is_index=False, + path_prefix='../../', + deactivate=flag, special_countries=countries.THE_PREFIXED, flag=flag) with open(os.path.join(output_path, 'index.html'), 'w', diff --git a/tor-metrics/templates/as.html b/tor-metrics/templates/as.html index c27c0ac..b2d6f90 100644 --- a/tor-metrics/templates/as.html +++ b/tor-metrics/templates/as.html @@ -3,4 +3,4 @@ {% set as_name = relays.json['relay_subset'][0]['as_name']|escape %} {% block title %}Tor Relays :: {{ as_number }}{% endblock %} {% block header %}Home :: {{ as_number }}{% endblock %} -{% block description %}{{ as_number }} ({{ as_name }}) is responsible for ~{{ bandwidth }} MB/s of traffic.{% endblock %} +{% block description %}{{ as_number }} ({{ as_name }}) is responsible for ~{{ bandwidth }} MB/s of traffic, consisting of {% if middle_count > 0 %}{{ middle_count }} middle relay{% if middle_count > 1 %}s{% endif %}{% if exit_count > 0 %} and {% endif %}{% endif %}{% if exit_count > 0 %}{{ exit_count }} exit relay{% if exit_count > 1 %}s{% endif %}{% endif %}.{% endblock %} diff --git a/tor-metrics/templates/country.html b/tor-metrics/templates/country.html index d7b3395..cd0bd27 100644 --- a/tor-metrics/templates/country.html +++ b/tor-metrics/templates/country.html @@ -8,4 +8,4 @@ {% endif %} {% block title %}Tor Relays :: {{ country_orig }}{% endblock %} {% block header %}Home :: {{ country_name }}{% endblock %} -{% block description %}{{ country_name }} ({{ country_abbr }}) is responsible for ~{{ bandwidth }} MB/s of traffic.{% endblock %} +{% block description %}{{ country_name }} ({{ country_abbr }}) is responsible for ~{{ bandwidth }} MB/s of traffic, consisting of {% if middle_count > 0 %}{{ middle_count }} middle relay{% if middle_count > 1 %}s{% endif %}{% if exit_count > 0 %} and {% endif %}{% endif %}{% if exit_count > 0 %}{{ exit_count }} exit relay{% if exit_count > 1 %}s{% endif %}{% endif %}.{% endblock %} diff --git a/tor-metrics/templates/effective_family.html b/tor-metrics/templates/effective_family.html index 7bd2c47..ca29756 100644 --- a/tor-metrics/templates/effective_family.html +++ b/tor-metrics/templates/effective_family.html @@ -1,4 +1,4 @@ {% extends "relay-list.html" %} {% block title %}Tor Relays :: Family {{ family|escape }}{% endblock %} {% block header %}Home :: Family {{ family|escape }}{% endblock %} -{% block description %}Relays with effective family member {{ family|escape }} are responsible for ~{{ bandwidth }} MB/s of traffic.{% endblock %} +{% block description %}Relays with effective family member {{ family|escape }} are responsible for ~{{ bandwidth }} MB/s of traffic, consisting of {% if middle_count > 0 %}{{ middle_count }} middle relay{% if middle_count > 1 %}s{% endif %}{% if exit_count > 0 %} and {% endif %}{% endif %}{% if exit_count > 0 %}{{ exit_count }} exit relay{% if exit_count > 1 %}s{% endif %}{% endif %}.{% endblock %} diff --git a/tor-metrics/templates/flag.html b/tor-metrics/templates/flag.html index d603940..de5135b 100644 --- a/tor-metrics/templates/flag.html +++ b/tor-metrics/templates/flag.html @@ -1,4 +1,4 @@ {% extends "relay-list.html" %} {% block title %}Tor Relays :: {{ flag|escape }} Relays{% endblock %} {% block header %}Home :: {{ flag|escape }} Relays{% endblock %} -{% block description %}Relays with the {{ flag }} flag are responsible for ~{{ bandwidth }} MB/s of traffic.{% endblock %} +{% block description %}Relays with the {{ flag }} flag are responsible for ~{{ bandwidth }} MB/s of traffic, consisting of {% if middle_count > 0 %}{{ middle_count }} middle relay{% if middle_count > 1 %}s{% endif %}{% if exit_count > 0 %} and {% endif %}{% endif %}{% if exit_count > 0 %}{{ exit_count }} exit relay{% if exit_count > 1 %}s{% endif %}{% endif %}.{% endblock %} diff --git a/tor-metrics/templates/platform.html b/tor-metrics/templates/platform.html index 1f2741e..847d884 100644 --- a/tor-metrics/templates/platform.html +++ b/tor-metrics/templates/platform.html @@ -2,4 +2,4 @@ {% set platform = relays.json['relay_subset'][0]['platform']|escape %} {% block title %}Tor Relays :: {{ platform }}{% endblock %} {% block header %}Home :: {{ platform }}{% endblock %} -{% block description %}{{ platform }} systems are responsible for ~{{ bandwidth }} MB/s of traffic.{% endblock %} +{% block description %}{{ platform }} systems are responsible for ~{{ bandwidth }} MB/s of traffic, consisting of {% if middle_count > 0 %}{{ middle_count }} middle relay{% if middle_count > 1 %}s{% endif %}{% if exit_count > 0 %} and {% endif %}{% endif %}{% if exit_count > 0 %}{{ exit_count }} exit relay{% if exit_count > 1 %}s{% endif %}{% endif %}.{% endblock %} -- cgit v1.2.3-54-g00ecf