From 83ee11ebae9d0900ab98bd6583396ce0ff5f8b40 Mon Sep 17 00:00:00 2001 From: Jordan Date: Wed, 16 Sep 2020 01:58:06 -0700 Subject: template cleanup, make First Seen clickable, closes #3 --- tor-metrics/generate.py | 1 + tor-metrics/relays.py | 7 ++++-- tor-metrics/templates/first_seen.html | 4 ++++ tor-metrics/templates/relay-info.html | 2 +- tor-metrics/templates/relay-list.html | 44 +++++++++++++++++++++++------------ 5 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 tor-metrics/templates/first_seen.html diff --git a/tor-metrics/generate.py b/tor-metrics/generate.py index 26af5b2..4315e7d 100755 --- a/tor-metrics/generate.py +++ b/tor-metrics/generate.py @@ -78,6 +78,7 @@ if __name__ == '__main__': RELAY_SET.write_pages_by_key('family') RELAY_SET.write_pages_by_key('flag') RELAY_SET.write_pages_by_key('platform') + RELAY_SET.write_pages_by_key('first_seen') RELAY_SET.write_relay_info() # copy static directory and its contents diff --git a/tor-metrics/relays.py b/tor-metrics/relays.py index 60014c0..97e1514 100644 --- a/tor-metrics/relays.py +++ b/tor-metrics/relays.py @@ -8,6 +8,7 @@ timestamp import hashlib import json import os +import re import time import urllib.request from shutil import rmtree @@ -134,7 +135,7 @@ class Relays: :k: the name of the key to use in self.sorted :v: the name of the subkey to use in self.sorted[k] ''' - if not v or not v.isalnum(): + if not v or not re.match(r'^[A-Za-z0-9_-]+$', v): return if not k in self.json['sorted']: self.json['sorted'][k] = dict() @@ -187,6 +188,8 @@ class Relays: continue self._sort(relay, idx, 'family', member) + self._sort(relay, idx, 'first_seen', relay['first_seen'].split(' ')[0]) + c_str = relay.get('contact', '').encode('utf-8') c_hash = hashlib.md5(c_str).hexdigest() self._sort(relay, idx, 'contact', c_hash) @@ -249,7 +252,7 @@ class Relays: middle_count = i['middle_count'], is_index = False, path_prefix = '../../', - deactivate = k, + key = k, value = v, sp_countries = countries.THE_PREFIXED ) diff --git a/tor-metrics/templates/first_seen.html b/tor-metrics/templates/first_seen.html new file mode 100644 index 0000000..9b40362 --- /dev/null +++ b/tor-metrics/templates/first_seen.html @@ -0,0 +1,4 @@ +{% extends "relay-list.html" %} +{% block title %}Tor Relays :: {{ value }}{% endblock %} +{% block header %}Home :: {{ value }}{% endblock %} +{% block description %}Relays started on {{ value }} are responsible for ~{{ bandwidth }} MB/s of traffic, with {% 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/relay-info.html b/tor-metrics/templates/relay-info.html index 666be11..9dc3f1c 100644 --- a/tor-metrics/templates/relay-info.html +++ b/tor-metrics/templates/relay-info.html @@ -153,7 +153,7 @@ {% endif -%}
First Seen
-
{{ relay['first_seen']|escape }}
+
{{ relay['first_seen']|escape }}
Last Restarted
{{ relay['last_restarted']|escape }}
diff --git a/tor-metrics/templates/relay-list.html b/tor-metrics/templates/relay-list.html index 1275de1..4ecadd6 100644 --- a/tor-metrics/templates/relay-list.html +++ b/tor-metrics/templates/relay-list.html @@ -27,55 +27,69 @@ {% else %} {% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth'] / 1000)|round(2, 'common'), 'KB/s') %}{% endif %} - {% if deactivate != 'family' and relay['effective_family']|length > 1 %} + {% if key != 'family' and relay['effective_family']|length > 1 %} {{ relay['nickname']|truncate(10)|escape }} ({{ relay['effective_family']|length }}) {% else %} - {{ relay['nickname']|truncate(15)|escape }}{% endif %} + {{ relay['nickname']|truncate(15)|escape }} + {% endif %} - {% if deactivate != 'contact' %} + {% if key != 'contact' %} {% if relay['contact'] %} {% else %} - ✉{% endif %} + ✉ + {% endif %} {% else %} - ✉{% endif %} + ✉ + {% endif %} {{ obs_bandwidth }} {{ relay['or_addresses'][0].split(':', 1)[0]|escape }} - {% if relay['as'] %}{% if deactivate != 'as' %} + {% if relay['as'] %}{% if key != 'as' %} {{ relay['as']|escape }} {% else %} - {{ relay['as']|escape }}{% endif %} + {{ relay['as']|escape }} + {% endif %} {% else %} - Unknown{% endif %} + Unknown + {% endif %} {% if relay['as_name'] %} {{ relay['as_name']|escape|truncate(length=20) }} {% else %} - Unknown{% endif %} + Unknown + {% endif %} - {% if relay['country'] %}{% if deactivate != 'country' %} + {% if relay['country'] %}{% if key != 'country' %} {{ relay['country_name']|escape }} {% else %} - {{ relay['country_name']|escape }}{% endif %} + {{ relay['country_name']|escape }} + {% endif %} {% else %} - X{% endif %} + X + {% endif %} - {% if deactivate != 'platform' %} + {% if key != 'platform' %} {{ relay['platform']|truncate(length=10)|escape }} {% else %} - {{ relay['platform']|truncate(length=10)|escape }}{% endif %} + {{ relay['platform']|truncate(length=10)|escape }} + {% endif %} {% for flag in relay['flags'] %}{% if flag != 'StaleDesc' %}{{ flag|escape }} {% endif %}{% endfor %} {% if relay['running'] %} True {% else %} - False{% endif %} + False + {% endif %} + {% if key != 'first_seen' %} + {{ relay['first_seen'].split(' ', 1)[0]|escape }} + {% else %} {{ relay['first_seen'].split(' ', 1)[0]|escape }} + {% endif %} {% endfor %} -- cgit v1.2.3-54-g00ecf