Details for: <%= relay.get('nickname') %> <% if (relay.get('running') === false) { %> <% } else { %> <% } %>

<% if (relay.get('new_relay') === true) {%>
This relay appears to be less than 2 weeks old. This blog post explains the lifecycle of a new relay, and why it will not be immediately fully used to capacity.
<% } %> <% if (relay.get('recommended_version') === false && relay.get('version_consistent') == true) { %>
This relay is running a version of Tor that is not recommended. It is most likely too old and may be missing important security fixes. If this is the case, and this is your relay, you should update it as soon as possible. Development versions (versions that are too new) will also trigger this warning message (see bug #24256).
<% } %>

Configuration

Nickname
<%= _.escape(relay.get('nickname')) %>
OR Addresses ">
<% _.each(relay.get('or_addresses'),
          function(or_address) { %><%= $.trim(or_address) %>
<% }); %>
<% if (relay.get('unreachable_or_addresses').length > 0) { %>
Unreachable OR Addresses
<% _.each(relay.get('unreachable_or_addresses'),
          function(or_address) { %><%= $.trim(or_address) %>
<% }); %>
<% } %>
Contact
<%= _.escape( relay.get('contact')!='undefined' ? relay.get('contact') : 'none' ) %>
Dir Address
<%= relay.get('dir_address') ? relay.get('dir_address') : 'none' %>
Exit Addresses
<% if (relay.get('exit_addresses')) { %> <% _.each(relay.get('exit_addresses'), function(exit_address) { %> <%= exit_address %>
<% }); %> <% } else { %> none <% } %>
Advertised Bandwidth
<%= relay.get('bandwidth_hr') %>
IPv4 Exit Policy Summary
<% if ('accept' in relay.get('exit_policy_summary')) { %>
accept<% _.each(relay.get('exit_policy_summary')['accept'],
          function(ports) { %>
<%= $.trim(ports) %><% });} %>
<% if ('reject' in relay.get('exit_policy_summary')) { %>
reject<% _.each(relay.get('exit_policy_summary')['reject'],
          function(ports) { %>
<%= $.trim(ports) %><% });} %>
IPv6 Exit Policy Summary
<% if (relay.get('exit_policy_v6_summary') && ('accept' in relay.get('exit_policy_v6_summary'))) { %>
accept<% _.each(relay.get('exit_policy_v6_summary')['accept'],
          function(ports) { %>
<%= $.trim(ports) %><% });} %>
<% if (relay.get('exit_policy_v6_summary') && ('reject' in relay.get('exit_policy_v6_summary'))) { %>
reject<% _.each(relay.get('exit_policy_v6_summary')['reject'],
          function(ports) { %>
<%= $.trim(ports) %><% });} %>
<% if (relay.get('exit_policy_v6_summary') == null) { %>
reject
1-65535
<% } %>
Exit Policy
<% _.each(relay.get('exit_policy'), function(line) { %>
<%= $.trim(line) %><% }); %>
Effective Family Members <% if (relay.get('effective_family') !== null) { %><% } %>
<% if (relay.get('effective_family') !== null) { %><% _.each(relay.get('effective_family'), function(member) { %><% var valid = member.match(RegExp("^[A-F0-9]{40}$")); %>
<% if (valid) { %><% } %><%= member %><% if (valid) { %><% }}); %>
<% } else { %>none<% } %>
Alleged Family Members
<% if (relay.get('alleged_family') !== null) { %><% _.each(relay.get('alleged_family'), function(member) { %><% var valid = member.match(RegExp("^[A-F0-9]{40}$")); %>
<% if (valid) { %><% } %><%= member %><% if (valid) { %><% }}); %>
<% } else { %>none<% } %>
<% if (relay.get('running') === true) { %>

Properties

<% } else { %>

Last Known Properties

<% } %>
Fingerprint
<%= relay.get('fingerprint') %>
<% if (relay.get('running') === true) { %>
Uptime
<%= relay.get('uptime_hrfull') %>
<% } else { %>
Downtime
<%= relay.get('downtime') %>
Last Seen
<%= relay.get('last_seen') %>
<% } %>
Flags
<% _.each(relay.get('flags'), function(flag) { %> <%= flag[0] %> <% }); %>
Additional Flags
<% var propertyCount = 0; %> <% _.each(relay.get('additional_flags'), function(flag) { propertyCount++; %> <%= flag[0] %> <% }); %> <%= propertyCount==0 ? 'none' : '' %>
Host Name
<% if (relay.get('host_name')) { %><%= relay.get('host_name') %><% } else { %>No PTR record found<% } %>
Country
<% if (relay.get('country')) { %> <%= relay.get('countryname') %><% } else { %>Unknown<% } %>
AS Number
<% if (relay.get('as_number') !== null) { %><%= _.escape(relay.get('as_number')) %><% } else { %>unknown<% }; %>
AS Name
<%= relay.get('as_name') ? _.escape(relay.get('as_name')) : "unknown" %>
First Seen
<%= relay.get('first_seen') %> (<%= relay.get('age') %>)
Last Restarted
<%= relay.get('last_restarted') %>
Consensus Weight
<%= relay.get('consensus_weight') %>
Platform
<%= _.escape(relay.get('platform')) %><% if (!relay.get('version_consistent')) { %> (version is <%= _.escape(relay.get('version')) %> in consensus)<% } %>

History

1 Month graph
Save Graph
1 Month graph
Save Graph
3 Months graph
Save Graph
3 Months graph
Save Graph
1 Year graph
Save Graph
1 Year graph
Save Graph
5 Years graph
Save Graph
5 Years graph
Save Graph
<% if (relay.get('dir_address')) { %>

Advanced

Latest server descriptor Latest extra-info descriptor

<% } %>

Information for relays was published: <%= relay.get('relaysPublished') %> UTC.