[tor-commits] [atlas/master] Adds an alert when a new relay to link to lifecycle blog post (Closes: #23767)

irl at torproject.org irl at torproject.org
Mon Oct 9 02:11:09 UTC 2017


commit d03cdfba164134af17cfd71a361b798866e604d3
Author: Iain R. Learmonth <irl at fsfe.org>
Date:   Mon Oct 9 03:10:32 2017 +0100

    Adds an alert when a new relay to link to lifecycle blog post (Closes: #23767)
---
 js/models/relay.js            | 17 +++++++++++++++++
 templates/details/router.html |  5 ++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/js/models/relay.js b/js/models/relay.js
index 62b8d21..2f7b80d 100644
--- a/js/models/relay.js
+++ b/js/models/relay.js
@@ -125,6 +125,21 @@ define([
             return output
 
         },
+        is_new: function(utctime) {
+            var hr_magic = [10];
+            var t = utctime.split(" ");
+            var utcd = t[0].split("-");
+            var utct = t[1].split(":");
+            var d = new Date(utcd[0], utcd[1]-1, utcd[2], utct[0], utct[1], utct[2]);
+            var now = new Date();
+            now = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),  now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
+            var diff = now-d;
+            var secs = Math.round(diff/1000);
+            var mins = Math.floor(secs/60);
+            var hours = Math.floor(mins/60);
+            var days = Math.floor(hours/24);
+            return days < 15;
+        },
         lookup: function(options) {
             var success = options.success;
             var error = options.error;
@@ -171,6 +186,8 @@ define([
                     relay.country = relay.country ? relay.country.toLowerCase() : null;
                     relay.countryname = relay.country ? CountryCodes[relay.country] : null;
                     relay.first_seen = relay.first_seen ? relay.first_seen : null;
+                    relay.age = relay.first_seen ? model.parsedate(relay.first_seen).hrfull : null;
+                    relay.new_relay = relay.first_seen ? model.is_new(relay.first_seen) : null;
                     relay.uptime = relay.last_restarted ? model.parsedate(relay.last_restarted) : null;
                     relay.uptime_hr = relay.last_restarted ? relay.uptime.hr : null;
                     relay.uptime_hrfull = relay.last_restarted ? relay.uptime.hrfull : null;
diff --git a/templates/details/router.html b/templates/details/router.html
index 3cab9b2..591b6cc 100644
--- a/templates/details/router.html
+++ b/templates/details/router.html
@@ -10,6 +10,9 @@
 <div class="page-header">
 <h2>General <small>Overall information on the Tor relay</small></h2>
 </div>
+<% if (relay.get('new_relay') === true) {%>
+<div class="alert alert-info">This relay appears to be less than 2 weeks old. <a href="https://blog.torproject.org/lifecycle-new-relay">This blog post</a> explains the lifecycle of a new relay, and why it will not be immediately fully used to capacity.</div>
+<% } %>
 <% if (relay.get('recommended_version') === false) { %>
 <div class="alert alert-danger">This relay is running an outdated Tor version and should be updated to a recent release of Tor that may contain important fixes.</div>
 <% } %>
@@ -133,7 +136,7 @@
     <dd><%= relay.get('as_name') ? _.escape(relay.get('as_name')) : "unknown" %></dd>
 
     <dt><span class="tip" title="The first time that this relay was seen online.">First Seen</span></dt>
-    <dd><%= relay.get('first_seen') %></dd>
+    <dd><%= relay.get('first_seen') %> (<%= relay.get('age') %>)</dd>
 
     <dt><span class="tip" title="Date and time when the relay was last (re-)started.">Last Restarted</span></dt>
     <dd><%= relay.get('last_restarted') %></dd>



More information about the tor-commits mailing list