Details for: <%= relay.get('nickname') %> <% if (relay.get('running') === false) { %> <% } else if (relay.get('overload_general_timestamp') != null) { %> <% } 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('overload_general_timestamp') != null) {%>
This relay is overloaded since <%= relay.get('overload_general_datetime') %>. Please check the following support article to find out why this is happening.
<% } %> <% if (relay.get('version_status') === 'obsolete' && relay.get('version_consistent') == true) { %>
This relay is running a version of Tor that is too old and may be missing important security fixes. If this is your relay, you should update it as soon as possible.
<% } %>

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('verified_host_names') !== null) { %><% _.each(relay.get('verified_host_names'), function(host_name) { %><%= host_name %><% }); } %><% if (relay.get('unverified_host_names') !== null) { %><% _.each(relay.get('unverified_host_names'), function(host_name) { %><%= host_name %>*<% }); } %><% if(relay.get('verified_host_names') == relay.get('unverified_host_names')) { %>none<% } %>
Country
<% if (relay.get('country')) { %> <%= relay.get('countryname') %> ()<% } else { %>Unknown<% } %>
AS Number
<% if (relay.get('as') !== null) { %><%= _.escape(relay.get('as')) %><% } 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
6 Months graph
Save Graph
6 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.

Onionoo version: <%= relay.get('onionooVersion') %>/<%= relay.get('buildRevision') %>