tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
July 2014
- 25 participants
- 1533 discussions

[atlas/master] Add support for handling bridges in addition to relays
by phw@torproject.org 21 Jul '14
by phw@torproject.org 21 Jul '14
21 Jul '14
commit 89e0e18e6f1482796abfa18ebf6f2be8b2cfeff9
Author: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
Date: Thu Jul 3 01:06:43 2014 +0400
Add support for handling bridges in addition to relays
Onionoo provides information about bridges in nearly the same way as it
does for relays. So this commit extends relay model with two more
properties and adds bridges to the list of relays for processing.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
---
js/collections/results.js | 7 ++++++-
js/models/graph.js | 4 ++++
js/models/relay.js | 20 +++++++++++++++++++-
js/views/details/main.js | 40 +++++++++++++++++++++-------------------
4 files changed, 50 insertions(+), 21 deletions(-)
diff --git a/js/collections/results.js b/js/collections/results.js
index a588272..e618614 100644
--- a/js/collections/results.js
+++ b/js/collections/results.js
@@ -26,6 +26,11 @@ define([
crelay.fingerprint = relay.f;
relays.push(crelay);
});
+ _.each(response.bridges, function(relay, resultsC) {
+ crelay = new relayModel;
+ crelay.fingerprint = relay.h;
+ relays.push(crelay);
+ });
if (relays.length == 0) {
error(0);
console.log('error');
@@ -37,7 +42,7 @@ define([
_.each(relays, function(relay) {
relay.lookup({
success: function(){
- if (relays.length == response.relays.length) {
+ if (relays.length == response.relays.length + response.bridges.length) {
collection[options.add ? 'add' : 'reset'](relays, options);
success(collection, relays);
return relays;
diff --git a/js/models/graph.js b/js/models/graph.js
index ed2601c..33afea9 100644
--- a/js/models/graph.js
+++ b/js/models/graph.js
@@ -98,6 +98,8 @@ define([
parse_bw_data: function(data) {
var model = this;
var relay = data.relays[0];
+ if (!relay)
+ relay = data.bridges[0];
this.fingerprint = relay.fingerprint;
// Parse the read and write history of the relay
var write_history = parseHistory(relay.write_history, model, relay, 'write');
@@ -125,6 +127,8 @@ define([
parse_weights_data: function(data) {
var model = this;
var relay = data.relays[0];
+ if (!relay)
+ relay = data.bridges[0];
this.fingerprint = relay.fingerprint;
if ("advertised_bandwidth_fraction" in relay) {
diff --git a/js/models/relay.js b/js/models/relay.js
index d31f2ad..1cf7783 100644
--- a/js/models/relay.js
+++ b/js/models/relay.js
@@ -132,8 +132,15 @@ define([
var model = this;
console.log("doing query..");
$.getJSON(this.baseurl+'/details?lookup='+this.fingerprint, function(data) {
+ var relay = null;
if (data.relays.length >= 1) {
- var relay = data.relays[0];
+ relay = data.relays[0];
+ relay.is_bridge = false;
+ } else if (data.bridges.length >= 1) {
+ relay = data.bridges[0];
+ relay.is_bridge = true;
+ }
+ if (relay) {
//console.log(data);
relay.contact = relay.contact ? relay.contact : 'undefined';
relay.platform = relay.platform ? relay.platform : null;
@@ -148,6 +155,15 @@ define([
relay.bandwidth = relay.advertised_bandwidth ? relay.advertised_bandwidth : null;
relay.bandwidth_hr = relay.advertised_bandwidth ? hrBandwidth(relay.advertised_bandwidth) : null;
relay.family = relay.family ? relay.family : null;
+ if (relay.is_bridge) {
+ var new_addresses = [];
+ _.each(relay.or_addresses, function(or_addr) {
+ var addr = or_addr[0] == '[' ? "IPv6" : "IPv4";
+ addr += or_addr.slice(or_addr.lastIndexOf(":"));
+ new_addresses.push(addr);
+ });
+ relay.or_addresses = new_addresses;
+ }
relay.or_address = relay.or_addresses ? relay.or_addresses[0].split(":")[0] : null;
relay.or_port = relay.or_addresses ? relay.or_addresses[0].split(":")[1] : 0;
relay.dir_port = relay.dir_address ? relay.dir_address.split(":")[1] : 0;
@@ -163,6 +179,8 @@ define([
relay.downtime = relay.last_seen ? model.parsedate(relay.last_seen).hrfull : null;
relay.as_no = relay.as_number ? relay.as_number : null;
relay.as_name = relay.as_name ? relay.as_name : null;
+ relay.pool_assignment = relay.pool_assignment ? relay.pool_assignment : null;
+ relay.fingerprint = relay.hashed_fingerprint ? relay.hashed_fingerprint : relay.fingerprint;
model.set({badexit: false});
var size = ['16x16', '14x16', '8x16'];
relay.flags = model.parseflags(relay.flags, size);
diff --git a/js/views/details/main.js b/js/views/details/main.js
index 36ba13d..1a0fbb2 100644
--- a/js/views/details/main.js
+++ b/js/views/details/main.js
@@ -195,25 +195,27 @@ define([
}
});
- this.graph.lookup_weights(this.model.fingerprint, {
- success: function() {
- graph.parse_weights_data(graph.data);
- graphs = ['weights_week', 'weights_month',
- 'weights_months', 'weights_year', 'weights_years'];
- _.each(graphs, function(g) {
- var data = [graph.get(g).advbw, graph.get(g).cw,
- graph.get(g).guard, graph.get(g).exit];
- var labels = ["advertised bandwidth fraction",
- "consensus weight fraction",
- "guard probability",
- "exit probability"];
- var legendPos = [[3, 0], [181, 0], [341, 0], [450, 0]];
- var colors = ["#edc240", "#afd8f8",
- "#cb4b4b", "#4da74d"];
- plot(g, data, labels, legendPos, colors, ".4%", ".6%");
- });
- }
- });
+ if (!this.model.get('is_bridge')) {
+ this.graph.lookup_weights(this.model.fingerprint, {
+ success: function() {
+ graph.parse_weights_data(graph.data);
+ graphs = ['weights_week', 'weights_month',
+ 'weights_months', 'weights_year', 'weights_years'];
+ _.each(graphs, function(g) {
+ var data = [graph.get(g).advbw, graph.get(g).cw,
+ graph.get(g).guard, graph.get(g).exit];
+ var labels = ["advertised bandwidth fraction",
+ "consensus weight fraction",
+ "guard probability",
+ "exit probability"];
+ var legendPos = [[3, 0], [181, 0], [341, 0], [450, 0]];
+ var colors = ["#edc240", "#afd8f8",
+ "#cb4b4b", "#4da74d"];
+ plot(g, data, labels, legendPos, colors, ".4%", ".6%");
+ });
+ }
+ });
+ };
$("#loading").hide();
$(".flag .tooltip").hide();
1
0

21 Jul '14
commit a5df04b8c8f78e0bc1dae654e4fb6bdd7e8d02d9
Author: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
Date: Thu Jul 3 01:10:52 2014 +0400
Split main details template into three templates
Bridges have fewer fields compared to plain relays. It does not make
sense to have several if(!bridge) constructions in the main template, so
rename main.html to router.html and add a special bridge.html template.
As we are at it, split away error handling from template - it is now
done by a separate error.html.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
---
js/views/details/main.js | 17 ++-
templates/details/bridge.html | 184 +++++++++++++++++++++++
templates/details/error.html | 4 +
templates/details/main.html | 323 -----------------------------------------
templates/details/router.html | 314 +++++++++++++++++++++++++++++++++++++++
5 files changed, 515 insertions(+), 327 deletions(-)
diff --git a/js/views/details/main.js b/js/views/details/main.js
index 1a0fbb2..ff8ce8d 100644
--- a/js/views/details/main.js
+++ b/js/views/details/main.js
@@ -6,13 +6,16 @@ define([
'backbone',
'models/relay',
'models/graph',
- 'text!templates/details/main.html',
+ 'text!templates/details/router.html',
+ 'text!templates/details/bridge.html',
+ 'text!templates/details/error.html',
'tooltip',
'popover',
'd3js',
'collapse',
'helpers'
-], function($, _, Backbone, relayModel, graphModel, mainDetailsTemplate){
+], function($, _, Backbone, relayModel, graphModel,
+ routerDetailsTemplate, bridgeDetailsTemplate, errorDetailsTemplate){
var mainDetailsView = Backbone.View.extend({
el: $("#content"),
initialize: function() {
@@ -175,7 +178,13 @@ define([
render: function() {
var data = {relay: this.model};
//console.log(data);
- var compiledTemplate = _.template(mainDetailsTemplate, data);
+ var compiledTemplate;
+ if (!this.model)
+ compiledTemplate = _.template(errorDetailsTemplate, data);
+ else if (this.model.get('is_bridge'))
+ compiledTemplate = _.template(bridgeDetailsTemplate, data);
+ else
+ compiledTemplate = _.template(routerDetailsTemplate, data);
document.title = "Atlas: " + this.model.get('nickname');
this.el.html(compiledTemplate);
var graph = this.graph;
@@ -230,7 +239,7 @@ define([
});
},
error: function() {
- var compiledTemplate = _.template(mainDetailsTemplate, {relay: null});
+ var compiledTemplate = _.template(errorDetailsTemplate, {relay: null});
$("#loading").hide();
this.el.html(compiledTemplate);
}
diff --git a/templates/details/bridge.html b/templates/details/bridge.html
new file mode 100644
index 0000000..c091363
--- /dev/null
+++ b/templates/details/bridge.html
@@ -0,0 +1,184 @@
+<h1>Details for: <span id="relay_name"><%= relay.get('nickname') %></span></h1>
+<!-- div class="subnav">
+ <ul class="nav nav-pills">
+ <li><a href="#general">General</a></li>
+ <li><a href="#graphs">Graphs</a></li>
+ <li><a href="#misc">Misc</a></li>
+ </ul>
+</div-->
+
+<h2>General <small>Overall information on the Tor bridge</small></h2>
+<hr/>
+
+<div class="row">
+ <div class="span4">
+ <h3>Configuration</h3>
+ <dl>
+ <dt><span class="tip" data-content="This is the nickname that the Tor bridge operator chose." data-original-title="Nickname">Nickname</span></dt>
+ <dd><%= _.escape(relay.get('nickname')) %></dd>
+
+ <dt><span class="tip" data-content="Ports (addresses are hidden) where the bridge listens for incoming connections from clients and other relays." data-original-title="Onion-routing addresses">OR Addresses</span></dt>
+ <dd><%= relay.get('or_addresses') %></dd>
+
+ <dt>
+ <span class="tip" data-content="Bandwidth that the bridge is willing and able to provide in bytes per second." data-original-title="Advertised bandwidth">Advertised Bandwidth</span>
+ </dt>
+ <dd><%= relay.get('bandwidth_hr') %></dd>
+ </dl>
+
+
+ </div>
+ <div class="span4">
+ <% if (relay.get('running') === true) { %>
+ <h3>Properties</h3>
+ <dl>
+ <% } else { %>
+ <h3>Last Known Properties</h3>
+ <dl>
+ <dt><span class="tip" data-content="Timestamp when the bridge was last seen in the consensus." data-original-title="Last seen">Last Seen</span></dt>
+ <dd><%= relay.get('last_seen') %></dd>
+ <% } %>
+
+ <dt><span class="tip" data-content="Hash of 20-byte unique identifier of the bridge." data-original-title="Hashed Fingerprint">Hashed Fingerprint</span></dt>
+ <dd><%= relay.get('fingerprint') %></dd>
+
+ <dt><span class="tip" data-content="Flags that the directory authorities assigned to this bridge." data-original-title="Bridge flags">Flags</span></dt>
+ <dd><% _.each(relay.get('flags'), function(flag) { %>
+ <img class="inline" src="img/flags/<%= flag[1] %>.png">
+ <span class="inline"><%= flag[0] %></span>
+ <% }); %>
+ </dd>
+
+ <dt><span class="tip" data-content="Date and time when the bridge was last (re-)started." data-original-title="Last restarted">Last Restarted</span></dt>
+ <dd><%= relay.get('last_restarted') %></dd>
+
+ <dt><span class="tip" data-content="What OS and Tor version the bridge is using" data-original-title="Platform">Platform</span></dt>
+ <dd><%= _.escape(relay.get('platform')) %></dd>
+
+ <dt><span class="tip" data-content="BridgeDB information assigned to the bridge." data-original-title="Pool Assignment">Pool Assignment</span></dt>
+ <dd><%= relay.get('pool_assignment') %></dd>
+
+ </dl>
+ </div>
+ <div class="span4">
+ <h3>Current Status</h3>
+ <dl>
+
+ <% if (relay.get('running') === false) { %>
+ <dt><span class="tip" data-content="The time since this bridge was last seen online." data-original-title="Downtime">Downtime</span></dt>
+ <dd><%= relay.get('downtime') %></dd>
+ <% } else {%>
+ <dt><span class="tip" data-content="The time since this bridge is online." data-original-title="Uptime">Uptime</span></dt>
+ <dd><%= relay.get('uptime_hrfull') %></dd>
+ <% } %>
+
+ <dt><span class="tip" data-content="Whether this bridge is listed in the current Tor directory or not." data-original-title="Running">Running</span></dt>
+ <dd><%= relay.get('running') %></dd>
+
+ </dl>
+ </div>
+</div>
+
+<div class="row">
+<h2>Graphs <small>Pretty graphs</small></h2>
+<hr/>
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_days" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>3 Days graph</h5>
+ <a id="save_bw_days" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div><div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+
+ <div id="bw_week" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Week graph</h5>
+ <a id="save_bw_week" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_month" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Month graph</h5>
+ <a id="save_bw_month" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div><div class="row">
+
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+
+ <div id="bw_months" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>3 Months graph</h5>
+ <a id="save_bw_months" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_year" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Year graph</h5>
+ <a id="save_bw_year" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+
+ </ul>
+</div><div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_years" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>5 Years graph</h5>
+ <a id="save_bw_years" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<!--
+<div class="row">
+<h2>Misc <small>unsorted other information</small></h2>
+<hr/>
+</div>
+-->
diff --git a/templates/details/error.html b/templates/details/error.html
new file mode 100644
index 0000000..537f9bd
--- /dev/null
+++ b/templates/details/error.html
@@ -0,0 +1,4 @@
+ <div class="alert">
+ <strong>No Results found!</strong><p>
+ No Tor relays or bridges matched your query :(</p>
+ </div>
diff --git a/templates/details/main.html b/templates/details/main.html
deleted file mode 100644
index 3d23a96..0000000
--- a/templates/details/main.html
+++ /dev/null
@@ -1,323 +0,0 @@
-<% if(relay == null) {%>
- <div class="alert">
- <strong>No Results found!</strong><p>
- No Tor relays matched your query :(</p>
- </div>
-<% } else { %>
-<h1>Details for: <span id="relay_name"><%= relay.get('nickname') %></span></h1>
-<!-- div class="subnav">
- <ul class="nav nav-pills">
- <li><a href="#general">General</a></li>
- <li><a href="#graphs">Graphs</a></li>
- <li><a href="#misc">Misc</a></li>
- </ul>
-</div-->
-
-<h2>General <small>Overall information on the Tor relay</small></h2>
-<hr/>
-
-<div class="row">
- <div class="span4">
- <h3>Configuration</h3>
- <dl>
- <dt><span class="tip" data-content="This is the nickname that the Tor relay operator chose." data-original-title="Nickname">Nickname</span></dt>
- <dd><%= _.escape(relay.get('nickname')) %></dd>
-
- <dt><span class="tip" data-content="Addresses and ports where the relay listens for incoming connections from clients and other relays." data-original-title="Onion-routing addresses">OR Addresses</span></dt>
- <dd><%= relay.get('or_addresses') %></dd>
-
- <dt><span class="tip" data-content="These are the contact details of the Tor relay operator" data-original-title="ContactInfo">Contact</span></dt>
- <dd><%= _.escape(relay.get('contact')) %></dd>
-
- <dt><span class="tip" data-content="Address and port where the relay listens for directory requests." data-original-title="Directory port">Dir Address</span></dt>
- <dd><%= relay.get('dir_address') %></dd>
-
- <dt>
- <span class="tip" data-content="Bandwidth that the relay is willing and able to provide in bytes per second." data-original-title="Advertised bandwidth">Advertised Bandwidth</span>
- </dt>
- <dd><span class="tip" data-content="Bandwidth rate: <%= relay.get('bandwidthr') %><br>Bandwidth burst: <%= relay.get('bandwidthb') %><br>Observed bandwidth: <%= relay.get('obandwidth') %>" data-original-title="Bandwidth values"><%= relay.get('bandwidth_hr') %></span></dd>
- <dt><span class="tip" data-content="Port summary of IPv4 exit connections that the relay is going to accept or reject." data-original-title="IPv4 exit policy summary">IPv4 Exit Policy Summary</span></dt>
- <dd>
- <% if ('accept' in relay.get('exit_policy_summary')) { %>
- <pre class="pre-scrollable">accept<% _.each(relay.get('exit_policy_summary')['accept'],
- function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
- <% if ('reject' in relay.get('exit_policy_summary')) { %>
- <pre class="pre-scrollable">reject<% _.each(relay.get('exit_policy_summary')['reject'],
- function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
- </dd>
- <dt><span class="tip" data-content="Port summary of IPv6 exit connections that the relay is going to accept or reject." data-original-title="IPv6 exit policy summary">IPv6 Exit Policy Summary</span></dt>
- <dd>
- <% if (relay.get('exit_policy_v6_summary') && ('accept' in relay.get('exit_policy_v6_summary'))) { %>
- <pre class="pre-scrollable">accept<% _.each(relay.get('exit_policy_v6_summary')['accept'],
- function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
- <% if (relay.get('exit_policy_v6_summary') && ('reject' in relay.get('exit_policy_v6_summary'))) { %>
- <pre class="pre-scrollable">reject<% _.each(relay.get('exit_policy_v6_summary')['reject'],
- function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
- </dd>
- <dt><span class="tip" data-content="Policy of exit connections that the relay is going to accept or reject." data-original-title="Exit policy">Exit Policy</span></dt>
- <dd>
- <pre class="pre-scrollable"><% _.each(relay.get('exit_policy'), function(line) { %>
-<%= $.trim(line) %><% }); %></pre>
- </dd>
- </dl>
-
-
- </div>
- <div class="span4">
- <% if (relay.get('running') === true) { %>
- <h3>Properties</h3>
- <dl>
- <% } else { %>
- <h3>Last Known Properties</h3>
- <dl>
- <dt><span class="tip" data-content="Timestamp when the relay was last seen in the consensus." data-original-title="Last seen">Last Seen</span></dt>
- <dd><%= relay.get('last_seen') %></dd>
- <% } %>
-
- <dt><span class="tip" data-content="20-byte unique identifier of the relay." data-original-title="Fingerprint">Fingerprint</span></dt>
- <dd><%= relay.get('fingerprint') %></dd>
-
- <dt><span class="tip" data-content="Flags that the directory authorities assigned to this relay." data-original-title="Relay flags">Flags</span></dt>
- <dd><% _.each(relay.get('flags'), function(flag) { %>
- <img class="inline" src="img/flags/<%= flag[1] %>.png">
- <span class="inline"><%= flag[0] %></span>
- <% }); %>
- </dd>
-
- <dt><span class="tip" data-content="Country as found in a GeoIP database by resolving the relay's first onion-routing address." data-original-title="Country">Country</span></dt>
- <dd><img class="inline country" title="<%= relay.get('countryname') %>" src="img/cc/<%= relay.get('country') %>.png"/> <%= relay.get('countryname') %></dd>
-
- <dt><span class="tip" data-content="Autonomous System Number" data-original-title="AS Number">AS Number</span></dt>
- <dd><%= _.escape(relay.get('as_no')) %></dd>
-
- <dt><span class="tip" data-content="Autonomous System Name" data-original-title="AS Name">AS Name</span></dt>
- <dd><%= _.escape(relay.get('as_name')) %></dd>
-
- <dt><span class="tip" data-content="Date and time when the relay was last (re-)started." data-original-title="Last restarted">Last Restarted</span></dt>
- <dd><%= relay.get('last_restarted') %></dd>
-
- <dt><span class"tip" data-content="Other family members of this relay." data-original-title="Family Members">Family Members</span></dt>
- <dd><pre><% _.each(relay.get('family'), function(member) { %><% var valid = member.match(RegExp("^\$[A-F0-9]{40}$")); %>
-<% if (valid) { %><a href="#details/<%= member.replace('$', '') %>"><% } %><%= member %><% if (valid) { %></a><% }}); %></pre></dd>
-
- <dt><span class="tip" data-content="Date and time when the relay last published a descriptor to the directory authorities." data-original-title="Descriptor published">Descriptor Published</span></dt>
- <dd><%= relay.get('desc_published') %></dd>
-
- <dt><span class="tip" data-content="What OS and Tor version the relay is using" data-original-title="Platform">Platform</span></dt>
- <dd><%= _.escape(relay.get('platform')) %></dd>
-
- <dt><span class="tip" data-content="Weight assigned to this relay by the directory authorities that clients use in their path selection algorithm. The unit is arbitrary; currently it's kilobytes per second, but that might change in the future." data-original-title="Consensus Weight">Consensus Weight</span></dt>
- <dd><%= relay.get('consensus_weight') %></dd>
-
- </dl>
- </div>
- <div class="span4">
- <h3>Current Status</h3>
- <dl>
-
- <% if (relay.get('running') === false) { %>
- <dt><span class="tip" data-content="The time since this relay was last seen online." data-original-title="Downtime">Downtime</span></dt>
- <dd><%= relay.get('downtime') %></dd>
- <% } else {%>
- <dt><span class="tip" data-content="The time since this relay is online." data-original-title="Uptime">Uptime</span></dt>
- <dd><%= relay.get('uptime_hrfull') %></dd>
- <% } %>
-
- <dt><span class="tip" data-content="Whether this relay is listed in the current Tor directory or not." data-original-title="Running">Running</span></dt>
- <dd><%= relay.get('running') %></dd>
-
- </dl>
- </div>
-</div>
-
-<div class="row">
-<h2>Graphs <small>Pretty graphs</small></h2>
-<hr/>
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="bw_days" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
- <div class="caption">
- <h5>3 Days graph</h5>
- <a id="save_bw_days" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div><div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
-
- <div id="bw_week" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
- <div class="caption">
- <h5>1 Week graph</h5>
- <a id="save_bw_week" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="bw_month" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
- <div class="caption">
- <h5>1 Month graph</h5>
- <a id="save_bw_month" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div><div class="row">
-
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
-
- <div id="bw_months" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
- <div class="caption">
- <h5>3 Months graph</h5>
- <a id="save_bw_months" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="bw_year" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
- <div class="caption">
- <h5>1 Year graph</h5>
- <a id="save_bw_year" href="">Save Graph</a>
- </div>
- </div>
- </li>
-
- </ul>
-</div><div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="bw_years" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
-
- <div class="caption">
- <h5>5 Years graph</h5>
- <a id="save_bw_years" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="weights_week" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
-
- <div class="caption">
- <h5>1 Week graph</h5>
- <a id="save_weights_week" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="weights_month" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
-
- <div class="caption">
- <h5>1 Month graph</h5>
- <a id="save_weights_month" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="weights_months" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
-
- <div class="caption">
- <h5>3 Months graph</h5>
- <a id="save_weights_months" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="weights_year" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
-
- <div class="caption">
- <h5>1 Year graph</h5>
- <a id="save_weights_year" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<div class="row">
- <ul class="thumbnails">
- <li class="span8">
- <div class="thumbnail">
- <div id="weights_years" class="graph">
- <img src="img/no-data-available.png" alt="">
- </div>
-
- <div class="caption">
- <h5>5 Years graph</h5>
- <a id="save_weights_years" href="">Save Graph</a>
- </div>
- </div>
- </li>
- </ul>
-</div>
-
-<!--
-<div class="row">
-<h2>Misc <small>unsorted other information</small></h2>
-<hr/>
-</div>
--->
-<% } %>
-
-
diff --git a/templates/details/router.html b/templates/details/router.html
new file mode 100644
index 0000000..8802255
--- /dev/null
+++ b/templates/details/router.html
@@ -0,0 +1,314 @@
+<h1>Details for: <span id="relay_name"><%= relay.get('nickname') %></span></h1>
+<!-- div class="subnav">
+ <ul class="nav nav-pills">
+ <li><a href="#general">General</a></li>
+ <li><a href="#graphs">Graphs</a></li>
+ <li><a href="#misc">Misc</a></li>
+ </ul>
+</div-->
+
+<h2>General <small>Overall information on the Tor relay</small></h2>
+<hr/>
+
+<div class="row">
+ <div class="span4">
+ <h3>Configuration</h3>
+ <dl>
+ <dt><span class="tip" data-content="This is the nickname that the Tor relay operator chose." data-original-title="Nickname">Nickname</span></dt>
+ <dd><%= _.escape(relay.get('nickname')) %></dd>
+
+ <dt><span class="tip" data-content="Addresses and ports where the relay listens for incoming connections from clients and other relays." data-original-title="Onion-routing addresses">OR Addresses</span></dt>
+ <dd><%= relay.get('or_addresses') %></dd>
+
+ <dt><span class="tip" data-content="These are the contact details of the Tor relay operator" data-original-title="ContactInfo">Contact</span></dt>
+ <dd><%= _.escape(relay.get('contact')) %></dd>
+
+ <dt><span class="tip" data-content="Address and port where the relay listens for directory requests." data-original-title="Directory port">Dir Address</span></dt>
+ <dd><%= relay.get('dir_address') %></dd>
+
+ <dt>
+ <span class="tip" data-content="Bandwidth that the relay is willing and able to provide in bytes per second." data-original-title="Advertised bandwidth">Advertised Bandwidth</span>
+ </dt>
+ <dd><span class="tip" data-content="Bandwidth rate: <%= relay.get('bandwidthr') %><br>Bandwidth burst: <%= relay.get('bandwidthb') %><br>Observed bandwidth: <%= relay.get('obandwidth') %>" data-original-title="Bandwidth values"><%= relay.get('bandwidth_hr') %></span></dd>
+ <dt><span class="tip" data-content="Port summary of IPv4 exit connections that the relay is going to accept or reject." data-original-title="IPv4 exit policy summary">IPv4 Exit Policy Summary</span></dt>
+ <dd>
+ <% if ('accept' in relay.get('exit_policy_summary')) { %>
+ <pre class="pre-scrollable">accept<% _.each(relay.get('exit_policy_summary')['accept'],
+ function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
+ <% if ('reject' in relay.get('exit_policy_summary')) { %>
+ <pre class="pre-scrollable">reject<% _.each(relay.get('exit_policy_summary')['reject'],
+ function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
+ </dd>
+ <dt><span class="tip" data-content="Port summary of IPv6 exit connections that the relay is going to accept or reject." data-original-title="IPv6 exit policy summary">IPv6 Exit Policy Summary</span></dt>
+ <dd>
+ <% if (relay.get('exit_policy_v6_summary') && ('accept' in relay.get('exit_policy_v6_summary'))) { %>
+ <pre class="pre-scrollable">accept<% _.each(relay.get('exit_policy_v6_summary')['accept'],
+ function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
+ <% if (relay.get('exit_policy_v6_summary') && ('reject' in relay.get('exit_policy_v6_summary'))) { %>
+ <pre class="pre-scrollable">reject<% _.each(relay.get('exit_policy_v6_summary')['reject'],
+ function(ports) { %><br> <%= $.trim(ports) %><% });} %></pre>
+ </dd>
+ <dt><span class="tip" data-content="Policy of exit connections that the relay is going to accept or reject." data-original-title="Exit policy">Exit Policy</span></dt>
+ <dd>
+ <pre class="pre-scrollable"><% _.each(relay.get('exit_policy'), function(line) { %>
+<%= $.trim(line) %><% }); %></pre>
+ </dd>
+ </dl>
+
+
+ </div>
+ <div class="span4">
+ <% if (relay.get('running') === true) { %>
+ <h3>Properties</h3>
+ <dl>
+ <% } else { %>
+ <h3>Last Known Properties</h3>
+ <dl>
+ <dt><span class="tip" data-content="Timestamp when the relay was last seen in the consensus." data-original-title="Last seen">Last Seen</span></dt>
+ <dd><%= relay.get('last_seen') %></dd>
+ <% } %>
+
+ <dt><span class="tip" data-content="20-byte unique identifier of the relay." data-original-title="Fingerprint">Fingerprint</span></dt>
+ <dd><%= relay.get('fingerprint') %></dd>
+
+ <dt><span class="tip" data-content="Flags that the directory authorities assigned to this relay." data-original-title="Relay flags">Flags</span></dt>
+ <dd><% _.each(relay.get('flags'), function(flag) { %>
+ <img class="inline" src="img/flags/<%= flag[1] %>.png">
+ <span class="inline"><%= flag[0] %></span>
+ <% }); %>
+ </dd>
+
+ <dt><span class="tip" data-content="Country as found in a GeoIP database by resolving the relay's first onion-routing address." data-original-title="Country">Country</span></dt>
+ <dd><img class="inline country" title="<%= relay.get('countryname') %>" src="img/cc/<%= relay.get('country') %>.png"/> <%= relay.get('countryname') %></dd>
+
+ <dt><span class="tip" data-content="Autonomous System Number" data-original-title="AS Number">AS Number</span></dt>
+ <dd><%= _.escape(relay.get('as_no')) %></dd>
+
+ <dt><span class="tip" data-content="Autonomous System Name" data-original-title="AS Name">AS Name</span></dt>
+ <dd><%= _.escape(relay.get('as_name')) %></dd>
+
+ <dt><span class="tip" data-content="Date and time when the relay was last (re-)started." data-original-title="Last restarted">Last Restarted</span></dt>
+ <dd><%= relay.get('last_restarted') %></dd>
+
+ <dt><span class"tip" data-content="Other family members of this relay." data-original-title="Family Members">Family Members</span></dt>
+ <dd><pre><% _.each(relay.get('family'), function(member) { %><% var valid = member.match(RegExp("^\$[A-F0-9]{40}$")); %>
+<% if (valid) { %><a href="#details/<%= member.replace('$', '') %>"><% } %><%= member %><% if (valid) { %></a><% }}); %></pre></dd>
+
+ <dt><span class="tip" data-content="Date and time when the relay last published a descriptor to the directory authorities." data-original-title="Descriptor published">Descriptor Published</span></dt>
+ <dd><%= relay.get('desc_published') %></dd>
+
+ <dt><span class="tip" data-content="What OS and Tor version the relay is using" data-original-title="Platform">Platform</span></dt>
+ <dd><%= _.escape(relay.get('platform')) %></dd>
+
+ <dt><span class="tip" data-content="Weight assigned to this relay by the directory authorities that clients use in their path selection algorithm. The unit is arbitrary; currently it's kilobytes per second, but that might change in the future." data-original-title="Consensus Weight">Consensus Weight</span></dt>
+ <dd><%= relay.get('consensus_weight') %></dd>
+
+ </dl>
+ </div>
+ <div class="span4">
+ <h3>Current Status</h3>
+ <dl>
+
+ <% if (relay.get('running') === false) { %>
+ <dt><span class="tip" data-content="The time since this relay was last seen online." data-original-title="Downtime">Downtime</span></dt>
+ <dd><%= relay.get('downtime') %></dd>
+ <% } else {%>
+ <dt><span class="tip" data-content="The time since this relay is online." data-original-title="Uptime">Uptime</span></dt>
+ <dd><%= relay.get('uptime_hrfull') %></dd>
+ <% } %>
+
+ <dt><span class="tip" data-content="Whether this relay is listed in the current Tor directory or not." data-original-title="Running">Running</span></dt>
+ <dd><%= relay.get('running') %></dd>
+
+ </dl>
+ </div>
+</div>
+
+<div class="row">
+<h2>Graphs <small>Pretty graphs</small></h2>
+<hr/>
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_days" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>3 Days graph</h5>
+ <a id="save_bw_days" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div><div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+
+ <div id="bw_week" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Week graph</h5>
+ <a id="save_bw_week" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_month" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Month graph</h5>
+ <a id="save_bw_month" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div><div class="row">
+
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+
+ <div id="bw_months" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>3 Months graph</h5>
+ <a id="save_bw_months" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_year" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Year graph</h5>
+ <a id="save_bw_year" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+
+ </ul>
+</div><div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="bw_years" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>5 Years graph</h5>
+ <a id="save_bw_years" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="weights_week" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>1 Week graph</h5>
+ <a id="save_weights_week" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="weights_month" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>1 Month graph</h5>
+ <a id="save_weights_month" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="weights_months" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>3 Months graph</h5>
+ <a id="save_weights_months" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="weights_year" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>1 Year graph</h5>
+ <a id="save_weights_year" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="weights_years" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>5 Years graph</h5>
+ <a id="save_weights_years" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<!--
+<div class="row">
+<h2>Misc <small>unsorted other information</small></h2>
+<hr/>
+</div>
+-->
1
0
commit f322300e783891d7a91c2075ebf855603a4f04a7
Author: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
Date: Thu Jul 10 02:05:11 2014 +0400
Parse clients data for bridges
Onionoo provides another API method for bridges - information about
clients that used the bridge. Let Atlas provide average client count
graphs.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
---
js/models/graph.js | 59 ++++++++++++++++++++++++++++++
js/views/details/main.js | 17 ++++++++-
templates/details/bridge.html | 79 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 154 insertions(+), 1 deletion(-)
diff --git a/js/models/graph.js b/js/models/graph.js
index 33afea9..434ee9d 100644
--- a/js/models/graph.js
+++ b/js/models/graph.js
@@ -60,6 +60,29 @@ define([
return newar;
};
+ function parseClients(history, model, name) {
+ var newar;
+ _.each(_.keys(history), function(period, i) {
+ var first = history[period].first.split(' ');
+ var date = first[0].split('-');
+ var time = first[1].split(':');
+ first = new Date(date[0], date[1]-1, date[2],
+ time[0], time[1], time[2]);
+ var y = first.getTime();
+ _.each(history[period].values, function(value, i) {
+ y += history[period].interval*1000;
+ var x = null
+ if (value != null) {
+ x = value*history[period].factor;
+ }
+ var mperiod = "clients_" + period.split("_")[1]
+ newar = model.get(mperiod)[name];
+ newar.push([y,x]);
+ });
+ });
+ return newar;
+ };
+
var graphModel = Backbone.Model.extend({
baseurl: 'https://onionoo.torproject.org',
initialize: function() {
@@ -70,6 +93,12 @@ define([
bw_months: {write: [], read: []},
bw_year: {write: [], read: []},
bw_years: {write: [], read: []},
+ clients_days: {average: []},
+ clients_week: {average: []},
+ clients_month: {average: []},
+ clients_months: {average: []},
+ clients_year: {average: []},
+ clients_years: {average: []},
weights_week: {advbw: [], cw: [], guard: [], exit: []},
weights_month: {advbw: [], cw: [], guard: [], exit: []},
weights_months: {advbw: [], cw: [], guard: [], exit: []},
@@ -150,6 +179,36 @@ define([
var exit = parseWeightHistory(relay.exit_probability, model, 'exit');
model.set({mperiod: {exit: exit}});
}
+ },
+ lookup_clients: function(fingerprint, options) {
+ var model = this;
+ var success = options.success;
+ // Clear the model
+ this.set({
+ clients_days: {average: []},
+ clients_week: {average: []},
+ clients_month: {average: []},
+ clients_months: {average: []},
+ clients_year: {average: []},
+ clients_years: {average: []}
+ });
+
+ $.getJSON(this.baseurl+'/clients?lookup='+fingerprint, function(data) {
+ model.data = data;
+ success(model, data);
+ });
+ },
+ parse_clients_data: function(data) {
+ var model = this;
+ var relay = data.relays[0];
+ if (!relay)
+ relay = data.bridges[0];
+ this.fingerprint = relay.fingerprint;
+
+ if ("average_clients" in relay) {
+ var average = parseClients(relay.average_clients, model, 'average');
+ model.set({mperiod: {average: average}});
+ }
}
})
return graphModel;
diff --git a/js/views/details/main.js b/js/views/details/main.js
index ff8ce8d..ee12b89 100644
--- a/js/views/details/main.js
+++ b/js/views/details/main.js
@@ -224,7 +224,22 @@ define([
});
}
});
- };
+ } else {
+ this.graph.lookup_clients(this.model.fingerprint, {
+ success: function() {
+ graph.parse_clients_data(graph.data);
+ graphs = ['clients_week', 'clients_month',
+ 'clients_months', 'clients_year', 'clients_years'];
+ _.each(graphs, function(g) {
+ var data = [graph.get(g).average];
+ var labels = ["average number of connected clients"];
+ var legendPos = [[3, 0]];
+ var colors = ["#edc240"];
+ plot(g, data, labels, legendPos, colors, "g", ".2g");
+ });
+ }
+ });
+ }
$("#loading").hide();
$(".flag .tooltip").hide();
diff --git a/templates/details/bridge.html b/templates/details/bridge.html
index c091363..5a7a14c 100644
--- a/templates/details/bridge.html
+++ b/templates/details/bridge.html
@@ -174,6 +174,85 @@
</div>
</li>
</ul>
+</div><div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+
+ <div id="clients_week" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Week graph</h5>
+ <a id="save_clients_week" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="clients_month" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Month graph</h5>
+ <a id="save_clients_month" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div><div class="row">
+
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+
+ <div id="clients_months" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>3 Months graph</h5>
+ <a id="save_clients_months" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="clients_year" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+ <div class="caption">
+ <h5>1 Year graph</h5>
+ <a id="save_clients_year" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+
+ </ul>
+</div><div class="row">
+ <ul class="thumbnails">
+ <li class="span8">
+ <div class="thumbnail">
+ <div id="clients_years" class="graph">
+ <img src="img/no-data-available.png" alt="">
+ </div>
+
+ <div class="caption">
+ <h5>5 Years graph</h5>
+ <a id="save_clients_years" href="">Save Graph</a>
+ </div>
+ </div>
+ </li>
+ </ul>
</div>
<!--
1
0
commit b17f704ea16c63211fdb23ed34b5ed01ac69525b
Author: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
Date: Sun Jul 20 03:32:24 2014 +0400
Add type column to search view
Add a column representing router type (Bridge/Router) to the search
view.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
---
js/views/search/do.js | 6 ++++++
templates/search/do.html | 11 +++++++++++
2 files changed, 17 insertions(+)
diff --git a/js/views/search/do.js b/js/views/search/do.js
index bcd3231..5e077ec 100644
--- a/js/views/search/do.js
+++ b/js/views/search/do.js
@@ -169,6 +169,9 @@ define([
'Running', 'Stable', 'V2Dir', 'Valid', 'Unnamed',
'Exit']
});
+ $('input#type').typeahead({
+ source: ['Relay', 'Bridge']
+ });
$(".search-query").val(query);
$("#torstatus_results tbody tr").hover(function() {
@@ -217,6 +220,9 @@ define([
oTable.fnDraw();
});
+ $("tfoot input#type").keyup(function() {
+ oTable.fnFilter(this.value, 8);
+ });
},
diff --git a/templates/search/do.html b/templates/search/do.html
index 99b30bd..ddbd21d 100644
--- a/templates/search/do.html
+++ b/templates/search/do.html
@@ -37,6 +37,7 @@ Please report which browser/addons/etc. you're using to <a href="https://trac.to
<th>Flags</th>
<th>ORPort</th>
<th>DirPort</th>
+ <th>Type</th>
</tr>
</thead>
<tbody>
@@ -72,6 +73,13 @@ Please report which browser/addons/etc. you're using to <a href="https://trac.to
</td>
<td><%= relay.get('or_port') %></td>
<td><%= relay.get('dir_port') %></td>
+ <td>
+ <% if (relay.get('is_bridge')) { %>
+ Bridge
+ <% } else { %>
+ Relay
+ <% } %>
+ </td>
</tr>
<% i += 1; %>
<% }); %>
@@ -105,6 +113,9 @@ Please report which browser/addons/etc. you're using to <a href="https://trac.to
<th>
<input type="text" id="dir_port" name="dir_port" placeholder="DirPort" class="search_init span1">
</th>
+ <th>
+ <input type="text" id="type" name="type" placeholder="Type" class="search_init span1">
+ </th>
</tr>
</tfoot>
</table>
1
0

21 Jul '14
Author: phobos
Date: 2014-07-21 16:34:52 +0000 (Mon, 21 Jul 2014)
New Revision: 26880
Modified:
website/trunk/include/tor-mirrors.csv
Log:
remove old bbln mirror
Modified: website/trunk/include/tor-mirrors.csv
===================================================================
--- website/trunk/include/tor-mirrors.csv 2014-07-20 23:17:34 UTC (rev 26879)
+++ website/trunk/include/tor-mirrors.csv 2014-07-21 16:34:52 UTC (rev 26880)
@@ -3,7 +3,6 @@
info AT zentrum-der-gesundheit DOT de, Zentrum der Gesundheit, DK, Denmark, Europe, TRUE, FALSE, No, http://tor.idnr.ws/, , , , http://tor.idnr.ws/dist/, , , , Sat Jul 19 23:55:06 2014
http://www.multinet.no, MultiNet AS, NO, Trondheim, Trondheim, TRUE, TRUE, No, http://tor.multinet.no/, , , , http://tor.multinet.no/dist/, , , , Sat Jul 19 23:55:06 2014
haskell at gmx.es, Tor Supporter, ES, Spain, Europe, TRUE, FALSE, No, http://tor.zilog.es/, , , , http://tor.zilog.es/dist/, , , , Sat Jul 19 23:55:06 2014
-webmaster AT bbln DOT nl, BBLN, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror.ml/tor/, https://mirror.ml/tor/, , , http://mirror.ml/tor/dist/, https://mirror.ml/tor/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://199.175.55.215/, , , , http://199.175.55.215/dist/, , , , Sat Jul 19 23:55:06 2014
margus.random at mail.ee, CyberSIDE, EE, Estonia, EE, TRUE, FALSE, No, http://cyberside.planet.ee/tor/, , , , http://cyberside.net.ee/tor/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, torproject.is, IS, Iceland, IS, TRUE, FALSE, No, http://torproject.is/, , , , http://torproject.is/dist/, , , , Sat Jul 19 23:55:06 2014
1
0
commit ae91b32a60f3521ddfbc2090cc7f8c6c2a8fea74
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon Jul 21 11:18:24 2014 +0200
Simplify servlet unit tests.
---
.../torproject/onionoo/ResourceServletTest.java | 166 ++++++++++++--------
1 file changed, 100 insertions(+), 66 deletions(-)
diff --git a/test/org/torproject/onionoo/ResourceServletTest.java b/test/org/torproject/onionoo/ResourceServletTest.java
index ff3ba35..f8d3281 100644
--- a/test/org/torproject/onionoo/ResourceServletTest.java
+++ b/test/org/torproject/onionoo/ResourceServletTest.java
@@ -6,17 +6,18 @@ package org.torproject.onionoo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
+import java.util.TreeSet;
import org.junit.Before;
import org.junit.Test;
@@ -30,7 +31,7 @@ import com.google.gson.Gson;
* which tests servlet specifics. */
public class ResourceServletTest {
- private SortedMap<String, String> relays, bridges;
+ private SortedMap<String, NodeStatus> relays, bridges;
private long currentTimeMillis = DateTimeHelper.parse(
"2013-04-24 12:22:22");
@@ -99,49 +100,83 @@ public class ResourceServletTest {
@Before
public void createSampleRelaysAndBridges() {
- this.relays = new TreeMap<String, String>();
+ NodeStatus relayTorkaZ = new NodeStatus(true, "TorkaZ",
+ "000C5F55BD4814B917CC474BD537F1A3B33CCE2A", "62.216.201.221",
+ new TreeSet<String>(), new TreeSet<String>(Arrays.asList(
+ new String[] { "62.216.201.222", "62.216.201.223" })),
+ DateTimeHelper.parse("2013-04-19 05:00:00"), 9001, 0,
+ new TreeSet<String>(Arrays.asList(new String[] { "Running",
+ "Valid" })), 20L, "de", null, -1L, "reject", "1-65535",
+ DateTimeHelper.parse("2013-04-18 05:00:00"),
+ DateTimeHelper.parse("2013-04-19 05:00:00"), "AS8767",
+ "torkaz <klaus dot zufall at gmx dot de> "
+ + "<fb-token:np5_g_83jmf=>", null, new TreeSet<String>(
+ Arrays.asList(new String[] {
+ "001C13B3A55A71B977CA65EC85539D79C653A3FC",
+ "0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B" })));
+ NodeStatus relayFerrari458 = new NodeStatus(true, "Ferrari458",
+ "001C13B3A55A71B977CA65EC85539D79C653A3FC", "68.38.171.200",
+ new TreeSet<String>(Arrays.asList(new String[] {
+ "[2001:4f8:3:2e::51]:9001" })), new TreeSet<String>(),
+ DateTimeHelper.parse("2013-04-24 12:00:00"), 9001, 9030,
+ new TreeSet<String>(Arrays.asList(new String[] { "Fast", "Named",
+ "Running", "V2Dir", "Valid" })), 1140L, "us",
+ "c-68-38-171-200.hsd1.pa.comcast.net", 1366805763009L, "reject",
+ "1-65535", DateTimeHelper.parse("2013-02-12 16:00:00"),
+ DateTimeHelper.parse("2013-02-26 18:00:00"), "AS7922", null, null,
+ new TreeSet<String>(Arrays.asList(new String[] {
+ "000C5F55BD4814B917CC474BD537F1A3B33CCE2A" })));
+ relayFerrari458.setRunning(true);
+ NodeStatus relayTimMayTribute = new NodeStatus(true, "TimMayTribute",
+ "0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B", "89.69.68.246",
+ new TreeSet<String>(), new TreeSet<String>(),
+ DateTimeHelper.parse("2013-04-22 20:00:00"), 9001, 9030,
+ new TreeSet<String>(Arrays.asList(new String[] { "Fast",
+ "Running", "Unnamed", "V2Dir", "Valid" })), 63L, "a1", null, -1L,
+ "reject", "1-65535", DateTimeHelper.parse("2013-04-16 18:00:00"),
+ DateTimeHelper.parse("2013-04-16 18:00:00"), "AS6830",
+ "1024D/51E2A1C7 steven j. murdoch "
+ + "<tor+steven.murdoch(a)cl.cam.ac.uk> <fb-token:5sr_k_zs2wm=>",
+ null, new TreeSet<String>());
+ NodeStatus bridgeec2bridgercc7f31fe = new NodeStatus(false,
+ "ec2bridgercc7f31fe", "0000831B236DFF73D409AD17B40E2A728A53994F",
+ "10.199.7.176", new TreeSet<String>(), new TreeSet<String>(),
+ DateTimeHelper.parse("2013-04-21 18:07:03"), 443, 0,
+ new TreeSet<String>(Arrays.asList(new String[] { "Valid" })), -1L,
+ "??", null, -1L, null, null,
+ DateTimeHelper.parse("2013-04-20 15:37:04"), -1L, null, null,
+ null, null);
+ NodeStatus bridgeUnnamed = new NodeStatus(false, "Unnamed",
+ "0002D9BDBBC230BD9C78FF502A16E0033EF87E0C", "10.0.52.84",
+ new TreeSet<String>(), new TreeSet<String>(),
+ DateTimeHelper.parse("2013-04-20 17:37:04"), 443, 0,
+ new TreeSet<String>(Arrays.asList(new String[] { "Valid" })), -1L,
+ "??", null, -1L, null, null,
+ DateTimeHelper.parse("2013-04-14 07:07:05"), -1L, null, null,
+ null, null);
+ NodeStatus bridgegummy = new NodeStatus(false, "gummy",
+ "1FEDE50ED8DBA1DD9F9165F78C8131E4A44AB756", "10.63.169.98",
+ new TreeSet<String>(), new TreeSet<String>(),
+ DateTimeHelper.parse("2013-04-24 01:07:04"), 9001, 0,
+ new TreeSet<String>(Arrays.asList(new String[] { "Running",
+ "Valid" })), -1L, "??", null, -1L, null, null,
+ DateTimeHelper.parse("2013-01-16 21:07:04"), -1L, null, null,
+ null, null);
+ bridgegummy.setRunning(true);
+ this.relays = new TreeMap<String, NodeStatus>();
this.relays.put("000C5F55BD4814B917CC474BD537F1A3B33CCE2A",
- "r\tTorkaZ\t000C5F55BD4814B917CC474BD537F1A3B33CCE2A\t"
- + "62.216.201.221;;62.216.201.222+62.216.201.223\t"
- + "2013-04-19\t05:00:00\t9001\t0\tRunning,Valid\t20\tde\tnull\t"
- + "-1\treject\t1-65535\t2013-04-18\t05:00:00\t"
- + "2013-04-19\t05:00:00\tAS8767\ttorkaz <klaus dot zufall at "
- + "gmx dot de> <fb-token:np5_g_83jmf=>\tnull\t"
- + "001C13B3A55A71B977CA65EC85539D79C653A3FC;"
- + "0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B");
+ relayTorkaZ);
this.relays.put("001C13B3A55A71B977CA65EC85539D79C653A3FC",
- "r\tFerrari458\t001C13B3A55A71B977CA65EC85539D79C653A3FC\t"
- + "68.38.171.200;[2001:4f8:3:2e::51]:9001;\t"
- + "2013-04-24\t12:00:00\t9001\t9030\t"
- + "Fast,Named,Running,V2Dir,Valid\t1140\tus\t"
- + "c-68-38-171-200.hsd1.pa.comcast.net\t1366805763009\treject\t"
- + "1-65535\t2013-02-12\t16:00:00\t2013-02-26\t18:00:00\t"
- + "AS7922\tnull\tnull\t000C5F55BD4814B917CC474BD537F1A3B33CCE2A");
+ relayFerrari458);
this.relays.put("0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B",
- "r\tTimMayTribute\t0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B\t"
- + "89.69.68.246;;\t2013-04-22\t20:00:00\t9001\t9030\t"
- + "Fast,Running,Unnamed,V2Dir,Valid\t63\ta1\tnull\t-1\treject\t"
- + "1-65535\t2013-04-16\t18:00:00\t2013-04-16\t18:00:00\t"
- + "AS6830\t1024D/51E2A1C7 steven j. murdoch "
- + "<tor+steven.murdoch(a)cl.cam.ac.uk> <fb-token:5sr_k_zs2wm=>\t"
- + "null\tnull");
- this.bridges = new TreeMap<String, String>();
+ relayTimMayTribute);
+ this.bridges = new TreeMap<String, NodeStatus>();
this.bridges.put("0000831B236DFF73D409AD17B40E2A728A53994F",
- "b\tec2bridgercc7f31fe\t"
- + "0000831B236DFF73D409AD17B40E2A728A53994F\t10.199.7.176;;\t"
- + "2013-04-21\t18:07:03\t443\t0\tValid\t-1\t??\tnull\t-1\t"
- + "null\tnull\t2013-04-20\t15:37:04\tnull\tnull\tnull\tnull\t"
- + "null\tnull");
+ bridgeec2bridgercc7f31fe);
this.bridges.put("0002D9BDBBC230BD9C78FF502A16E0033EF87E0C",
- "b\tUnnamed\t0002D9BDBBC230BD9C78FF502A16E0033EF87E0C\t"
- + "10.0.52.84;;\t2013-04-20\t17:37:04\t443\t0\tValid\t-1\t??\t"
- + "null\t-1\tnull\tnull\t2013-04-14\t07:07:05\tnull\tnull\tnull\t"
- + "null\tnull\tnull");
+ bridgeUnnamed);
this.bridges.put("1FEDE50ED8DBA1DD9F9165F78C8131E4A44AB756",
- "b\tgummy\t1FEDE50ED8DBA1DD9F9165F78C8131E4A44AB756\t"
- + "10.63.169.98;;\t2013-04-24\t01:07:04\t9001\t0\tRunning,Valid\t"
- + "-1\t??\tnull\t-1\tnull\tnull\t2013-01-16\t21:07:04\tnull\t"
- + "null\tnull\tnull\tnull\tnull");
+ bridgegummy);
}
private void runTest(String requestURI,
@@ -168,13 +203,11 @@ public class ResourceServletTest {
updateStatus.setDocumentString(String.valueOf(
this.currentTimeMillis));
documentStore.addDocument(updateStatus, null);
- for (Map.Entry<String, String> e : relays.entrySet()) {
- documentStore.addDocument(NodeStatus.fromString(e.getValue()),
- e.getKey());
+ for (Map.Entry<String, NodeStatus> e : relays.entrySet()) {
+ documentStore.addDocument(e.getValue(), e.getKey());
}
- for (Map.Entry<String, String> e : bridges.entrySet()) {
- documentStore.addDocument(NodeStatus.fromString(e.getValue()),
- e.getKey());
+ for (Map.Entry<String, NodeStatus> e : bridges.entrySet()) {
+ documentStore.addDocument(e.getValue(), e.getKey());
}
ApplicationFactory.setDocumentStore(documentStore);
}
@@ -286,38 +319,39 @@ public class ResourceServletTest {
@Test()
public void testValidSummaryRelay() throws IOException {
- this.relays.clear();
- this.relays.put("000C5F55BD4814B917CC474BD537F1A3B33CCE2A",
- "r TorkaZ 000C5F55BD4814B917CC474BD537F1A3B33CCE2A "
- + "62.216.201.221;; 2013-04-19 05:00:00 9001 0 Running,Valid 20 "
- + "de null -1 reject 1-65535 2013-04-18 05:00:00 2013-04-19 "
- + "05:00:00 AS8767 null null null");
this.runTest("/summary", null);
- assertEquals("2013-04-19 05:00:00",
+ assertEquals("2013-04-24 12:00:00",
this.summaryDocument.relays_published);
- assertEquals(1, this.summaryDocument.relays.length);
- RelaySummary relay = this.summaryDocument.relays[0];
+ assertEquals(3, this.summaryDocument.relays.length);
+ RelaySummary relay = null;
+ for (RelaySummary r : this.summaryDocument.relays) {
+ if (r.f.equals("000C5F55BD4814B917CC474BD537F1A3B33CCE2A")) {
+ relay = r;
+ break;
+ }
+ }
+ assertNotNull(relay);
assertEquals("TorkaZ", relay.n);
- assertEquals("000C5F55BD4814B917CC474BD537F1A3B33CCE2A", relay.f);
- assertEquals(1, relay.a.length);
+ assertEquals(3, relay.a.length);
assertEquals("62.216.201.221", relay.a[0]);
- assertTrue(relay.r);
+ assertFalse(relay.r);
}
@Test()
public void testValidSummaryBridge() {
- this.bridges.clear();
- this.bridges.put("0000831B236DFF73D409AD17B40E2A728A53994F",
- "b ec2bridgercc7f31fe 0000831B236DFF73D409AD17B40E2A728A53994F "
- + "10.199.7.176;; 2013-04-21 18:07:03 443 0 Valid -1 ?? null -1 "
- + "null null 2013-04-20 15:37:04 null null null null null null");
this.runTest("/summary", null);
- assertEquals("2013-04-21 18:07:03",
+ assertEquals("2013-04-24 01:07:04",
this.summaryDocument.bridges_published);
- assertEquals(1, this.summaryDocument.bridges.length);
- BridgeSummary bridge = this.summaryDocument.bridges[0];
+ assertEquals(3, this.summaryDocument.bridges.length);
+ BridgeSummary bridge = null;
+ for (BridgeSummary b : this.summaryDocument.bridges) {
+ if (b.h.equals("0000831B236DFF73D409AD17B40E2A728A53994F")) {
+ bridge = b;
+ break;
+ }
+ }
+ assertNotNull(bridge);
assertEquals("ec2bridgercc7f31fe", bridge.n);
- assertEquals("0000831B236DFF73D409AD17B40E2A728A53994F", bridge.h);
assertFalse(bridge.r);
}
1
0

21 Jul '14
commit 0028a1407b8e33f691defcfca95613d75f3a6780
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon Jul 21 11:48:11 2014 +0200
Fix workaround for fingerprint parameter.
This workaround broke when we switched from formatting details documents
manually to using Gson for that.
---
src/org/torproject/onionoo/DocumentStore.java | 104 ++++++++-----------------
1 file changed, 32 insertions(+), 72 deletions(-)
diff --git a/src/org/torproject/onionoo/DocumentStore.java b/src/org/torproject/onionoo/DocumentStore.java
index e8f8878..e164b0d 100644
--- a/src/org/torproject/onionoo/DocumentStore.java
+++ b/src/org/torproject/onionoo/DocumentStore.java
@@ -13,7 +13,6 @@ import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
-import java.util.Scanner;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.Stack;
@@ -272,83 +271,44 @@ public class DocumentStore {
* 500,000 NodeStatus instances into memory. Maybe there's a better
* way? Or do we need to switch to a real database for this? */
DetailsDocument detailsDocument = this.retrieveDocumentFile(
- DetailsDocument.class, false, fingerprint);
+ DetailsDocument.class, true, fingerprint);
if (detailsDocument == null) {
return null;
}
- try {
- boolean isRelay = true, running = false;
- String nickname = null, address = null, countryCode = null,
- hostName = null, defaultPolicy = null, portList = null,
- aSNumber = null, contact = null;
- SortedSet<String> orAddressesAndPorts = new TreeSet<String>(),
- exitAddresses = new TreeSet<String>(),
- relayFlags = new TreeSet<String>(), family = null;
- long lastSeenMillis = -1L, consensusWeight = -1L,
- lastRdnsLookup = -1L, firstSeenMillis = -1L,
- lastChangedAddresses = -1L;
- int orPort = 0, dirPort = 0;
- Boolean recommendedVersion = null;
- Scanner s = new Scanner(detailsDocument.getDocumentString());
- while (s.hasNextLine()) {
- String line = s.nextLine();
- if (!line.contains(":")) {
- continue;
- }
- String[] parts = line.split(":", 2);
- String key = parts[0], value = parts[1];
- if (key.equals("\"nickname\"")) {
- if (!value.startsWith("\"") || !value.endsWith("\",")) {
- return null;
- }
- nickname = value.substring(1, value.length() - 2);
- } else if (key.equals("\"hashed_fingerprint\"")) {
- isRelay = false;
- } else if (key.equals("\"or_addresses\"")) {
- if (!value.startsWith("[") || !value.endsWith("],")) {
- return null;
- }
- for (String addressAndPort :
- value.substring(1, value.length() - 2).split(",")) {
- if (addressAndPort.length() < 2 ||
- !addressAndPort.contains(":")) {
- return null;
- }
- if (address == null) {
- address = addressAndPort.substring(1,
- addressAndPort.lastIndexOf(":"));
- } else {
- orAddressesAndPorts.add(addressAndPort);
- }
- }
- } else if (key.equals("\"exit_addresses\"")) {
- if (!value.startsWith("[") || !value.endsWith("],")) {
- return null;
- }
- for (String addressPart :
- value.substring(1, value.length() - 2).split(",")) {
- exitAddresses.add(addressPart);
- }
- } else if (key.equals("\"running\"")) {
- if (value.equals("true,")) {
- running = true;
- } else if (!value.equals("false,")) {
- return null;
- }
+ boolean isRelay = detailsDocument.getHashedFingerprint() == null;
+ String nickname = detailsDocument.getNickname();
+ String address = null, countryCode = null, hostName = null,
+ defaultPolicy = null, portList = null, aSNumber = null,
+ contact = null;
+ SortedSet<String> orAddressesAndPorts = new TreeSet<String>();
+ for (String orAddressAndPort : detailsDocument.getOrAddresses()) {
+ if (address == null) {
+ if (!orAddressAndPort.contains(":")) {
+ return null;
}
+ address = orAddressAndPort.substring(0,
+ orAddressAndPort.lastIndexOf(":"));
+ } else {
+ orAddressesAndPorts.add(orAddressAndPort);
}
- NodeStatus nodeStatus = new NodeStatus(isRelay, nickname,
- fingerprint, address, orAddressesAndPorts, exitAddresses,
- lastSeenMillis, orPort, dirPort, relayFlags, consensusWeight,
- countryCode, hostName, lastRdnsLookup, defaultPolicy, portList,
- firstSeenMillis, lastChangedAddresses, aSNumber, contact,
- recommendedVersion, family);
- nodeStatus.setRunning(running);
- return nodeStatus;
- } catch (Exception e) {
- /* Play it safe and fall back to returning nothing. */
- return null;
}
+ SortedSet<String> exitAddresses = new TreeSet<String>();
+ if (detailsDocument.getExitAddresses() != null) {
+ exitAddresses.addAll(detailsDocument.getExitAddresses());
+ }
+ SortedSet<String> relayFlags = new TreeSet<String>(), family = null;
+ long lastSeenMillis = -1L, consensusWeight = -1L,
+ lastRdnsLookup = -1L, firstSeenMillis = -1L,
+ lastChangedAddresses = -1L;
+ int orPort = 0, dirPort = 0;
+ Boolean recommendedVersion = null;
+ NodeStatus nodeStatus = new NodeStatus(isRelay, nickname, fingerprint,
+ address, orAddressesAndPorts, exitAddresses, lastSeenMillis,
+ orPort, dirPort, relayFlags, consensusWeight, countryCode,
+ hostName, lastRdnsLookup, defaultPolicy, portList,
+ firstSeenMillis, lastChangedAddresses, aSNumber, contact,
+ recommendedVersion, family);
+ return nodeStatus;
}
private <T extends Document> T retrieveDocumentFile(
1
0

20 Jul '14
Author: phobos
Date: 2014-07-20 23:17:34 +0000 (Sun, 20 Jul 2014)
New Revision: 26879
Modified:
website/trunk/include/tor-mirrors.csv
Log:
remove vesta.nu for ad spam.
Modified: website/trunk/include/tor-mirrors.csv
===================================================================
--- website/trunk/include/tor-mirrors.csv 2014-07-20 23:15:47 UTC (rev 26878)
+++ website/trunk/include/tor-mirrors.csv 2014-07-20 23:17:34 UTC (rev 26879)
@@ -25,7 +25,6 @@
Tor Fan, Tor Supporter, UA, Ukraine, UA, TRUE, FALSE, No, http://torua.reactor-xg.kiev.ua/, , , , http://torua.reactor-xg.kiev.ua/dist/, , , ,
mail AT benjamin-meier DOT info, beme it, DE, Germany, DE, TRUE, FALSE, No, http://tor.beme-it.de/, https://tor.beme-it.de/, rsync://tor.beme-it.de/tor, , http://tor.beme-it.de/dist/, https://tor.beme-it.de/dist/, rsync://tor.beme-it.de/tor/dist, , Sat Jul 19 23:55:06 2014
wollomatic at posteo.eu, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, No, http://tormirror.almnet.de/, https://tormirror.almnet.de/, , , http://tormirror.almnet.de/dist/, https://tormirror.almnet.de/dist/, , , Sat Jul 19 23:55:06 2014
-Tor Fan, Tor Supporter, LT, Lithuania, LT, TRUE, FALSE, No, http://tor.vesta.nu/, , , , http://tor.vesta.nu/dist/, , , , Sat Jun 21 01:23:19 2014
Tor Fan, Tor Supporter, MX, Mexico, MX, TRUE, FALSE, No, http://fbnaia.homelinux.net/torproject/, https://fbnaia.homelinux.net/torproject/, , , http://fbnaia.homelinux.net/torproject/dist/, https://fbnaia.homelinux.net/torproject/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://37.187.0.127/tormirror/, , , , http://37.187.0.127/tormirror/dist/, , , ,
Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://tor.minibofh.org/, , , , http://tor.minibofh.org/dist/, , , ,
1
0

20 Jul '14
Author: phobos
Date: 2014-07-20 23:15:47 +0000 (Sun, 20 Jul 2014)
New Revision: 26878
Modified:
website/trunk/include/mirrors-table.wmi
website/trunk/include/tor-mirrors.csv
Log:
update mirror status.
Modified: website/trunk/include/mirrors-table.wmi
===================================================================
--- website/trunk/include/mirrors-table.wmi 2014-07-20 21:51:19 UTC (rev 26877)
+++ website/trunk/include/mirrors-table.wmi 2014-07-20 23:15:47 UTC (rev 26878)
@@ -479,23 +479,6 @@
<td>DE</td>
- <td>crazyhaze.de</td>
-
- <td>Up to date</td>
-
- <td> - </td>
- <td><a href="http://tor.crazyhaze.de/dist/">http</a></td>
- <td><a href="http://tor.crazyhaze.de/">http</a></td>
- <td><a href="https://tor.crazyhaze.de/dist/">https</a></td>
- <td><a href="https://tor.crazyhaze.de/">https</a></td>
- <td> - </td>
- <td> - </td>
-</tr>
-
-<tr>
-
- <td>DE</td>
-
<td>chaos darmstadt</td>
<td>Up to date</td>
@@ -630,32 +613,32 @@
<tr>
- <td>US</td>
+ <td>CA</td>
- <td>EPRCI</td>
+ <td>tor(a)les.net</td>
<td>Up to date</td>
<td> - </td>
- <td><a href="http://tor.eprci.net/dist/">http</a></td>
- <td><a href="http://tor.eprci.net/">http</a></td>
- <td><a href="https://www.eprci.com/tor/dist/">https</a></td>
- <td><a href="https://www.eprci.com/tor/">https</a></td>
+ <td><a href="http://tor.les.net/dist">http</a></td>
+ <td><a href="http://tor.les.net/">http</a></td>
<td> - </td>
<td> - </td>
+ <td> - </td>
+ <td> - </td>
</tr>
<tr>
- <td>CA</td>
+ <td>DE</td>
- <td>tor(a)les.net</td>
+ <td>PW</td>
<td>Up to date</td>
<td> - </td>
- <td><a href="http://tor.les.net/dist">http</a></td>
- <td><a href="http://tor.les.net/">http</a></td>
+ <td><a href="http://tor.pw.is/dist/">http</a></td>
+ <td><a href="http://tor.pw.is/">http</a></td>
<td> - </td>
<td> - </td>
<td> - </td>
@@ -1055,6 +1038,23 @@
<tr>
+ <td>IT</td>
+
+ <td>Tor Supporter</td>
+
+ <td>Up to date</td>
+
+ <td> - </td>
+ <td> - </td>
+ <td><a href="http://tor.stefanof.com">http</a></td>
+ <td> - </td>
+ <td> - </td>
+ <td><a href="http://tor.stefanof.com/dist">rsync</a></td>
+ <td> - </td>
+</tr>
+
+<tr>
+
<td>US</td>
<td>tor.d4rkn3t.com</td>
@@ -1089,34 +1089,34 @@
<tr>
- <td>IN</td>
+ <td>NL</td>
- <td>India Tor Fans</td>
+ <td>BBLN</td>
<td>Up to date</td>
- <td> - </td>
- <td><a href="http://www.torproject.org.in/dist/">http</a></td>
- <td><a href="http://www.torproject.org.in/">http</a></td>
- <td> - </td>
- <td> - </td>
- <td> - </td>
- <td> - </td>
+ <td><a href="ftp://mirror2.bbln.org/torproject/">ftp</a></td>
+ <td><a href="http://mirror2.bbln.org/torproject/dist/">http</a></td>
+ <td><a href="http://mirror2.bbln.org/torproject/">http</a></td>
+ <td><a href="https://mirror2.bbln.org/torproject/dist/">https</a></td>
+ <td><a href="https://mirror2.bbln.org/torproject/">https</a></td>
+ <td><a href="rsync://mirror2.bbln.org/torproject/dist/">rsync</a></td>
+ <td><a href="rsync://mirror2.bbln.org/torproject/">rsync</a></td>
</tr>
<tr>
- <td>IT</td>
+ <td>FR</td>
- <td>Tor Supporter</td>
+ <td>BBLN</td>
<td>Up to date</td>
- <td> - </td>
- <td> - </td>
- <td><a href="http://tor.stefanof.com">http</a></td>
- <td> - </td>
- <td> - </td>
- <td><a href="http://tor.stefanof.com/dist">rsync</a></td>
- <td> - </td>
+ <td><a href="ftp://mirror.bbln.org/torproject/">ftp</a></td>
+ <td><a href="http://mirror.bbln.org/torproject/dist/">http</a></td>
+ <td><a href="http://mirror.bbln.org/torproject/">http</a></td>
+ <td><a href="https://mirror.bbln.org/torproject/dist/">https</a></td>
+ <td><a href="https://mirror.bbln.org/torproject/">https</a></td>
+ <td><a href="rsync://mirror.bbln.org/torproject/dist/">rsync</a></td>
+ <td><a href="rsync://mirror.bbln.org/torproject/">rsync</a></td>
</tr>
Modified: website/trunk/include/tor-mirrors.csv
===================================================================
--- website/trunk/include/tor-mirrors.csv 2014-07-20 21:51:19 UTC (rev 26877)
+++ website/trunk/include/tor-mirrors.csv 2014-07-20 23:15:47 UTC (rev 26878)
@@ -1,108 +1,108 @@
adminContact, orgName, isoCC, subRegion, region, ipv4, ipv6, loadBalanced, httpWebsiteMirror, httpsWebsiteMirror, rsyncWebsiteMirror, ftpWebsiteMirror, httpDistMirror, httpsDistMirror, rsyncDistMirror, hiddenServiceMirror, updateDate
Tor Fan, Tor Supporter, US, United States, US, TRUE, TRUE, No, http://tor.loritsu.com/, , , , http://tor.loritsu.com/dist/, , , ,
-info AT zentrum-der-gesundheit DOT de, Zentrum der Gesundheit, DK, Denmark, Europe, TRUE, FALSE, No, http://tor.idnr.ws/, , , , http://tor.idnr.ws/dist/, , , , Sat Jul 12 11:20:26 2014
-http://www.multinet.no, MultiNet AS, NO, Trondheim, Trondheim, TRUE, TRUE, No, http://tor.multinet.no/, , , , http://tor.multinet.no/dist/, , , , Sat Jul 12 11:20:26 2014
-haskell at gmx.es, Tor Supporter, ES, Spain, Europe, TRUE, FALSE, No, http://tor.zilog.es/, , , , http://tor.zilog.es/dist/, , , , Sat Jul 12 11:20:26 2014
-webmaster AT bbln DOT nl, BBLN, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror.ml/tor/, https://mirror.ml/tor/, , , http://mirror.ml/tor/dist/, https://mirror.ml/tor/dist/, , , Sat Jul 12 11:20:26 2014
-Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://199.175.55.215/, , , , http://199.175.55.215/dist/, , , , Sat Jul 12 11:20:26 2014
-margus.random at mail.ee, CyberSIDE, EE, Estonia, EE, TRUE, FALSE, No, http://cyberside.planet.ee/tor/, , , , http://cyberside.net.ee/tor/, , , , Sat Jul 12 11:20:26 2014
-Tor Fan, torproject.is, IS, Iceland, IS, TRUE, FALSE, No, http://torproject.is/, , , , http://torproject.is/dist/, , , , Sat Jul 12 11:20:26 2014
-Tor Fan, spline, DE, Germany, DE, TRUE, FALSE, No, http://tor.spline.de/, https://tor.spline.inf.fu-berlin.de/, rsync://ftp.spline.de/tor, ftp://ftp.spline.de/pub/tor, http://tor.spline.de/dist/, https://tor.spline.inf.fu-berlin.de/dist/, rsync://ftp.spline.de/tor/dist, , Sat Jul 12 11:20:26 2014
-Tor Fan, me0w.cc, RO, Romania, RO, TRUE, FALSE, No, http://tor.me0w.cc/, , , , http://tor.me0w.cc/dist/, , , , Sat Jul 12 11:20:26 2014
-Tor Fan, borgmann.tv, DE, Germany, DE, TRUE, FALSE, No, http://tor.borgmann.tv/, , , , http://tor.borgmann.tv/dist/, , , , Sat Jul 12 11:20:26 2014
+info AT zentrum-der-gesundheit DOT de, Zentrum der Gesundheit, DK, Denmark, Europe, TRUE, FALSE, No, http://tor.idnr.ws/, , , , http://tor.idnr.ws/dist/, , , , Sat Jul 19 23:55:06 2014
+http://www.multinet.no, MultiNet AS, NO, Trondheim, Trondheim, TRUE, TRUE, No, http://tor.multinet.no/, , , , http://tor.multinet.no/dist/, , , , Sat Jul 19 23:55:06 2014
+haskell at gmx.es, Tor Supporter, ES, Spain, Europe, TRUE, FALSE, No, http://tor.zilog.es/, , , , http://tor.zilog.es/dist/, , , , Sat Jul 19 23:55:06 2014
+webmaster AT bbln DOT nl, BBLN, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror.ml/tor/, https://mirror.ml/tor/, , , http://mirror.ml/tor/dist/, https://mirror.ml/tor/dist/, , , Sat Jul 19 23:55:06 2014
+Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://199.175.55.215/, , , , http://199.175.55.215/dist/, , , , Sat Jul 19 23:55:06 2014
+margus.random at mail.ee, CyberSIDE, EE, Estonia, EE, TRUE, FALSE, No, http://cyberside.planet.ee/tor/, , , , http://cyberside.net.ee/tor/, , , , Sat Jul 19 23:55:06 2014
+Tor Fan, torproject.is, IS, Iceland, IS, TRUE, FALSE, No, http://torproject.is/, , , , http://torproject.is/dist/, , , , Sat Jul 19 23:55:06 2014
+Tor Fan, spline, DE, Germany, DE, TRUE, FALSE, No, http://tor.spline.de/, https://tor.spline.inf.fu-berlin.de/, rsync://ftp.spline.de/tor, ftp://ftp.spline.de/pub/tor, http://tor.spline.de/dist/, https://tor.spline.inf.fu-berlin.de/dist/, rsync://ftp.spline.de/tor/dist, , Sat Jul 19 23:55:06 2014
+Tor Fan, me0w.cc, RO, Romania, RO, TRUE, FALSE, No, http://tor.me0w.cc/, , , , http://tor.me0w.cc/dist/, , , , Sat Jul 19 23:55:06 2014
+Tor Fan, borgmann.tv, DE, Germany, DE, TRUE, FALSE, No, http://tor.borgmann.tv/, , , , http://tor.borgmann.tv/dist/, , , , Sat Jul 19 23:55:06 2014
security AT hostoffice DOT hu, Unknown, HU, Hungary, Europe, TRUE, FALSE, No, http://mirror.tor.hu/, , , , http://mirror.tor.hu/dist/, , , , Wed Apr 16 16:29:40 2014
Tor Fan, Tor Supporter, TN, Tunisia, TN, TRUE, FALSE, No, http://torproject.antagonism.org/, https://torproject.antagonism.org/, , , , , , , Sun Mar 2 06:08:00 2014
-webmaster AT ccc DOT de, CCC, NL, The Netherlands, Europe, TRUE, FALSE, No, http://tor.ccc.de/, , , , http://tor.ccc.de/dist/, , , , Sat Jul 12 11:20:26 2014
+webmaster AT ccc DOT de, CCC, NL, The Netherlands, Europe, TRUE, FALSE, No, http://tor.ccc.de/, , , , http://tor.ccc.de/dist/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, searchprivate, US, TX, US, TRUE, FALSE, No, http://tor.searchprivate.com/, , , , http://tor.searchprivate.com/dist/, , , , Sun Jul 29 23:49:26 2012
-Tor Fan, Tor Supporter, AT, Austria, AT, TRUE, TRUE, No, http://tor.dont-know-me.at/, , , , http://tor.dont-know-me.at/dist/, , , , Sat Jul 12 11:20:26 2014
+Tor Fan, Tor Supporter, AT, Austria, AT, TRUE, TRUE, No, http://tor.dont-know-me.at/, , , , http://tor.dont-know-me.at/dist/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, LU, Luxemborg, LU, TRUE, FALSE, No, http://torproject.adamas.ai/, , , , http://torproject.adamas.ai/dist/, , , ,
-mirror ntzk de, Netzkonstrukt Berlin, DE, Germany, Europe, TRUE, FALSE, No, http://mirror.ntzk.de/torproject.org/, , , , http://mirror.ntzk.de/torproject.org/dist/, , , , Sat Jul 12 11:20:26 2014
+mirror ntzk de, Netzkonstrukt Berlin, DE, Germany, Europe, TRUE, FALSE, No, http://mirror.ntzk.de/torproject.org/, , , , http://mirror.ntzk.de/torproject.org/dist/, , , , Sat Jul 19 23:55:06 2014
coralcdn.org, CoralCDN, INT, International, INT, TRUE, FALSE, Yes, http://www.torproject.org.nyud.net/, , , , http://www.torproject.org.nyud.net/dist/, , , , Sat Jun 21 01:23:19 2014
-Tor Fan, Tor Supporter, AT, Austria, AT, TRUE, FALSE, No, http://torproject.ph3x.at/, , , , http://torproject.ph3x.at/dist/, , , , Sat Jul 12 11:20:26 2014
-info /AT enn /DOT lu, Frenn vun der Enn A.S.B.L., IS, Iceland, Europe, TRUE, FALSE, No, http://torproject.lu/, , , , http://torproject.lu/dist/, , , http://btn6gqzqevlhoryd.onion, Sat Jul 12 11:20:26 2014
-neutrino8 AT gmail DOT com, teambelgium, BE, Belgium, Europe, TRUE, FALSE, No, http://tor.teambelgium.net:8080/, , , ftp://tor.teambelgium.net:2121/torproject/, http://tor.teambelgium.net:8080/dist/, , , , Sat Jul 12 11:20:26 2014
+Tor Fan, Tor Supporter, AT, Austria, AT, TRUE, FALSE, No, http://torproject.ph3x.at/, , , , http://torproject.ph3x.at/dist/, , , , Sat Jul 19 23:55:06 2014
+info /AT enn /DOT lu, Frenn vun der Enn A.S.B.L., IS, Iceland, Europe, TRUE, FALSE, No, http://torproject.lu/, , , , http://torproject.lu/dist/, , , http://btn6gqzqevlhoryd.onion, Sat Jul 19 23:55:06 2014
+neutrino8 AT gmail DOT com, teambelgium, BE, Belgium, Europe, TRUE, FALSE, No, http://tor.teambelgium.net:8080/, , , ftp://tor.teambelgium.net:2121/torproject/, http://tor.teambelgium.net:8080/dist/, , , , Sat Jul 19 23:55:06 2014
tormaster AT xpdm DOT us, Xpdm, US, United States, North America, TRUE, FALSE, No, http://torproj.xpdm.us/, https://torproj.xpdm.us/, , , http://torproj.xpdm.us/dist/, https://torproj.xpdm.us/dist/, , http://h3prhz46uktgm4tt.onion/, Tue Feb 11 08:42:17 2014
Tor Fan, Tor Supporter, UA, Ukraine, UA, TRUE, FALSE, No, http://torua.reactor-xg.kiev.ua/, , , , http://torua.reactor-xg.kiev.ua/dist/, , , ,
- mail AT benjamin-meier DOT info, beme it, DE, Germany, DE, TRUE, FALSE, No, http://tor.beme-it.de/, https://tor.beme-it.de/, rsync://tor.beme-it.de/tor, , http://tor.beme-it.de/dist/, https://tor.beme-it.de/dist/, rsync://tor.beme-it.de/tor/dist, , Sat Jul 12 11:20:26 2014
-wollomatic at posteo.eu, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, No, http://tormirror.almnet.de/, https://tormirror.almnet.de/, , , http://tormirror.almnet.de/dist/, https://tormirror.almnet.de/dist/, , , Sat Jul 12 11:20:26 2014
+ mail AT benjamin-meier DOT info, beme it, DE, Germany, DE, TRUE, FALSE, No, http://tor.beme-it.de/, https://tor.beme-it.de/, rsync://tor.beme-it.de/tor, , http://tor.beme-it.de/dist/, https://tor.beme-it.de/dist/, rsync://tor.beme-it.de/tor/dist, , Sat Jul 19 23:55:06 2014
+wollomatic at posteo.eu, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, No, http://tormirror.almnet.de/, https://tormirror.almnet.de/, , , http://tormirror.almnet.de/dist/, https://tormirror.almnet.de/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, LT, Lithuania, LT, TRUE, FALSE, No, http://tor.vesta.nu/, , , , http://tor.vesta.nu/dist/, , , , Sat Jun 21 01:23:19 2014
-Tor Fan, Tor Supporter, MX, Mexico, MX, TRUE, FALSE, No, http://fbnaia.homelinux.net/torproject/, https://fbnaia.homelinux.net/torproject/, , , http://fbnaia.homelinux.net/torproject/dist/, https://fbnaia.homelinux.net/torproject/dist/, , , Sat Jul 12 11:20:26 2014
+Tor Fan, Tor Supporter, MX, Mexico, MX, TRUE, FALSE, No, http://fbnaia.homelinux.net/torproject/, https://fbnaia.homelinux.net/torproject/, , , http://fbnaia.homelinux.net/torproject/dist/, https://fbnaia.homelinux.net/torproject/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://37.187.0.127/tormirror/, , , , http://37.187.0.127/tormirror/dist/, , , ,
Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://tor.minibofh.org/, , , , http://tor.minibofh.org/dist/, , , ,
Tor Fan, Tor Supporter, UK, United Kingdom, UK, TRUE, FALSE, No, http://tor.mage.me.uk/, , , , http://tor.mage.me.uk/dist/, , , ,
-webmaster AT askapache DOT com, AskApache, US, California, US, TRUE, FALSE, No, http://tor.askapache.com/, , , , http://tor.askapache.com/dist/, , , , Sat Jul 12 11:20:26 2014
+webmaster AT askapache DOT com, AskApache, US, California, US, TRUE, FALSE, No, http://tor.askapache.com/, , , , http://tor.askapache.com/dist/, , , , Sat Jul 19 23:55:06 2014
nsane2307 eml cc, tor-mirror.de, DE, Germany, Europe, TRUE, FALSE, No, http://tor-mirror.de/, https://tor-mirror.de/, , , http://tor-mirror.de/dist/, https://tor-mirror.de/dist/, , ,
-Tor Fan, hessmo, US, United States, US, TRUE, FALSE, No, http://mirror.hessmo.com/tor/, , , , http://mirror.hessmo.com/tor/dist/, , , , Sat Jul 12 11:20:26 2014
+Tor Fan, hessmo, US, United States, US, TRUE, FALSE, No, http://mirror.hessmo.com/tor/, , , , http://mirror.hessmo.com/tor/dist/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, No, http://tor.dev-random.de/, https://tor.dev-random.de/, , , http://tor.dev-random.de/dist/, https://tor.dev-random.de/dist/, , , Sun Mar 2 06:08:00 2014
-Tor Fan, India Tor Fans, IN, India, IN, TRUE, FALSE, No, http://www.torproject.org.in/, , , , http://www.torproject.org.in/dist/, , , , Thu Jul 10 17:50:40 2014
+Tor Fan, India Tor Fans, IN, India, IN, TRUE, FALSE, No, http://www.torproject.org.in/, , , , http://www.torproject.org.in/dist/, , , , Mon Jul 14 18:17:30 2014
mirror-admin(a)linsrv.net, linsrv, FR, France, Europe, TRUE, FALSE, No, http://mirrors.linsrv.net/torproject/, , mirrors.linsrv.net::pub/torproject, ftp://ftp.linsrv.net/pub/torproject/, http://mirrors.linsrv.net/torproject/dist/, , mirrors.linsrv.net::pub/torproject/dist, , Sat Apr 26 16:04:13 2014
-Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://tor.mirror.chekanov.net/, , , , http://tor.mirror.chekanov.net/dist/, , , , Sat Jul 12 11:20:26 2014
-http://sebastian.pfeifer.or.at/, TechAsk.IT, AT, Favoriten, Wien, TRUE, TRUE, No, http://www.unicorncloud.org/public/torproject.org/, https://www.unicorncloud.org/public/torproject.org/, , , http://www.unicorncloud.org/public/torproject.org/dist, https://www.unicorncloud.org/public/torproject.org/dist, , , Sat Jul 12 11:20:26 2014
-root AT amorphis DOT eu, Amorphis, NL, The Netherlands, Europe, TRUE, FALSE, No, http://tor.amorphis.eu/, , , , http://tor.amorphis.eu/dist/, , , , Thu Feb 6 17:28:24 2014
-hackthissite.org, HackThisSite.org, US, United States, US, TRUE, TRUE, No, http://tor.hackthissite.org/, https://tor.hackthissite.org/, , , http://mirror.hackthissite.org/tor, https://mirror.hackthissite.org/tor, , , Sat Jul 12 11:20:26 2014
+Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://tor.mirror.chekanov.net/, , , , http://tor.mirror.chekanov.net/dist/, , , , Sat Jul 19 23:55:06 2014
+http://sebastian.pfeifer.or.at/, TechAsk.IT, AT, Favoriten, Wien, TRUE, TRUE, No, http://www.unicorncloud.org/public/torproject.org/, https://www.unicorncloud.org/public/torproject.org/, , , http://www.unicorncloud.org/public/torproject.org/dist, https://www.unicorncloud.org/public/torproject.org/dist, , , Sat Jul 19 23:55:06 2014
+root AT amorphis DOT eu, Amorphis, NL, The Netherlands, Europe, TRUE, FALSE, No, http://tor.amorphis.eu/, , , , http://tor.amorphis.eu/dist/, , , , Thu Jul 17 01:48:00 2014
+hackthissite.org, HackThisSite.org, US, United States, US, TRUE, TRUE, No, http://tor.hackthissite.org/, https://tor.hackthissite.org/, , , http://mirror.hackthissite.org/tor, https://mirror.hackthissite.org/tor, , , Sat Jul 19 23:55:06 2014
citizen428 AT gmail DOT com, [[:bbs:]], DE, Germany, Europe, TRUE, FALSE, No, http://tor.blingblingsquad.net/, https://tor.blingblingsquad.net/, , , http://tor.blingblingsquad.net/dist/, https://tor.blingblingsquad.net/dist/, , ,
-Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, No, http://tor.linuxlounge.net/, https://tor.linuxlounge.net/, , , http://tor.linuxlounge.net/dist/, https://tor.linuxlounge.net/dist/, , , Sat Jul 12 11:20:26 2014
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, No, http://tor.linuxlounge.net/, https://tor.linuxlounge.net/, , , http://tor.linuxlounge.net/dist/, https://tor.linuxlounge.net/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, , , , , http://www.netgull.com/torproject/, , , ,
-paul at coffswifi.net, CoffsWiFi, AU, Australia and New Zealand, APNIC, TRUE, FALSE, No, http://torproject.coffswifi.net, , , , http://torproject.coffswifi.net/dist, , , , Sat Jul 12 11:20:26 2014
-Tor Fan, cyberarmy, AT, Austria, AT, TRUE, FALSE, No, http://tor.cyberarmy.at/, , , , , , , , Sat Jul 12 11:20:26 2014
-Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, No, http://torproject.cryptowars.info/, https://torproject.cryptowars.info/, rsync://torproject.cryptowars.info/, , http://torproject.cryptowars.info/dist/, https://torproject.cryptowars.info/dist/, , , Sat Jul 12 11:20:26 2014
-hostmaster AT zombiewerks DOT com, TheOnionRouter, IS, Iceland, Iceland, TRUE, FALSE, No, http://theonionrouter.com/, , , , http://theonionrouter.com/dist/, , , , Sat Jul 12 11:20:26 2014
+paul at coffswifi.net, CoffsWiFi, AU, Australia and New Zealand, APNIC, TRUE, FALSE, No, http://torproject.coffswifi.net, , , , http://torproject.coffswifi.net/dist, , , , Sat Jul 19 23:55:06 2014
+Tor Fan, cyberarmy, AT, Austria, AT, TRUE, FALSE, No, http://tor.cyberarmy.at/, , , , , , , , Sat Jul 19 23:55:06 2014
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, No, http://torproject.cryptowars.info/, https://torproject.cryptowars.info/, rsync://torproject.cryptowars.info/, , http://torproject.cryptowars.info/dist/, https://torproject.cryptowars.info/dist/, , , Sat Jul 19 23:55:06 2014
+hostmaster AT zombiewerks DOT com, TheOnionRouter, IS, Iceland, Iceland, TRUE, FALSE, No, http://theonionrouter.com/, , , , http://theonionrouter.com/dist/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, crazyhaze.de, DE, Germany, DE, TRUE, FALSE, No, http://tor.crazyhaze.de/, https://tor.crazyhaze.de/, , , http://tor.crazyhaze.de/dist/, https://tor.crazyhaze.de/dist/, , , Sat Jul 12 11:20:26 2014
-Tor Fan, chaos darmstadt, DE, Germany, Europe, TRUE, FALSE, No, http://mirrors.chaos-darmstadt.de/tor-mirror/, , , , http://mirrors.chaos-darmstadt.de/tor-mirror/dist/, , , , Sat Jul 12 11:20:26 2014
-Tor Fan, Soviet Anonymous, RU, Russia, RU, TRUE, FALSE, No, http://creep.im/tor, https://creep.im/tor, rsync://creep.im/tor, ftp://creep.im/mirrors/tor, http://creep.im/tor/dist/, https://creep.im/tor/dist/, rsync://creep.im/tor-dist, , Sat Jul 12 11:20:26 2014
+Tor Fan, chaos darmstadt, DE, Germany, Europe, TRUE, FALSE, No, http://mirrors.chaos-darmstadt.de/tor-mirror/, , , , http://mirrors.chaos-darmstadt.de/tor-mirror/dist/, , , , Sat Jul 19 23:55:06 2014
+Tor Fan, Soviet Anonymous, RU, Russia, RU, TRUE, FALSE, No, http://creep.im/tor, https://creep.im/tor, rsync://creep.im/tor, ftp://creep.im/mirrors/tor, http://creep.im/tor/dist/, https://creep.im/tor/dist/, rsync://creep.im/tor-dist, , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, , , , ftp://mirrors.go-parts.com/tor/, http://mirrors.go-parts.com/tor/dist/, , rsync://mirrors.go-parts.com/mirrors/tor/, , Wed Jan 8 16:41:17 2014
Tor Fan, NW Linux, US, WA, US, TRUE, FALSE, No, http://torproject.nwlinux.us/, , rsync://nwlinux.us/tor-web, , http://torproject.nwlinux.us/dist/, , rsync://nwlinux.us/tor-dist, ,
-Tor Fan, torservers, DE, Germany, DE, TRUE, FALSE, No, http://www.torservers.net/mirrors/torproject.org/, https://www.torservers.net/mirrors/torproject.org/, , , http://www.torservers.net/mirrors/torproject.org/dist/, https://www.torservers.net/mirrors/torproject.org/dist/, , http://hbpvnydyyjbmhx6b.onion/mirrors/torproject.org/, Sat Jul 12 11:20:26 2014
+Tor Fan, torservers, DE, Germany, DE, TRUE, FALSE, No, http://www.torservers.net/mirrors/torproject.org/, https://www.torservers.net/mirrors/torproject.org/, , , http://www.torservers.net/mirrors/torproject.org/dist/, https://www.torservers.net/mirrors/torproject.org/dist/, , http://hbpvnydyyjbmhx6b.onion/mirrors/torproject.org/, Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, NL, The Netherlands, NL, TRUE, FALSE, No, , , , , , https://www.coevoet.nl/tor/dist/, , ,
-Tor Fan, torland, GB, United Kingdom, GB, TRUE, FALSE, No, http://mirror.torland.me/torproject.org/, https://mirror.torland.me/torproject.org/, , , http://mirror.torland.me/torproject.org/dist/, https://mirror.torland.me/torproject.org/dist/, , , Sat Jul 12 11:20:26 2014
+Tor Fan, torland, GB, United Kingdom, GB, TRUE, FALSE, No, http://mirror.torland.me/torproject.org/, https://mirror.torland.me/torproject.org/, , , http://mirror.torland.me/torproject.org/dist/, https://mirror.torland.me/torproject.org/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://torproject.c3l.lu/, , , , http://torproject.c3l.lu/dist/, , , , Wed Dec 25 05:35:51 2013
-Tor Fan, Lightning-bolt.net, CZ, Czech Republic, CZ, TRUE, FALSE, No, http://torproject.lightning-bolt.net/, , , , http://torproject.lightning-bolt.net/dist/, , , , Sat Jul 12 11:20:26 2014
+Tor Fan, Lightning-bolt.net, CZ, Czech Republic, CZ, TRUE, FALSE, No, http://torproject.lightning-bolt.net/, , , , http://torproject.lightning-bolt.net/dist/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, LazyTiger, FR, France, FR, TRUE, FALSE, No, http://tor.taiga-san.net/, , , , http://tor.taiga-san.net/dist/, , , ,
Tor Fan, Tor Supporter, EE, Estonia, EE, TRUE, FALSE, No, http://tor.li/, https://tor.li/, , , http://tor.li/dist/, https://tor.li/dist/, , ,
-Tor Fan, homosu, SE, Sweden, SE, TRUE, FALSE, No, http://tor.homosu.net/, , , , http://tor.homosu.net/dist/, , , , Sat Jul 12 11:20:26 2014
-IceBear, myRL.net, IS, Iceland, IS, TRUE, FALSE, No, http://tor.myrl.net/, https://tor.myrl.net/, , , http://tor.myrl.net/dist/, https://tor.myrl.net/dist/, , , Sat Jul 12 11:20:26 2014
+Tor Fan, homosu, SE, Sweden, SE, TRUE, FALSE, No, http://tor.homosu.net/, , , , http://tor.homosu.net/dist/, , , , Sat Jul 19 23:55:06 2014
+IceBear, myRL.net, IS, Iceland, IS, TRUE, FALSE, No, http://tor.myrl.net/, https://tor.myrl.net/, , , http://tor.myrl.net/dist/, https://tor.myrl.net/dist/, , , Sat Jul 19 23:55:06 2014
Tor Fan, DevRandom, NL, The Netherlands, NL, TRUE, FALSE, No, http://devrandom.co/tor-mirror, https://devrandom.co/tor-mirror, , , http://devrandom.co/tor-mirror/dist, https://devrandom.co/tor-mirror/dist, , , Sun Feb 2 05:50:15 2014
-kiro AT userzap DOT de, Userzap, DE, Germany, DE, TRUE, FALSE, No, http://torprojekt.userzap.de, https://torprojekt.userzap.de, , , http://torprojekt.userzap.de/dist/, https://torprojekt.userzap.de/dist/, , , Sat Jul 12 11:20:26 2014
-tor(a)eprci.net, EPRCI, US, United States, US, TRUE, FALSE, NO, http://tor.eprci.net/, https://www.eprci.com/tor/, , , http://tor.eprci.net/dist/, https://www.eprci.com/tor/dist/, , , Sat Jul 12 11:20:26 2014
-tor(a)les.net, tor(a)les.net, CA, Canada, CA, TRUE, FALSE, NO, http://tor.les.net/, , , , http://tor.les.net/dist, , , , Sat Jul 12 11:20:26 2014
-Tor Fan, PW, DE, Germany, DE, TRUE, TRUE, NO, http://tor.pw.is/, , , , http://tor.pw.is/dist/, , , , Mon Jul 7 18:56:53 2014
-tor(a)stalkr.net, stalkr.net, FR, France, FR, TRUE, TRUE, NO, http://tor.stalkr.net/, https://tor.stalkr.net/, , , http://tor.stalkr.net/dist/, https://tor.stalkr.net/dist/, , , Sat Jul 12 11:20:26 2014
-maki(a)maki-chan.de, Maki Hoshisawa, DE, Germany, DE, TRUE, FALSE, NO, http://tor.mirrors.maki-chan.de/, , , , http://tor.mirrors.maki-chan.de/dist/, , , , Sat Jul 12 11:20:26 2014
-doemela[AT]cyberguerrilla[DOT]org, cYbergueRrilLa AnonyMous NeXus, DE, Germany, DE, TRUE, FALSE, NO, https://tor-mirror.cyberguerrilla.org, , , , https://tor-mirror.cyberguerrilla.org/dist/, , , http://6dvj6v5imhny3anf.onion, Sat Jul 12 11:20:26 2014
-contact(a)gtor.org, Gtor, DE, Germany, DE, TRUE, TRUE, NO, http://torproject.gtor.org/, https://torproject.gtor.org/, rsync://torproject.gtor.org/website-mirror/, , http://torproject.gtor.org/dist/, https://torproject.gtor.org/dist/, rsync://torproject.gtor.org/website-mirror/dist/, , Sat Jul 12 11:20:26 2014
+kiro AT userzap DOT de, Userzap, DE, Germany, DE, TRUE, FALSE, No, http://torprojekt.userzap.de, https://torprojekt.userzap.de, , , http://torprojekt.userzap.de/dist/, https://torprojekt.userzap.de/dist/, , , Sat Jul 19 23:55:06 2014
+tor(a)eprci.net, EPRCI, US, United States, US, TRUE, FALSE, NO, http://tor.eprci.net/, https://www.eprci.com/tor/, , , http://tor.eprci.net/dist/, https://www.eprci.com/tor/dist/, , , Sat Jul 19 23:55:06 2014
+tor(a)les.net, tor(a)les.net, CA, Canada, CA, TRUE, FALSE, NO, http://tor.les.net/, , , , http://tor.les.net/dist, , , , Sat Jul 19 23:55:06 2014
+Tor Fan, PW, DE, Germany, DE, TRUE, TRUE, NO, http://tor.pw.is/, , , , http://tor.pw.is/dist/, , , , Sat Jul 19 23:55:06 2014
+tor(a)stalkr.net, stalkr.net, FR, France, FR, TRUE, TRUE, NO, http://tor.stalkr.net/, https://tor.stalkr.net/, , , http://tor.stalkr.net/dist/, https://tor.stalkr.net/dist/, , , Sat Jul 19 23:55:06 2014
+maki(a)maki-chan.de, Maki Hoshisawa, DE, Germany, DE, TRUE, FALSE, NO, http://tor.mirrors.maki-chan.de/, , , , http://tor.mirrors.maki-chan.de/dist/, , , , Sat Jul 19 23:55:06 2014
+doemela[AT]cyberguerrilla[DOT]org, cYbergueRrilLa AnonyMous NeXus, DE, Germany, DE, TRUE, FALSE, NO, https://tor-mirror.cyberguerrilla.org, , , , https://tor-mirror.cyberguerrilla.org/dist/, , , http://6dvj6v5imhny3anf.onion, Sat Jul 19 23:55:06 2014
+contact(a)gtor.org, Gtor, DE, Germany, DE, TRUE, TRUE, NO, http://torproject.gtor.org/, https://torproject.gtor.org/, rsync://torproject.gtor.org/website-mirror/, , http://torproject.gtor.org/dist/, https://torproject.gtor.org/dist/, rsync://torproject.gtor.org/website-mirror/dist/, , Sat Jul 19 23:55:06 2014
mirrors(a)dev-null.io, dev-null.io, NL, The Netherlands, NL, TRUE, FALSE, NO, http://tor.dev-null.io/, https://tor.dev-null.io/, , , http://tor.dev-null.io/dist/, https://tor.dev-null.io/dist/, , , Thu Jan 30 02:50:25 2014
Tor Fan, Quintex Alliance Consulting, US, United States, US, TRUE, FALSE, NO, http://tor.mirror.quintex.com, , rsync://tor.mirror.quintex.com::tor, ftp://mirror.quintex.com/tor/, http://tor.mirror.quintex.com/dist, , rsync://mirror.quintex.com::tordist, , Sat Feb 1 14:21:23 2014
-SDL, SDL, US, United States, US, TRUE, TRUE, NO, http://torproject.nexiom.net, https://torproject.nexiom.net, , , http://torproject.nexiom.net, https://torproject.nexiom.net/dist, , , Sat Jul 12 11:20:26 2014
+SDL, SDL, US, United States, US, TRUE, TRUE, NO, http://torproject.nexiom.net, https://torproject.nexiom.net, , , http://torproject.nexiom.net, https://torproject.nexiom.net/dist, , , Sat Jul 19 23:55:06 2014
MacLemon, MacLemon, AT, Austria, AT, TRUE, FALSE, NO, http://tor-anonymizer.maclemon.at/, https://tor-anonymizer.maclemon.at/, , , http://tor-anonymizer.maclemon.at/dist/, https://tor-anonymizer.maclemon.at/dist/, , , Tue Jun 10 16:15:38 2014
Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, NO, http://tor.externenprüfung-nichtschüler.de/, , , , http://tor.externenprüfung-nichtschüler.de/dist/, , , ,
-Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, TRUE, NO, http://mirror.velcommuta.de/tor/, https://mirror.velcommuta.de/tor/, , , http://mirror.velcommuta.de/tor/dist/, https://mirror.velcommuta.de/tor/dist/, , , Sat Jul 12 11:20:26 2014
-Piratenpartei Bayern, Piratenpartei Bayern, DE, Germany, DE, TRUE, FALSE, NO, http://tormirror.piratenpartei-bayern.de, https://tormirror.piratenpartei-bayern.de, , , http://tormirror.piratenpartei-bayern.de/dist/, http://tormirror.piratenpartei-bayern.de/dist/, , , Sat Jul 12 11:20:26 2014
-Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, TRUE, NO, http://tor.hoi-polloi.org, http://tor.hossi-polloiorg, , , http://tor.hoi-polloi.org/dist/, http://tor.hosi-polloi.or/dist/g, , , Sat Jul 12 11:20:26 2014
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, TRUE, NO, http://mirror.velcommuta.de/tor/, https://mirror.velcommuta.de/tor/, , , http://mirror.velcommuta.de/tor/dist/, https://mirror.velcommuta.de/tor/dist/, , , Sat Jul 19 23:55:06 2014
+Piratenpartei Bayern, Piratenpartei Bayern, DE, Germany, DE, TRUE, FALSE, NO, http://tormirror.piratenpartei-bayern.de, https://tormirror.piratenpartei-bayern.de, , , http://tormirror.piratenpartei-bayern.de/dist/, http://tormirror.piratenpartei-bayern.de/dist/, , , Sat Jul 19 23:55:06 2014
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, TRUE, NO, http://tor.hoi-polloi.org, http://tor.hossi-polloiorg, , , http://tor.hoi-polloi.org/dist/, http://tor.hosi-polloi.or/dist/g, , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, NO, http://tor-mirror.snurn.de, , , , http://tor-mirror.snurn.de/dist/, , , , Thu Mar 27 13:13:23 2014
-EFF, EFF, US, United States, US, TRUE, FALSE, NO, https://tor.eff.org, https://tor.eff.org, , , https://tor.eff.org/dist/, https://tor.eff.org/dist/, , , Sat Jul 12 11:20:26 2014
-Tor Fan, Tor Supporter, GR, Greece, GR, TRUE, TRUE, NO, https://tor.void.gr, https://tor.void.gr, , , https://tor.void.gr/dist/, https://tor.void.gr/dist/, , , Sat Jul 12 11:20:26 2014
-Ich Eben, Tor Supporter, DE, Germany, DE, TRUE, TRUE, No, http://reichster.de/mirrors/torproject.org/, https://reichster.de/mirrors/torproject.org, , , http://reichster.de/mirrors/torproject.org/dist/, https://reichster.de/mirrors/torproject.org/dist/, , , Sat Jul 12 11:20:26 2014
-jlgaddis AT gnu DOT org, Evil Routers, US, United States, US, TRUE, FALSE, No, http://tor1.evilrouters.net/, , , , http://tor1.evilrouters.net/dist/, , , , Sat Jul 12 11:20:26 2014
-tor AT miglix DOT eu, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, NO, http://tor.miglix.eu, https://tor.miglix.eu, , , http://tor.miglix.eu/dist/, https://tor.miglix.eu/dist/, , , Sat Jul 12 11:20:26 2014
-tor TA ninurta TOD name, TorNinurtaName, AT, Austria, AT, TRUE, TRUE, no, http://tor.ninurta.name/, , , , http://tor.ninurta.name/dist/, , , , Sat Jul 12 11:20:26 2014
+EFF, EFF, US, United States, US, TRUE, FALSE, NO, https://tor.eff.org, https://tor.eff.org, , , https://tor.eff.org/dist/, https://tor.eff.org/dist/, , , Sat Jul 19 23:55:06 2014
+Tor Fan, Tor Supporter, GR, Greece, GR, TRUE, TRUE, NO, https://tor.void.gr, https://tor.void.gr, , , https://tor.void.gr/dist/, https://tor.void.gr/dist/, , , Sat Jul 19 23:55:06 2014
+Ich Eben, Tor Supporter, DE, Germany, DE, TRUE, TRUE, No, http://reichster.de/mirrors/torproject.org/, https://reichster.de/mirrors/torproject.org, , , http://reichster.de/mirrors/torproject.org/dist/, https://reichster.de/mirrors/torproject.org/dist/, , , Sat Jul 19 23:55:06 2014
+jlgaddis AT gnu DOT org, Evil Routers, US, United States, US, TRUE, FALSE, No, http://tor1.evilrouters.net/, , , , http://tor1.evilrouters.net/dist/, , , , Sat Jul 19 23:55:06 2014
+tor AT miglix DOT eu, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, NO, http://tor.miglix.eu, https://tor.miglix.eu, , , http://tor.miglix.eu/dist/, https://tor.miglix.eu/dist/, , , Sat Jul 19 23:55:06 2014
+tor TA ninurta TOD name, TorNinurtaName, AT, Austria, AT, TRUE, TRUE, no, http://tor.ninurta.name/, , , , http://tor.ninurta.name/dist/, , , , Sat Jul 19 23:55:06 2014
Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, no, http://tor.wasifmalik.com/, , , , http://tor.wasifmalik.com/dist/, , , , Sat Apr 26 16:04:13 2014
-fr33tux <AT> general-changelog-team.fr, Tor Supporter, FR, France, FR, TRUE, TRUE, No, http://tor.fr33tux.org, https://tor.fr33tux.org, , , http://tor.fr33tux.org/dist/, https://tor.fr33tux.org/dist/, , , Sat Jul 12 11:20:26 2014
+fr33tux <AT> general-changelog-team.fr, Tor Supporter, FR, France, FR, TRUE, TRUE, No, http://tor.fr33tux.org, https://tor.fr33tux.org, , , http://tor.fr33tux.org/dist/, https://tor.fr33tux.org/dist/, , , Sat Jul 19 23:55:06 2014
mirror-service(a)netcologne.de, NetCologne GmbH, DE, NRW, TRUE, TRUE, No, http://mirror.netcologne.de/torproject.org, , rsync://mirror.netcologne.de/torproject.org, ftp://mirror.netcologne.de/torproject.org/, http://mirror.netcologne.de/torproject.org/dist, , rsync://mirror.netcologne.de/torproject.org/dist, , ,
-sebastian(at)bobrecki(dot)pl, Sebastian M. Bobrecki, PL, Poland, Europe, TRUE, FALSE, No, http://tor.iv.net.pl, https://tor.iv.net.pl, , , http://tor.iv.net.pl/dist/, https://tor.iv.net.pl/dist/, , , Sat Jul 12 11:20:26 2014
+sebastian(at)bobrecki(dot)pl, Sebastian M. Bobrecki, PL, Poland, Europe, TRUE, FALSE, No, http://tor.iv.net.pl, https://tor.iv.net.pl, , , http://tor.iv.net.pl/dist/, https://tor.iv.net.pl/dist/, , , Sat Jul 19 23:55:06 2014
admin AT netgull DOT com, NetGull, US, United States, North America, TRUE, TRUE, No, , , , , http://www.netgull.com/torproject/, , , ,
nick at calyx dot com, The Calyx Institute, US, United States, North America, TRUE, FALSE, No, http://tor.calyxinstitute.org, https://tor.calyxinstitute.org, , , http://tor.calyxinstitute.org/dist/, https://tor.calyxinstitute.org/dist/, , http://tmdrhl4e4anhsjc5.onion, Thu Jun 5 20:11:09 2014
-tor-mirror AT rdns DOT cc, d0wn.biz, FR, France, Europe, TRUE, FALSE, No, http://tor.static.lu, https://tor.static.lu, , , http://tor.static.lu/dist/, https://tor.static.lu/dist/, , , Sat Jul 12 11:20:26 2014
-calebcenter(a)live.com, alebcay.tk, US, United States, US, TRUE, FALSE, NO, http://tor.alebcay.tk, , rsync://alebcay.tk/tor, ftp://ftp.alebcay.tk, http://tor.alebcay.tk/dist, , , , Sat Jul 12 11:20:26 2014
-kevinmg(a)pressfreedomfoundation.org, Freedom of the Press Foundation, US, United States, US, True, False, No, http://tor.pressfreedomfoundation.org, https://tor.pressfreedomfoundation.org, , , http://tor.pressfreedomfoundation.org/dist/, https://tor.pressfreedomfoundation.org/dist/, , , Sat Jul 12 11:20:26 2014
-tor(a)moparisthebest.com, moparisthebest.com, DE, Germany, Europe, TRUE, TRUE, No, http://www.moparisthebest.com/tor/, https://www.moparisthebest.com/tor/, , , http://www.moparisthebest.com/tor/dist/, https://www.moparisthebest.com/tor/dist/, , , Sat Jul 12 11:20:26 2014
-tor(a)fodt.it // FoDT.it Webteam, FoDT.it, AT, Austria, Europe, TRUE, FALSE, No, http://tor.fodt.it, https://tor.fodt.it, , ftp://ftp.fodt.it/pub/mirrors/torproject.org/, http://tor.fodt.it/dist/, https://tor.fodt.it/dist/, , , Sat Jul 12 11:20:26 2014
-Sebastian, Maxanoo, NL, The Netherlands, Amsterdam, TRUE, FALSE, NO, http://tor.maxanoo.com/, , , , http://tor.maxanoo.com/dist/, , , , Sat Jul 12 11:20:26 2014
-rorrim AT ayo DOT tl, Tor Supporter, IS, Iceland, Europe, TRUE, TRUE, No, http://ayo.tl/tor/, https://ayo.tl/tor/, , , http://ayo.tl/tor/dist/, https://ayo.tl/tor/dist/, , , Sat Jul 12 11:20:26 2014
+tor-mirror AT rdns DOT cc, d0wn.biz, FR, France, Europe, TRUE, FALSE, No, http://tor.static.lu, https://tor.static.lu, , , http://tor.static.lu/dist/, https://tor.static.lu/dist/, , , Sat Jul 19 23:55:06 2014
+calebcenter(a)live.com, alebcay.tk, US, United States, US, TRUE, FALSE, NO, http://tor.alebcay.tk, , rsync://alebcay.tk/tor, ftp://ftp.alebcay.tk, http://tor.alebcay.tk/dist, , , , Sat Jul 19 23:55:06 2014
+kevinmg(a)pressfreedomfoundation.org, Freedom of the Press Foundation, US, United States, US, True, False, No, http://tor.pressfreedomfoundation.org, https://tor.pressfreedomfoundation.org, , , http://tor.pressfreedomfoundation.org/dist/, https://tor.pressfreedomfoundation.org/dist/, , , Sat Jul 19 23:55:06 2014
+tor(a)moparisthebest.com, moparisthebest.com, DE, Germany, Europe, TRUE, TRUE, No, http://www.moparisthebest.com/tor/, https://www.moparisthebest.com/tor/, , , http://www.moparisthebest.com/tor/dist/, https://www.moparisthebest.com/tor/dist/, , , Sat Jul 19 23:55:06 2014
+tor(a)fodt.it // FoDT.it Webteam, FoDT.it, AT, Austria, Europe, TRUE, FALSE, No, http://tor.fodt.it, https://tor.fodt.it, , ftp://ftp.fodt.it/pub/mirrors/torproject.org/, http://tor.fodt.it/dist/, https://tor.fodt.it/dist/, , , Sat Jul 19 23:55:06 2014
+Sebastian, Maxanoo, NL, The Netherlands, Amsterdam, TRUE, FALSE, NO, http://tor.maxanoo.com/, , , , http://tor.maxanoo.com/dist/, , , , Sat Jul 19 23:55:06 2014
+rorrim AT ayo DOT tl, Tor Supporter, IS, Iceland, Europe, TRUE, TRUE, No, http://ayo.tl/tor/, https://ayo.tl/tor/, , , http://ayo.tl/tor/dist/, https://ayo.tl/tor/dist/, , , Sat Jul 19 23:55:06 2014
admin AT nuclear DASH weapons DOT net, Setec Administrator, US, Texas, Austin, TRUE, FALSE, No, http://tor.nuclear-weapons.net, https://tor.nuclear-weapons.net, , , , http://tor.nuclear-weapons.net/dist, https://tor.nuclear-weapons.net/dist, , Wed Jun 25 23:55:19 2014
-stefano.fenoglio AT gmail DOT com, Tor Supporter, IT, Italy, Europe, TRUE, FALSE, No, http://tor.stefanof.com, , , , , , http://tor.stefanof.com/dist, , Thu Jul 10 17:50:40 2014
+stefano.fenoglio AT gmail DOT com, Tor Supporter, IT, Italy, Europe, TRUE, FALSE, No, http://tor.stefanof.com, , , , , , http://tor.stefanof.com/dist, , Sat Jul 19 23:55:06 2014
mirrors[at]ip-connect[dot]vn[dot]ua, IP-Connect LLC, UA, VN, TRUE, TRUE, Yes, http://torproject.ip-connect.vn.ua, , rsync://torproject.ip-connect.vn.ua/torproject, ftp://torproject.ip-connect.vn.ua/mirror/torproject/, http://torproject.ip-connect.vn.ua/dist, , rsync://torproject.ip-connect.vn.ua/torproject/dist, , ,
-Tor Fan, tor.d4rkn3t.com, US, United States, US, TRUE, TRUE, No, http://tor.d4rkn3t.com/, , , , http://tor.d4rkn3t.com/dist/, , , , Sat Jul 12 11:20:26 2014
-Jacob Henner, Anatomical Networks, US, United States, US, TRUE, TRUE, TRUE, http://tor.ventricle.us/, , , , http://tor.ventricle.us/dist/, , , , Sat Jul 12 11:20:26 2014
-webmaster[at]hackabit.nl,Hackabit.nl,NL,The Netherlands,Europe,TRUE,FALSE,No,http://hackabit.nl/tor/,https://hackabit.nl/tor/,,,http://hackabit.nl/tor/dist/,https://hackabit.nl/tor/dist/,,,
-noc AT bbln DOT org, BBLN, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror2.bbln.org/torproject/, https://mirror2.bbln.org/torproject/, rsync://mirror2.bbln.org/torproject/, ftp://mirror2.bbln.org/torproject/, http://mirror2.bbln.org/torproject/dist/, https://mirror2.bbln.org/torproject/dist/, rsync://mirror2.bbln.org/torproject/dist/,,
-noc AT bbln DOT org, BBLN, FR, France, Europe, TRUE, TRUE, No, http://mirror.bbln.org/torproject/, https://mirror.bbln.org/torproject/, rsync://mirror.bbln.org/torproject/, ftp://mirror.bbln.org/torproject/, http://mirror.bbln.org/torproject/dist/, https://mirror.bbln.org/torproject/dist/, rsync://mirror.bbln.org/torproject/dist/,,
+Tor Fan, tor.d4rkn3t.com, US, United States, US, TRUE, TRUE, No, http://tor.d4rkn3t.com/, , , , http://tor.d4rkn3t.com/dist/, , , , Sat Jul 19 23:55:06 2014
+Jacob Henner, Anatomical Networks, US, United States, US, TRUE, TRUE, TRUE, http://tor.ventricle.us/, , , , http://tor.ventricle.us/dist/, , , , Sat Jul 19 23:55:06 2014
+webmaster[at]hackabit.nl, Hackabit.nl, NL, The Netherlands, Europe, TRUE, FALSE, No, http://hackabit.nl/tor/, https://hackabit.nl/tor/, , , http://hackabit.nl/tor/dist/, https://hackabit.nl/tor/dist/, , ,
+noc AT bbln DOT org, BBLN, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror2.bbln.org/torproject/, https://mirror2.bbln.org/torproject/, rsync://mirror2.bbln.org/torproject/, ftp://mirror2.bbln.org/torproject/, http://mirror2.bbln.org/torproject/dist/, https://mirror2.bbln.org/torproject/dist/, rsync://mirror2.bbln.org/torproject/dist/, , Sat Jul 19 23:55:06 2014
+noc AT bbln DOT org, BBLN, FR, France, Europe, TRUE, TRUE, No, http://mirror.bbln.org/torproject/, https://mirror.bbln.org/torproject/, rsync://mirror.bbln.org/torproject/, ftp://mirror.bbln.org/torproject/, http://mirror.bbln.org/torproject/dist/, https://mirror.bbln.org/torproject/dist/, rsync://mirror.bbln.org/torproject/dist/, , Sat Jul 19 23:55:06 2014
1
0

20 Jul '14
Author: phobos
Date: 2014-07-20 21:51:19 +0000 (Sun, 20 Jul 2014)
New Revision: 26877
Modified:
website/trunk/include/tor-mirrors.csv
Log:
add new bbln mirrors.
Modified: website/trunk/include/tor-mirrors.csv
===================================================================
--- website/trunk/include/tor-mirrors.csv 2014-07-18 23:09:11 UTC (rev 26876)
+++ website/trunk/include/tor-mirrors.csv 2014-07-20 21:51:19 UTC (rev 26877)
@@ -104,3 +104,5 @@
Tor Fan, tor.d4rkn3t.com, US, United States, US, TRUE, TRUE, No, http://tor.d4rkn3t.com/, , , , http://tor.d4rkn3t.com/dist/, , , , Sat Jul 12 11:20:26 2014
Jacob Henner, Anatomical Networks, US, United States, US, TRUE, TRUE, TRUE, http://tor.ventricle.us/, , , , http://tor.ventricle.us/dist/, , , , Sat Jul 12 11:20:26 2014
webmaster[at]hackabit.nl,Hackabit.nl,NL,The Netherlands,Europe,TRUE,FALSE,No,http://hackabit.nl/tor/,https://hackabit.nl/tor/,,,http://hackabit.nl/tor/dist/,https://hackabit.nl/tor/dist/,,,
+noc AT bbln DOT org, BBLN, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror2.bbln.org/torproject/, https://mirror2.bbln.org/torproject/, rsync://mirror2.bbln.org/torproject/, ftp://mirror2.bbln.org/torproject/, http://mirror2.bbln.org/torproject/dist/, https://mirror2.bbln.org/torproject/dist/, rsync://mirror2.bbln.org/torproject/dist/,,
+noc AT bbln DOT org, BBLN, FR, France, Europe, TRUE, TRUE, No, http://mirror.bbln.org/torproject/, https://mirror.bbln.org/torproject/, rsync://mirror.bbln.org/torproject/, ftp://mirror.bbln.org/torproject/, http://mirror.bbln.org/torproject/dist/, https://mirror.bbln.org/torproject/dist/, rsync://mirror.bbln.org/torproject/dist/,,
1
0