aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--allium/templates/relay-info.html414
-rw-r--r--allium/templates/relay-list.html314
2 files changed, 364 insertions, 364 deletions
diff --git a/allium/templates/relay-info.html b/allium/templates/relay-info.html
index c494a53..d8ee3be 100644
--- a/allium/templates/relay-info.html
+++ b/allium/templates/relay-info.html
@@ -1,129 +1,129 @@
{% extends "skeleton.html" -%}
{% block title -%}
- Tor Relays :: {{ relay['nickname'] }}
+ 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'] -%}
+<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_md5'] }}">{{
- relay['contact']|escape }}</a>
- </dd>
- {% else -%}
- <dd>
- <a href="{{ path_prefix }}contact/{{ relay['contact_md5'] }}">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 -%}
+</dd>
+<dt>
+Contact
+</dt>
+{% if relay['contact'] -%}
+<dd>
+<a href="{{ path_prefix }}contact/{{ relay['contact_md5'] }}/">{{
+relay['contact']|escape }}</a>
+</dd>
+{% else -%}
+<dd>
+<a href="{{ path_prefix }}contact/{{ relay['contact_md5'] }}">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 -%}
+{% 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'] -%}
+{% 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'] -%}
+</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 -%}
@@ -131,13 +131,13 @@
{% 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'] -%}
+</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 -%}
@@ -158,95 +158,95 @@ 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">{{
+</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">{{
+{% 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.tools/{{ 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>
- </div>
- {% endblock -%}
+{% 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.tools/{{ 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>
+</div>
+{% endblock -%}
diff --git a/allium/templates/relay-list.html b/allium/templates/relay-list.html
index 6c25cef..cc992c1 100644
--- a/allium/templates/relay-list.html
+++ b/allium/templates/relay-list.html
@@ -3,160 +3,160 @@
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>Contact</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 class="visible-md visible-lg">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['effective_family']|length > 1 -%}
- <td title="{{ relay['nickname']|escape }}">
- <a href="{{ path_prefix }}relay/{{ relay['fingerprint']|escape }}.html">{{ relay['nickname']|truncate(8)|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(10)|escape
- }}</a>
- </td>
- {% endif -%}
- {% if key != 'contact' -%}
- {% if relay['contact'] -%}
- <td>
- <code><a href="{{ path_prefix }}contact/{{ relay['contact_md5'] }}/"
- title="{{ relay['contact']|escape }}">{{ relay['contact_md5'][0:8]
- }}</a></code>
- </td>
- {% else -%}
- <td title="none">
- <code>none</code>
- </td>
- {% endif -%}
- {% else -%}
- <td title="{{ relay['contact']|escape }}">
- <code>{{ relay['contact_md5'][0:8]
- }}</code>
- </td>
- {% endif -%}
- <td>{{ obs_bandwidth }}</td>
- <td class="visible-md visible-lg">
- <a href="https://bgp.tools/prefix/{{ 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_name'] -%}
- <td>
- <a href="https://bgp.tools/{{ 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 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 class="visible-md visible-lg">
- {% 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>
- </table>
- {% endblock -%}
+<h2>
+{% block header -%}
+{% endblock -%}
+</h2>
+<p>
+{% block description -%}
+{% endblock -%}
+</p>
+<table class="table table-condensed">
+<tr>
+ <th></th>
+ <th>Nickname</th>
+ <th>Contact</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 class="visible-md visible-lg">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['effective_family']|length > 1 -%}
+ <td title="{{ relay['nickname']|escape }}">
+ <a href="{{ path_prefix }}relay/{{ relay['fingerprint']|escape }}.html">{{ relay['nickname']|truncate(8)|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(10)|escape
+ }}</a>
+ </td>
+ {% endif -%}
+ {% if key != 'contact' -%}
+ {% if relay['contact'] -%}
+ <td>
+ <code><a href="{{ path_prefix }}contact/{{ relay['contact_md5'] }}/"
+title="{{ relay['contact']|escape }}">{{ relay['contact_md5'][0:8]
+ }}</a></code>
+ </td>
+ {% else -%}
+ <td title="none">
+ <code>none</code>
+ </td>
+ {% endif -%}
+ {% else -%}
+ <td title="{{ relay['contact']|escape }}">
+ <code>{{ relay['contact_md5'][0:8]
+ }}</code>
+ </td>
+ {% endif -%}
+ <td>{{ obs_bandwidth }}</td>
+ <td class="visible-md visible-lg">
+ <a href="https://bgp.tools/prefix/{{ 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_name'] -%}
+ <td>
+ <a href="https://bgp.tools/{{ 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 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 class="visible-md visible-lg">
+ {% 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>
+</table>
+{% endblock -%}