aboutsummaryrefslogtreecommitdiff
path: root/allium
diff options
context:
space:
mode:
authorJordan <me@jordan.im>2020-09-20 23:40:16 -0700
committerJordan <me@jordan.im>2020-09-20 23:40:16 -0700
commit3af4f2023be71ec0fb6ec564515dcaae6a9947a8 (patch)
tree8b0093ec78ac3b8ef0a64daf4235f1bf4e4911a6 /allium
parente76473531d770279961a84272f14e1930919194c (diff)
downloadallium-3af4f2023be71ec0fb6ec564515dcaae6a9947a8.tar.gz
allium-3af4f2023be71ec0fb6ec564515dcaae6a9947a8.zip
improve readability of templates (as much as one can)
Diffstat (limited to 'allium')
-rw-r--r--allium/templates/all.html4
-rw-r--r--allium/templates/as.html6
-rw-r--r--allium/templates/contact.html9
-rw-r--r--allium/templates/country.html6
-rw-r--r--allium/templates/family.html10
-rw-r--r--allium/templates/first_seen.html6
-rw-r--r--allium/templates/flag.html9
-rw-r--r--allium/templates/index.html11
-rw-r--r--allium/templates/misc-families.html135
-rw-r--r--allium/templates/misc-networks.html109
-rw-r--r--allium/templates/platform.html6
-rw-r--r--allium/templates/relay-info.html358
-rw-r--r--allium/templates/relay-list.html197
-rw-r--r--allium/templates/skeleton.html3
14 files changed, 494 insertions, 375 deletions
diff --git a/allium/templates/all.html b/allium/templates/all.html
index ef6c64a..7d63705 100644
--- a/allium/templates/all.html
+++ b/allium/templates/all.html
@@ -2,5 +2,7 @@
{% set relay_count = relays.json['relays']|length %}
{% block title %}Tor Relays :: All{% endblock %}
{% block header %}<a href="./">Home</a> :: All Relays{% endblock %}
-{% block description %}All known (non-guard) relays, {{ relay_count }} in total. A smaller browser-friendly subset (top 500) is <a href="./">available here</a>.{% endblock %}
+{% block description %}All known (non-guard) relays, {{ relay_count }} in total.
+A smaller browser-friendly subset (top 500) is <a href="./">available
+here</a>.{% endblock %}
diff --git a/allium/templates/as.html b/allium/templates/as.html
index 41abcef..3b62b1e 100644
--- a/allium/templates/as.html
+++ b/allium/templates/as.html
@@ -3,4 +3,8 @@
{% set as_name = relays.json['relay_subset'][0]['as_name']|escape %}
{% block title %}Tor Relays :: {{ as_number }}{% endblock %}
{% block header %}<a href="../../">Home</a> :: {{ as_number }}{% endblock %}
-{% block description %}{{ as_number }} ({{ as_name }}) is 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 %}
+{% block description %}{{ as_number }} ({{ as_name }}) is 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/allium/templates/contact.html b/allium/templates/contact.html
index 10bfd93..ed10631 100644
--- a/allium/templates/contact.html
+++ b/allium/templates/contact.html
@@ -7,5 +7,10 @@
{% set contact_hash = ''|hash %}
{% endif %}
{% block title %}Tor Relays :: Contact {{ contact_hash }}{% endblock %}
-{% block header %}<a href="../../">Home</a> :: Contact {{ contact_hash }}{% endblock %}
-{% block description %}Relays with contact info <code>{{ contact }}</code> 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 %}
+{% block header %}<a href="../../">Home</a> :: Contact {{ contact_hash }}{%
+endblock %}
+{% block description %}Relays with contact info <code>{{ contact }}</code> 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/allium/templates/country.html b/allium/templates/country.html
index ab55af3..77c3d51 100644
--- a/allium/templates/country.html
+++ b/allium/templates/country.html
@@ -8,4 +8,8 @@
{% endif %}
{% block title %}Tor Relays :: {{ country_orig }}{% endblock %}
{% block header %}<a href="../../">Home</a> :: {{ country_name }}{% endblock %}
-{% block description %}{{ country_name }} ({{ country_abbr }}) is 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 %}
+{% block description %}{{ country_name }} ({{ country_abbr }}) is 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/allium/templates/family.html b/allium/templates/family.html
index b4d88d8..454ca21 100644
--- a/allium/templates/family.html
+++ b/allium/templates/family.html
@@ -1,4 +1,10 @@
{% extends "relay-list.html" %}
{% block title %}Tor Relays :: Family {{ value|escape }}{% endblock %}
-{% block header %}<a href="../../">Home</a> :: Family <code>{{ value|escape }}</code>{% endblock %}
-{% block description %}Relays with effective family member <code>{{ value|escape }}</code> 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 %}
+{% block header %}<a href="../../">Home</a> :: Family <code>{{ value|escape
+}}</code>{% endblock %}
+{% block description %}Relays with effective family member <code>{{ value|escape
+}}</code> 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/allium/templates/first_seen.html b/allium/templates/first_seen.html
index 9b40362..374760a 100644
--- a/allium/templates/first_seen.html
+++ b/allium/templates/first_seen.html
@@ -1,4 +1,8 @@
{% extends "relay-list.html" %}
{% block title %}Tor Relays :: {{ value }}{% endblock %}
{% block header %}<a href="../../">Home</a> :: {{ 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 %}
+{% 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/allium/templates/flag.html b/allium/templates/flag.html
index 875c494..e174af4 100644
--- a/allium/templates/flag.html
+++ b/allium/templates/flag.html
@@ -1,4 +1,9 @@
{% extends "relay-list.html" %}
{% block title %}Tor Relays :: {{ value|escape }} Relays{% endblock %}
-{% block header %}<a href="../../">Home</a> :: {{ value|escape }} Relays{% endblock %}
-{% block description %}Relays with the {{ value }} flag 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 %}
+{% block header %}<a href="../../">Home</a> :: {{ value|escape }} Relays{%
+endblock %}
+{% block description %}Relays with the {{ value }} flag 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/allium/templates/index.html b/allium/templates/index.html
index e67a366..224d736 100644
--- a/allium/templates/index.html
+++ b/allium/templates/index.html
@@ -1,5 +1,10 @@
{% extends "relay-list.html" %}
{% block title %}Tor Relays{% endblock %}
-{% block header %}Allium (<a href="http://d6amkx45augz4kskvjryv3bmmwyf7vw4k3uwxsh5egnibw2igl5aozqd.onion/">v3</a>, <a href="https://github.com/tempname1024/allium">git</a>) :: <a href="./misc/networks-by-bandwidth.html">Networks</a>, <a href="./misc/families-by-bandwidth.html">Families</a>{% endblock %}
-{% block description %}Relay listings are statically generated every hour. Last fetch was at {{ relays.timestamp }}. Listing top 500 relays; <a href="misc/all.html">view full list</a>.{% endblock %}
-
+{% block header %}Allium (<a
+href="http://d6amkx45augz4kskvjryv3bmmwyf7vw4k3uwxsh5egnibw2igl5aozqd.onion/">v3</a>,
+<a href="https://github.com/tempname1024/allium">git</a>) :: <a
+href="./misc/networks-by-bandwidth.html">Networks</a>, <a
+href="./misc/families-by-bandwidth.html">Families</a>{% endblock %}
+{% block description %}Relay listings are statically generated every hour. Last
+fetch was at {{ relays.timestamp }}. Listing top 500 relays; <a
+ href="misc/all.html">view full list</a>.{% endblock %}
diff --git a/allium/templates/misc-families.html b/allium/templates/misc-families.html
index 7eb2de2..6073a49 100644
--- a/allium/templates/misc-families.html
+++ b/allium/templates/misc-families.html
@@ -1,60 +1,79 @@
-{% extends "skeleton.html" %}
-{% set sorted_by_label = sorted_by.split(',')[0].split('.')[1] %}
-{% block title %}Tor Relays :: Families By {{ sorted_by_label|replace('_', ' ')|title }}{% endblock %}
-{% block body %}
-<h2><a href={{ path_prefix }}>Home</a> :: Families By {{ sorted_by_label|replace('_', ' ')|title }}</h2>
-<p>The set of all relay families with > 1 effective members, sorted by {{ sorted_by_label|replace('_', ' ') }}. The first seen parameter is taken from the oldest relay in the family.</p>
+{% extends "skeleton.html" -%}
+{% set sorted_by_label = sorted_by.split(',')[0].split('.')[1] -%}
+{% block title -%}Tor Relays :: Families By {{ sorted_by_label|replace('_',
+' ')|title }}{% endblock -%}
+{% block body -%}
+<h2><a href={{ path_prefix }}>Home</a> :: Families By {{
+sorted_by_label|replace('_', ' ')|title }}</h2>
+<p>The set of all relay families with > 1 effective members, sorted by {{
+sorted_by_label|replace('_', ' ') }}. The first seen parameter is taken from the
+oldest relay in the family.</p>
<table class="table table-condensed">
- <tr>
- <th>Family</th>
- {% if sorted_by_label == 'bandwidth' %}
- <th>Bandwidth</th>
- {% else %}
- <th><a href="families-by-bandwidth.html">Bandwidth</a></th>
- {% endif %}
- <th class="visible-md visible-lg">Contact</th>
- {% if sorted_by_label == 'exit_count' %}
- <th>Exit / <a href="families-by-middle-count.html">Middle</a></th>
- {% elif sorted_by_label == 'middle_count' %}
- <th><a href="families-by-exit-count.html">Exit</a> / Middle</th>
- {% else %}
- <th><a href="families-by-exit-count.html">Exit</a> / <a href="families-by-middle-count.html">Middle</a></th>
- {% endif %}
- {% if sorted_by_label == 'first_seen' %}
- <th>First Seen</th>
- {% else %}
- <th><a href="families-by-first-seen.html">First Seen</a></th>
- {% endif %}
- </tr>
- <tbody>
- {% set processed = dict() %}
- {% for k, v in relays.json['sorted']['family'].items()|sort(attribute=sorted_by, reverse=True) %}
- {% if relays.json['relays'][v['relays'][0]]['fingerprint'] not in processed %}
- <tr>
- {% if v['bandwidth'] > 1000000 %}
- {% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000000)|round(2, 'common'), 'MB/s') %}
- {% else %}
- {% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000)|round(2, 'common'), 'KB/s') %}{% endif %}
-
- <td><code><a href="{{ path_prefix}}family/{{ k|escape }}/">{{ k|escape }}</a></code></td>
-
- <td>{{ obs_bandwidth }}</td>
-
- {% if v['contact'] %}
- <td class="visible-md visible-lg"><code><a href="{{ path_prefix }}contact/{{ v['contact']|hash }}/" title="{{ v['contact']|escape }}">{{ v['contact']|truncate(50)|escape }}<a></td></code>
- {% else %}
- <td>none</td>{% endif %}
-
- <td>{{ v['exit_count'] }} / {{ v['middle_count'] }}</td>
-
- <td><a href="{{ path_prefix }}first_seen/{{ v['first_seen'].split(' ', 1)[0]|escape }}">{{ v['first_seen'].split(' ', 1)[0]|escape }}</a></td>
-
- {% for r in v['relays'] %}
- {% set _dummy = processed.update({relays.json['relay_subset'][r]['fingerprint']: None}) %}
- {% endfor %}
- </tr>
- {% endif %}
- {% endfor %}
- </tbody>
+<tr>
+<th>Family</th>
+
+{% if sorted_by_label == 'bandwidth' -%}
+<th>Bandwidth</th>
+{% else -%}
+<th><a href="families-by-bandwidth.html">Bandwidth</a></th>
+{% endif -%}
+
+<th class="visible-md visible-lg">Contact</th>
+
+{% if sorted_by_label == 'exit_count' -%}
+<th>Exit / <a href="families-by-middle-count.html">Middle</a></th>
+{% elif sorted_by_label == 'middle_count' -%}
+<th><a href="families-by-exit-count.html">Exit</a> / Middle</th>
+{% else -%}
+<th><a href="families-by-exit-count.html">Exit</a> / <a
+href="families-by-middle-count.html">Middle</a></th>
+{% endif -%}
+
+{% if sorted_by_label == 'first_seen' -%}
+<th>First Seen</th>
+{% else -%}
+<th><a href="families-by-first-seen.html">First Seen</a></th>
+{% endif -%}
+</tr>
+
+<tbody>
+{% set processed = dict() -%}
+{% for k, v in relays.json['sorted']['family'].items()|sort(attribute=sorted_by,
+reverse=True) -%}
+{% if relays.json['relays'][v['relays'][0]]['fingerprint'] not in processed -%}
+<tr>
+{% if v['bandwidth'] > 1000000 -%}
+{% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000000)|round(2,
+'common'), 'MB/s') -%}
+{% else -%}
+{% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000)|round(2,
+'common'), 'KB/s') -%}{% endif -%}
+
+<td><code><a href="{{ path_prefix}}family/{{ k|escape }}/">{{ k|escape
+}}</a></code></td>
+
+<td>{{ obs_bandwidth }}</td>
+
+{% if v['contact'] -%}
+<td class="visible-md visible-lg"><code><a href="{{ path_prefix }}contact/{{
+v['contact']|hash }}/" title="{{ v['contact']|escape }}">{{
+v['contact']|truncate(50)|escape }}<a></td></code>
+{% else -%}
+<td>none</td>
+{% endif -%}
+
+<td>{{ v['exit_count'] }} / {{ v['middle_count'] }}</td>
+
+<td><a href="{{ path_prefix }}first_seen/{{ v['first_seen'].split(' ',
+1)[0]|escape }}">{{ v['first_seen'].split(' ', 1)[0]|escape }}</a></td>
+
+{% for r in v['relays'] -%}
+{% set _dummy = processed.update({relays.json['relay_subset'][r]['fingerprint']:
+None}) -%}
+{% endfor -%}
+</tr>
+{% endif -%}
+{% endfor -%}
+</tbody>
</table>
-{% endblock %}
+{% endblock -%}
diff --git a/allium/templates/misc-networks.html b/allium/templates/misc-networks.html
index 2eeabb1..c6f1191 100644
--- a/allium/templates/misc-networks.html
+++ b/allium/templates/misc-networks.html
@@ -1,54 +1,69 @@
-{% extends "skeleton.html" %}
-{% set sorted_by_label = sorted_by.split(',')[0].split('.')[1] %}
-{% block title %}Tor Relays :: Networks By {{ sorted_by_label|replace('_', ' ')|title }}{% endblock %}
-{% block body %}
-<h2><a href={{ path_prefix }}>Home</a> :: Networks By {{ sorted_by_label|replace('_', ' ')|title }}</h2>
-<p>The set of all ({{ relays.json['sorted']['as']|length }}) recognized networks running at least one relay sorted by {{ sorted_by_label|replace('_', ' ') }}. This data is onionoo-derived and might be out of date with respect to other sources.</p>
+{% extends "skeleton.html" -%}
+{% set sorted_by_label = sorted_by.split(',')[0].split('.')[1] -%}
+{% block title -%}Tor Relays :: Networks By {{ sorted_by_label|replace('_',
+' ')|title }}{% endblock -%}
+{% block body -%}
+<h2><a href={{ path_prefix }}>Home</a> :: Networks By {{
+sorted_by_label|replace('_', ' ')|title }}</h2>
+<p>The set of all ({{ relays.json['sorted']['as']|length }}) recognized networks
+running at least one relay sorted by {{ sorted_by_label|replace('_', ' ') }}.
+This data is onionoo-derived and might be out of date with respect to other
+sources.</p>
<table class="table table-condensed">
- <tr>
- <th>AS Number</th>
- <th>AS Name</th>
- <th>Country</th>
- {% if sorted_by_label == 'bandwidth' %}
- <th>Bandwidth</th>
- {% else %}
- <th><a href="networks-by-bandwidth.html">Bandwidth</a></th>
- {% endif %}
- {% if sorted_by_label == 'exit_count' %}
- <th>Exit / <a href="networks-by-middle-count.html">Middle</a></th>
- {% elif sorted_by_label == 'middle_count' %}
- <th><a href="networks-by-exit-count.html">Exit</a> / Middle</th>
- {% else %}
- <th><a href="networks-by-exit-count.html">Exit</a> / <a href="families-by-middle-count.html">Middle</a></th>
- {% endif %}
- </tr>
- <tbody>
- {% for k, v in relays.json['sorted']['as'].items()|sort(attribute=sorted_by, reverse=True) %}
- <tr>
- {% if v['bandwidth'] > 1000000 %}
- {% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000000)|round(2, 'common'), 'MB/s') %}
- {% else %}
- {% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000)|round(2, 'common'), 'KB/s') %}{% endif %}
+<tr>
+<th>AS Number</th>
+<th>AS Name</th>
+<th>Country</th>
+{% if sorted_by_label == 'bandwidth' -%}
+<th>Bandwidth</th>
+{% else -%}
+<th><a href="networks-by-bandwidth.html">Bandwidth</a></th>
+{% endif -%}
- <td><a href="{{ path_prefix}}as/{{ k|escape }}/">{{ k|escape }}</a></td>
+{% if sorted_by_label == 'exit_count' -%}
+<th>Exit / <a href="networks-by-middle-count.html">Middle</a></th>
+{% elif sorted_by_label == 'middle_count' -%}
+<th><a href="networks-by-exit-count.html">Exit</a> / Middle</th>
+{% else -%}
+<th><a href="networks-by-exit-count.html">Exit</a> / <a
+href="families-by-middle-count.html">Middle</a></th>
+{% endif -%}
+</tr>
- {% if v['as_name'] %}
- <td title="{{ v['as_name']|escape }}"><a href="https://bgp.he.net/{{ k|escape }}">{{ v['as_name']|truncate(20)|escape }}</a></td>
- {% else %}
- <td>Unknown</td>
- {% endif %}
+<tbody>
+{% for k, v in relays.json['sorted']['as'].items()|sort(attribute=sorted_by,
+reverse=True) -%}
+<tr>
+{% if v['bandwidth'] > 1000000 -%}
+{% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000000)|round(2,
+'common'), 'MB/s') -%}
+{% else -%}
+{% set obs_bandwidth = '%s %s'|format((v['bandwidth'] / 1000)|round(2,
+'common'), 'KB/s') -%}{% endif -%}
- {% if v['country'] %}
- <td><a href="{{ path_prefix }}country/{{ v['country']|escape }}/"><img src="{{ path_prefix }}static/images/cc/{{ v['country']|escape }}.png" title="{{ v['country_name']|escape }}"alt="{{ v['country_name']|escape }}"></a></td>
- {% else %}
- <td>X</td>
- {% endif %}
+<td><a href="{{ path_prefix}}as/{{ k|escape }}/">{{ k|escape }}</a></td>
- <td>{{ obs_bandwidth }}</td>
+{% if v['as_name'] -%}
+<td title="{{ v['as_name']|escape }}"><a href="https://bgp.he.net/{{ k|escape
+}}">{{ v['as_name']|truncate(20)|escape }}</a></td>
+{% else -%}
+<td>Unknown</td>
+{% endif -%}
- <td>{{ v['exit_count'] }} / {{ v['middle_count'] }}</td>
- </tr>
- {% endfor %}
- </tbody>
+{% if v['country'] -%}
+<td><a href="{{ path_prefix }}country/{{ v['country']|escape }}/"><img src="{{
+path_prefix }}static/images/cc/{{ v['country']|escape }}.png" title="{{
+v['country_name']|escape }}"alt="{{ v['country_name']|escape
+}}"></a></td>
+{% else -%}
+<td>X</td>
+{% endif -%}
+
+<td>{{ obs_bandwidth }}</td>
+
+<td>{{ v['exit_count'] }} / {{ v['middle_count'] }}</td>
+</tr>
+{% endfor -%}
+</tbody>
</table>
-{% endblock %}
+{% endblock -%}
diff --git a/allium/templates/platform.html b/allium/templates/platform.html
index b2832fd..4f6d941 100644
--- a/allium/templates/platform.html
+++ b/allium/templates/platform.html
@@ -2,4 +2,8 @@
{% set platform = relays.json['relay_subset'][0]['platform']|escape %}
{% block title %}Tor Relays :: {{ platform }}{% endblock %}
{% block header %}<a href="../../">Home</a> :: {{ platform }}{% endblock %}
-{% block description %}{{ platform }} systems 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 %}
+{% block description %}{{ platform }} systems 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/allium/templates/relay-info.html b/allium/templates/relay-info.html
index f46d585..d26dab3 100644
--- a/allium/templates/relay-info.html
+++ b/allium/templates/relay-info.html
@@ -1,176 +1,192 @@
-{% extends "skeleton.html" %}
-{% block title %}Tor Relays :: {{ relay['nickname'] }}{% endblock %}
-{% block body %}
+{% extends "skeleton.html" -%}
+{% block title -%}Tor Relays :: {{ relay['nickname'] }}{% endblock -%}
+{% block body -%}
<div id="content">
<h2><a href="{{ path_prefix }}">Home</a> :: Relay "{{ relay['nickname'] }}"</h2>
<div class="row">
- <div class="col-md-6">
- <dl>
- <dt>Nickname</dt>
- <dd>{{ relay['nickname']|escape }}</dd>
-
- <dt>OR Address</dt>
- <dd><pre class="pre-scrollable">{% for address in relay['or_addresses'] -%}
- {{ address }}
- {% endfor -%}
- </pre></dd>
-
- <dt>Contact</dt>
- {% if relay['contact'] %}
- <dd><a href="{{ path_prefix }}contact/{{ relay['contact']|hash }}">{{ relay['contact']|escape }}</a></dd>
- {% else %}
- <dd><a href="{{ path_prefix }}contact/{{ ''|hash }}">none</a></dd>
- {% endif %}
-
- <dt>Dir Address</dt>
- {% if relay['dir_address'] %}
- <dd><a href="http://{{ relay['dir_address']|escape }}">{{ relay['dir_address']|escape }}</a></dd>
- {% else %}
- <dd>none</dd>
- {% endif %}
-
- <dt>Exit Address</dt>
- {% if relay['exit_address'] %}
- <dd>{{ relay['exit_address']|escape }}</dd>
- {% else %}
- <dd>none</dd>
- {% endif %}
-
- <dt>Observed Bandwidth</dt>
- {% if relay['observed_bandwidth'] > 1000000 %}
- {% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth'] / 1000000)|round(2, 'common'), 'MB/s') %}
- {% else %}
- {% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth'] / 1000)|round(2, 'common'), 'KB/s') %}{% endif %}
- <dd>{{ obs_bandwidth }}</dd>
-
- <dt>IPv4 Exit Policy Summary</dt>
- <dd>
- {% if relay['exit_policy_summary'] -%}
- {%- set v4_summary = relay['exit_policy_summary'].items() -%}
- <pre class="pre-scrollable">{% for k, v in v4_summary -%}
- {{ k|escape }}: {{ '\n ' + v|join('\n ')|escape }}
- {% endfor -%}
- </pre>
- {% else -%}
- <pre>none</pre>
- {% endif -%}
- </dd>
-
- <dt>IPv6 Exit Policy Summary</dt>
- <dd>
- {% if relay['exit_policy_v6_summary'] -%}
- {%- set v6_summary = relay['exit_policy_v6_summary'].items() -%}
- <pre class="pre-scrollable">{% for k, v in v6_summary -%}
- {{ k|escape }}: {{ '\n ' + v|join('\n ')|escape }}
- {% endfor -%}
- </pre>
- {% else -%}
- <pre>none</pre>
- {% endif -%}
- </dd>
-
- <dt>Exit Policy</dt>
- <dd><pre class="pre-scrollable">{% for policy in relay['exit_policy'] -%}
- {{ policy|escape }}
- {% endfor -%}
- </pre></dd>
-
- {% if relay['effective_family']|length > 1 -%}
- <dt>Effective Family Members (<a href="{{ path_prefix }}family/{{ relay['fingerprint']|escape }}">view</a>)</dt>
- {% else %}
- <dt>Effective Family Members</dt>
- {% endif %}
- <dd><pre class="pre-scrollable">{% for e_relay in relay['effective_family'] -%}
- {% if relay['effective_family']|length > 1 -%}
- <a href="{{ e_relay|escape }}.html">{{ e_relay|escape }}</a>
- {% else -%}
- {{ e_relay|escape }}
- {% endif -%}
- {% endfor -%}
- </pre></dd>
-
- <dt>Alleged Family Members</dt>
- <dd>
- {% if relay['alleged_family'] %}
- <pre class="pre-scrollable">{% for a_relay in relay['alleged_family'] -%}
- {% if relay['alleged_family']|length > 1 -%}
- <a href="{{ a_relay|escape }}.html">{{ a_relay|escape }}</a>
- {% else -%}
- {{ a_relay|escape }}
- {% endif -%}
- {% endfor %}
- {% else -%}
- <pre class="pre-scrollable">none
- {% endif -%}
- </pre></dd>
- </dl>
- </div>
- <div class="col-md-6">
- <dl>
- <dt>Fingerprint</dt>
- <dd><pre>{{ relay['fingerprint']|escape }}</pre></dd>
-
- <dt>Flags</dt>
- <dd>
- {% for flag in relay['flags'] %}
- {% if flag != 'StaleDesc' %}
- <a href="{{ path_prefix }}flag/{{ flag.lower()|escape }}"><img src="{{ path_prefix}}static/images/flags/{{ flag.lower()|escape }}.png" title="{{ flag|escape }}" alt="{{ flag|escape }}"></a> {{ flag|escape }}
- {% endif %}
- {% endfor %}
- </dd>
-
- <dt>Host Name</dt>
- <dd>
- {% if relay['verified_host_names'] -%}
- <pre class="verified-hostname" title="verified hostname">{{ relay['verified_host_names']|join('\n')|escape }}</pre>
- {% elif relay['unverified_host_names'] -%}
- <pre class="unverified-hostname" title="unverified hostname">{{ relay['unverified_host_names']|join('\n')|escape }}</pre>
- {% else -%}
- <pre>none</pre>
- {% endif -%}
-
- <dt>Country</dt>
- <dd>
- {% if relay['country'] -%}
- <a href="{{ path_prefix }}country/{{ relay['country']|escape }}/"><img src="{{ path_prefix }}static/images/cc/{{ relay['country']|escape }}.png" title="{{ relay['country_name']|escape }}" alt="{{ relay['country_name']|escape }}"></a> {{ relay['country_name']|escape }}
- {% else -%}
- unknown
- {% endif %}
- </dd>
-
- <dt>AS Number</dt>
- <dd>
- {% if relay['as'] %}
- <a href='{{ path_prefix }}as/{{ relay['as']|escape }}'>{{ relay['as']|escape }}</a>
- {% else %}
- unknown
- {% endif %}
-
- <dt>AS Name</dt>
- <dd>
- {% if relay['as_name'] -%}
- {{ relay['as_name']|escape }} (<a href='https://bgp.he.net/{{ relay['as']|escape }}'>BGP</a>)
- {% else -%}
- unknown
- {% endif -%}
-
- <dt>First Seen</dt>
- <dd><a href="{{ path_prefix }}first_seen/{{ relay['first_seen'].split(' ', 1)[0]|escape }}">{{ relay['first_seen']|escape }}</a></dd>
-
- <dt>Last Restarted</dt>
- <dd>{{ relay['last_restarted']|escape }}</dd>
-
- <dt>Consensus Weight</dt>
- <dd>{{ relay['consensus_weight_fraction']|escape }} ({{ relay['consensus_weight']|escape }})</dd>
-
- <dt>Platform</dt>
- <dd>
- <a href='{{ path_prefix}}platform/{{ relay['platform']|escape }}'>{{
- relay['platform'] }}</a>
- </dd>
-
- </dl>
- </div>
+<div class="col-md-6">
+<dl>
+<dt>Nickname</dt>
+<dd>{{ relay['nickname']|escape }}</dd>
+
+<dt>OR Address</dt>
+<dd><pre class="pre-scrollable">{% for address in relay['or_addresses'] -%}
+{{ address }}
+{% endfor -%}
+</pre></dd>
+
+<dt>Contact</dt>
+{% if relay['contact'] -%}
+<dd><a href="{{ path_prefix }}contact/{{ relay['contact']|hash }}">{{
+relay['contact']|escape }}</a></dd>
+{% else -%}
+<dd><a href="{{ path_prefix }}contact/{{ ''|hash }}">none</a></dd>
+{% endif -%}
+
+<dt>Dir Address</dt>
+{% if relay['dir_address'] -%}
+<dd><a href="http://{{ relay['dir_address']|escape }}">{{
+relay['dir_address']|escape }}</a></dd>
+{% else -%}
+<dd>none</dd>
+{% endif -%}
+
+<dt>Exit Address</dt>
+{% if relay['exit_address'] -%}
+<dd>{{ relay['exit_address']|escape }}</dd>
+{% else -%}
+<dd>none</dd>
+{% endif -%}
+
+<dt>Observed Bandwidth</dt>
+{% if relay['observed_bandwidth'] > 1000000 -%}
+{% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth']
+/ 1000000)|round(2, 'common'), 'MB/s') -%}
+{% else -%}
+{% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth']
+/ 1000)|round(2, 'common'), 'KB/s') -%}{% endif -%}
+<dd>{{ obs_bandwidth }}</dd>
+
+<dt>IPv4 Exit Policy Summary</dt>
+<dd>
+{% if relay['exit_policy_summary'] -%}
+{%- set v4_summary = relay['exit_policy_summary'].items() -%}
+<pre class="pre-scrollable">{% for k, v in v4_summary -%}
+{{ k|escape }}: {{ '\n ' + v|join('\n ')|escape }}
+{% endfor -%}
+</pre>
+{% else -%}
+<pre>none</pre>
+{% endif -%}
+</dd>
+
+<dt>IPv6 Exit Policy Summary</dt>
+<dd>
+{% if relay['exit_policy_v6_summary'] -%}
+{%- set v6_summary = relay['exit_policy_v6_summary'].items() -%}
+<pre class="pre-scrollable">{% for k, v in v6_summary -%}
+{{ k|escape }}: {{ '\n ' + v|join('\n ')|escape }}
+{% endfor -%}
+</pre>
+{% else -%}
+<pre>none</pre>
+{% endif -%}
+</dd>
+
+<dt>Exit Policy</dt>
+<dd><pre class="pre-scrollable">{% for policy in relay['exit_policy'] -%}
+{{ policy|escape }}
+{% endfor -%}
+</pre></dd>
+
+{% if relay['effective_family']|length > 1 -%}
+<dt>Effective Family Members (<a href="{{ path_prefix }}family/{{
+relay['fingerprint']|escape }}">view</a>)</dt>
+{% else -%}
+<dt>Effective Family Members</dt>
+{% endif -%}
+<dd><pre class="pre-scrollable">{% for e_relay in relay['effective_family'] -%}
+{% if relay['effective_family']|length > 1 -%}
+<a href="{{ e_relay|escape }}.html">{{ e_relay|escape }}</a>
+{% else -%}
+{{ e_relay|escape }}
+{% endif -%}
+{% endfor -%}
+</pre></dd>
+
+<dt>Alleged Family Members</dt>
+<dd>
+{% if relay['alleged_family'] -%}
+<pre class="pre-scrollable">{% for a_relay in relay['alleged_family'] -%}
+{% if relay['alleged_family']|length > 1 -%}
+<a href="{{ a_relay|escape }}.html">{{ a_relay|escape }}</a>
+{% else -%}
+{{ a_relay|escape }}
+{% endif -%}
+{% endfor -%}
+{% else -%}
+<pre class="pre-scrollable">none
+{% endif -%}
+</pre></dd>
+</dl>
</div>
+<div class="col-md-6">
+<dl>
+<dt>Fingerprint</dt>
+<dd><pre>{{ relay['fingerprint']|escape }}</pre></dd>
+
+<dt>Flags</dt>
+<dd>
+{% for flag in relay['flags'] -%}
+{% if flag != 'StaleDesc' -%}
+<a href="{{ path_prefix }}flag/{{ flag.lower()|escape }}"><img src="{{
+path_prefix}}static/images/flags/{{ flag.lower()|escape }}.png" title="{{
+flag|escape }}" alt="{{ flag|escape }}"></a> {{ flag|escape }}
+{% endif -%}
+{% endfor -%}
+</dd>
+
+<dt>Host Name</dt>
+<dd>
+{% if relay['verified_host_names'] -%}
+<pre class="verified-hostname" title="verified hostname">{{
+relay['verified_host_names']|join('\n')|escape }}</pre>
+{% elif relay['unverified_host_names'] -%}
+<pre class="unverified-hostname" title="unverified hostname">{{
+relay['unverified_host_names']|join('\n')|escape }}</pre>
+{% else -%}
+<pre>none</pre>
+{% endif -%}
+
+<dt>Country</dt>
+<dd>
+{% if relay['country'] -%}
+<a href="{{ path_prefix }}country/{{ relay['country']|escape }}/"><img src="{{
+path_prefix }}static/images/cc/{{ relay['country']|escape }}.png" title="{{
+relay['country_name']|escape }}" alt="{{ relay['country_name']|escape
+}}"></a> {{ relay['country_name']|escape }}
+{% else -%}
+unknown
+{% endif -%}
+</dd>
+
+<dt>AS Number</dt>
+<dd>
+{% if relay['as'] -%}
+<a href='{{ path_prefix }}as/{{ relay['as']|escape }}'>{{ relay['as']|escape
+}}</a>
+{% else -%}
+unknown
+{% endif -%}
+
+<dt>AS Name</dt>
+<dd>
+{% if relay['as_name'] -%}
+{{ relay['as_name']|escape }} (<a href='https://bgp.he.net/{{ relay['as']|escape
+}}'>BGP</a>)
+{% else -%}
+unknown
+{% endif -%}
+
+<dt>First Seen</dt>
+<dd><a href="{{ path_prefix }}first_seen/{{ relay['first_seen'].split(' ',
+1)[0]|escape }}">{{ relay['first_seen']|escape }}</a></dd>
+
+<dt>Last Restarted</dt>
+<dd>{{ relay['last_restarted']|escape }}</dd>
+
+<dt>Consensus Weight</dt>
+<dd>{{ relay['consensus_weight_fraction']|escape }} ({{
+relay['consensus_weight']|escape }})</dd>
+
+<dt>Platform</dt>
+<dd>
+<a href='{{ path_prefix}}platform/{{ relay['platform']|escape }}'>{{
+relay['platform'] }}</a>
+</dd>
+
+</dl>
</div>
-{% endblock %}
+</div>
+</div>
+{% endblock -%}
diff --git a/allium/templates/relay-list.html b/allium/templates/relay-list.html
index dca3d9a..d312af9 100644
--- a/allium/templates/relay-list.html
+++ b/allium/templates/relay-list.html
@@ -1,97 +1,126 @@
-{% extends "skeleton.html" %}
-{% block title %}Tor Relays{% endblock %}
-{% block body %}
-<h2>{% block header %}{% endblock %}</h2>
-<p>{% block description %}{% endblock %}</p>
+{% extends "skeleton.html" -%}
+{% block title -%}Tor Relays{% endblock -%}
+{% block body -%}
+<h2>{% block header -%}{% endblock -%}</h2>
+<p>{% block description -%}{% endblock -%}</p>
<table class="table table-condensed">
- <tr>
- <th></th>
- <th>Nickname</th>
- <th></th>
- <th>Bandwidth</th>
- <th class="visible-md visible-lg">IP Address</th>
- <th>AS Number</th>
- <th>AS Name</th>
- <th>Country</th>
- <th>Platform</th>
- <th>Flags</th>
- <th class="visible-md visible-lg">First Seen</th>
- </tr>
- <tbody>
- {% if is_index %}{% set relay_list = relays.json['relay_subset'][:500] %}
- {% else %}{% set relay_list = relays.json['relay_subset'] %}{% endif %}
- {% for relay in relay_list %}
- <tr>
- {% if relay['observed_bandwidth'] > 1000000 %}
- {% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth'] / 1000000)|round(2, 'common'), 'MB/s') %}
- {% else %}
- {% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth'] / 1000)|round(2, 'common'), 'KB/s') %}{% endif %}
+<tr>
+<th></th>
+<th>Nickname</th>
+<th></th>
+<th>Bandwidth</th>
+<th class="visible-md visible-lg">IP Address</th>
+<th>AS Number</th>
+<th>AS Name</th>
+<th>Country</th>
+<th>Platform</th>
+<th>Flags</th>
+<th class="visible-md visible-lg">First Seen</th>
+</tr>
+<tbody>
+{% if is_index -%}{% set relay_list = relays.json['relay_subset'][:500] -%}
+{% else -%}{% set relay_list = relays.json['relay_subset'] -%}{% endif -%}
+{% for relay in relay_list -%}
+<tr>
+{% if relay['observed_bandwidth'] > 1000000 -%}
+{% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth']
+/ 1000000)|round(2, 'common'), 'MB/s') -%}
+{% else -%}
+{% set obs_bandwidth = '%s %s'|format((relay['observed_bandwidth'] / 1000)|
+round(2, 'common'), 'KB/s') -%}{% endif -%}
- {% if relay['running'] %}
- <td><span class="circle circle-online" title="This relay is online"></span></td>
- {% else %}
- <td><span class="circle circle-offline" title="This relay is offline"></span></td>
- {% endif %}
+{% if relay['running'] -%}
+<td><span class="circle circle-online" title="This relay is online"></span></td>
+{% else -%}
+<td><span class="circle circle-offline" title="This relay is offline"></span>
+</td>
+{% endif -%}
- {% if relay['effective_family']|length > 1 %}
- <td title="{{ relay['nickname']|escape }}"><a href="{{ path_prefix }}relay/{{ relay['fingerprint']|escape }}.html">{{ relay['nickname']|truncate(10)|escape }}</a> (<a href="{{ path_prefix }}family/{{ relay['fingerprint']|escape }}/">{{ relay['effective_family']|length }}</a>)</td>
- {% else %}
- <td title="{{ relay['nickname']|escape }}"><a href="{{ path_prefix}}relay/{{ relay['fingerprint']|escape }}.html">{{ relay['nickname']|truncate(15)|escape }}</a></td>
- {% endif %}
+{% if relay['effective_family']|length > 1 -%}
+<td title="{{ relay['nickname']|escape }}"><a href="{{ path_prefix }}relay/{{
+relay['fingerprint']|escape }}.html">{{ relay['nickname']|truncate(10)|escape
+}}</a> (<a href="{{ path_prefix }}family/{{ relay['fingerprint']|escape }}/">{{
+relay['effective_family']| length }}</a>)</td>
+{% else -%}
+<td title="{{ relay['nickname']|escape }}"><a href="{{ path_prefix}}relay/{{
+relay['fingerprint']|escape }}.html">{{ relay['nickname']|truncate(15)|escape
+}}</a></td>
+{% endif -%}
- {% if key != 'contact' %}
- {% if relay['contact'] %}
- <td><a href="{{ path_prefix }}contact/{{ relay['contact']|hash }}/" title="{{ relay['contact']|escape }}">&#9993;</a></td>
- {% else %}
- <td title="none">&#9993;</td>
- {% endif %}
- {% else %}
- <td title="{{ relay['contact']|escape }}">&#9993;</td>
- {% endif %}
+{% if key != 'contact' -%}
+{% if relay['contact'] -%}
+<td><a href="{{ path_prefix }}contact/{{ relay['contact']|hash }}/" title="{{
+relay['contact']|escape }}">&#9993;</a></td>
+{% else -%}
+<td title="none">&#9993;</td>
+{% endif -%}
+{% else -%}
+<td title="{{ relay['contact']|escape }}">&#9993;</td>
+{% endif -%}
- <td>{{ obs_bandwidth }}</td>
+<td>{{ obs_bandwidth }}</td>
- <td class="visible-md visible-lg"><a href="https://bgp.he.net/ip/{{ relay['or_addresses'][0].split(':', 1)[0]|escape }}">{{ relay['or_addresses'][0].split(':', 1)[0]|escape }}</a></td>
+<td class="visible-md visible-lg"><a href="https://bgp.he.net/ip/{{
+relay['or_addresses'][0].split(':', 1)[0]|escape }}">{{
+relay['or_addresses'][0].split(':', 1)[0]|escape }}</a></td>
- {% if relay['as'] %}{% if key != 'as' %}
- <td><a href="{{ path_prefix }}as/{{ relay['as']|escape }}/">{{ relay['as']|escape }}</a></td>
- {% else %}
- <td>{{ relay['as']|escape }}</td>
- {% endif %}
- {% else %}
- <td>Unknown</td>
- {% endif %}
+{% if relay['as'] -%}
+{% if key != 'as' -%}
+<td><a href="{{ path_prefix }}as/{{ relay['as']|escape }}/">{{
+relay['as']|escape }}</a></td>
+{% else -%}
+<td>{{ relay['as']|escape }}</td>
+{% endif -%}
+{% else -%}
+<td>Unknown</td>
+{% endif -%}
- {% if relay['as_name'] %}
- <td><a href="https://bgp.he.net/{{ relay['as']|escape }}" title="{{ relay['as_name']|escape }}">{{ relay['as_name']|escape|truncate(length=20) }}</a></td>
- {% else %}
- <td>Unknown</td>
- {% endif %}
+{% if relay['as_name'] -%}
+<td><a href="https://bgp.he.net/{{ relay['as']|escape }}" title="{{
+relay['as_name']|escape }}">{{
+relay['as_name']|escape|truncate(length=20) }}</a></td>
+{% else -%}
+<td>Unknown</td>
+{% endif -%}
- {% if relay['country'] %}{% if key != 'country' %}
- <td><a href="{{ path_prefix }}country/{{ relay['country']|escape }}/"><img src="{{ path_prefix }}static/images/cc/{{ relay['country']|escape }}.png" title="{{ relay['country_name']|escape }}" alt="{{ relay['country_name']|escape }}"></a></td>
- {% else %}
- <td><img src="{{ path_prefix }}static/images/cc/{{ relay['country']|escape }}.png" title="{{ relay['country_name']|escape }}" alt="{{ relay['country_name']|escape }}"></td>
- {% endif %}
- {% else %}
- <td>X</td>
- {% endif %}
+{% if relay['country'] -%}
+{% if key != 'country' -%}
+<td><a href="{{ path_prefix }}country/{{ relay['country']|escape }}/"><img
+src="{{ path_prefix }}static/images/cc/{{ relay['country']|escape
+}}.png" title="{{ relay['country_name']|escape }}" alt="{{
+relay['country_name']|escape }}"></a></td>
+{% else -%}
+<td><img src="{{ path_prefix }}static/images/cc/{{ relay['country']|escape
+}}.png" title="{{ relay['country_name']|escape }}" alt="{{
+relay['country_name']|escape }}"></td>
+{% endif -%}
+{% else -%}
+<td>X</td>
+{% endif -%}
- {% if key != 'platform' %}
- <td><a href="{{ path_prefix }}platform/{{ relay['platform']|escape }}/">{{ relay['platform']|truncate(length=10)|escape }}</a></td>
- {% else %}
- <td>{{ relay['platform']|truncate(length=10)|escape }}</td>
- {% endif %}
+{% if key != 'platform' -%}
+<td><a href="{{ path_prefix }}platform/{{ relay['platform']|escape }}/">{{
+relay['platform']|truncate(length=10)|escape }}</a></td>
+{% else -%}
+<td>{{ relay['platform']|truncate(length=10)|escape }}</td>
+{% endif -%}
- <td>{% for flag in relay['flags'] %}{% if flag != 'StaleDesc' %}<a href="{{ path_prefix }}flag/{{ flag.lower()|escape }}"><img src="{{ path_prefix}}static/images/flags/{{ flag.lower()|escape }}.png" title="{{ flag|escape }}" alt="{{ flag|escape }}"></a> {% endif %}{% endfor %}</td>
+<td>{% for flag in relay['flags'] -%}{% if flag != 'StaleDesc' -%}<a href="{{
+path_prefix }}flag/{{ flag.lower()|escape }}"><img src="{{
+path_prefix}}static/images/flags/{{ flag.lower()|escape }}.png"
+title="{{ flag|escape }}" alt="{{ flag|escape }}"></a> {% endif -%}{% endfor
+-%}</td>
- {% if key != 'first_seen' %}
- <td class="visible-md visible-lg"><a href="{{ path_prefix }}first_seen/{{ relay['first_seen'].split(' ', 1)[0]|escape }}">{{ relay['first_seen'].split(' ', 1)[0]|escape }}</a></td>
- {% else %}
- <td class="visible-md visible-lg">{{ relay['first_seen'].split(' ', 1)[0]|escape }}</td>
- {% endif %}
- </tr>
- {% endfor %}
- </tbody>
+{% if key != 'first_seen' -%}
+<td class="visible-md visible-lg"><a href="{{ path_prefix }}first_seen/{{
+relay['first_seen'].split(' ', 1)[0]|escape }}">{{
+relay['first_seen'].split(' ', 1)[0]|escape }}</a></td>
+{% else -%}
+<td class="visible-md visible-lg">{{ relay['first_seen'].split(' ', 1)[0]|escape
+}}</td>
+{% endif -%}
+</tr>
+{% endfor -%}
+</tbody>
</table>
-{% endblock %}
+{% endblock -%}
diff --git a/allium/templates/skeleton.html b/allium/templates/skeleton.html
index 65b5d3c..d240916 100644
--- a/allium/templates/skeleton.html
+++ b/allium/templates/skeleton.html
@@ -3,7 +3,8 @@
<html lang="en">
<head>
<title>{% block title %}{% endblock %}</title>
- <meta name="description" content="Javascript-free Tor metrics generated from an hourly API request.">
+ <meta name="description" content="Javascript-free Tor metrics generated from
+ an hourly API request.">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{{ path_prefix }}static/css/bootstrap.min.css">