diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java index e2f0d4104e..8eba139956 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java @@ -154,9 +154,23 @@ class SybilRenderer { StringBuilder buf = new StringBuilder(4*1024); buf.append("

This is an experimental network database tool for debugging and analysis. Do not panic even if you see warnings below. " + "Possible \"threats\" are summarized at the bottom, however these are unlikely to be real threats. " + - "If you see anything you would like to discuss with the devs, contact us on IRC #i2p-dev.

"); + "If you see anything you would like to discuss with the devs, contact us on IRC #i2p-dev.

" + + ""); + renderRouterInfo(buf, _context.router().getRouterInfo(), null, true, false); - buf.append("

Known Floodfills: ").append(ris.size()).append("

"); + buf.append("

Known Floodfills: ").append(ris.size()).append("

"); double tot = 0; int count = 200; @@ -188,17 +202,18 @@ class SybilRenderer { renderPairDistance(out, buf, ris, points); // Distance to our router analysis - buf.append("

Closest Floodfills to Our Routing Key (Where we Store our RI)

"); + buf.append("

Closest Floodfills to Our Routing Key (Where we Store our RI)

"); renderRouterInfoHTML(out, buf, ourRKey, avgMinDist, ris, points); RouterKeyGenerator rkgen = _context.routerKeyGenerator(); Hash nkey = rkgen.getNextRoutingKey(us); - buf.append("

Closest Floodfills to Tomorrow's Routing Key (Where we will Store our RI)

"); + buf.append("

Closest Floodfills to Tomorrow's Routing Key (Where we will Store our RI)

"); renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points); - buf.append("

Closest Floodfills to Our Router Hash (DHT Neighbors if we are Floodfill)

"); + buf.append("

Closest Floodfills to Our Router Hash (DHT Neighbors if we are Floodfill)

"); renderRouterInfoHTML(out, buf, us, avgMinDist, ris, points); // Distance to our published destinations analysis + buf.append("

Floodfills Close to Our Destinations

"); Map clientInboundPools = _context.tunnelManager().getInboundClientPools(); List destinations = new ArrayList(clientInboundPools.keySet()); boolean debug = _context.getBooleanProperty(HelperBase.PROP_ADVANCED); @@ -227,7 +242,7 @@ class SybilRenderer { if (!points.isEmpty()) { List warns = new ArrayList(points.keySet()); Collections.sort(warns, new PointsComparator(points)); - buf.append("

Routers with Most Threat Points

"); + buf.append("

Routers with Most Threat Points

"); for (Hash h : warns) { RouterInfo ri = _context.netDb().lookupRouterInfoLocally(h); if (h == null) @@ -286,7 +301,7 @@ class SybilRenderer { double avg = total / (sz * sz / 2); buf.append("

Average Floodfill Distance is ").append(fmt.format(avg)).append("

"); - buf.append("

Closest Floodfill Pairs by Hash

"); + buf.append("

Closest Floodfill Pairs by Hash

"); for (Pair p : pairs) { double distance = biLog2(p.dist); double point = MIN_CLOSE - distance; @@ -363,7 +378,7 @@ class SybilRenderer { byte[] ourIP = getIP(us); if (ourIP == null) return; - buf.append("

Floodfills close to Our IP

"); + buf.append("

Floodfills close to Our IP

"); boolean found = false; for (RouterInfo info : ris) { byte[] ip = getIP(info); @@ -396,7 +411,7 @@ class SybilRenderer { } private void renderIPGroups32(Writer out, StringBuilder buf, List ris, Map points) throws IOException { - buf.append("

Floodfills with the Same IP

"); + buf.append("

Floodfills with the Same IP

"); ObjectCounter oc = new ObjectCounter(); for (RouterInfo info : ris) { byte[] ip = getIP(info); @@ -449,7 +464,7 @@ class SybilRenderer { } private void renderIPGroups24(Writer out, StringBuilder buf, List ris, Map points) throws IOException { - buf.append("

Floodfills in the Same /24 (2 minimum)

"); + buf.append("

Floodfills in the Same /24 (2 minimum)

"); ObjectCounter oc = new ObjectCounter(); for (RouterInfo info : ris) { byte[] ip = getIP(info); @@ -498,7 +513,7 @@ class SybilRenderer { } private void renderIPGroups16(Writer out, StringBuilder buf, List ris, Map points) throws IOException { - buf.append("

Floodfills in the Same /16 (4 minimum)

"); + buf.append("

Floodfills in the Same /16 (4 minimum)

"); ObjectCounter oc = new ObjectCounter(); for (RouterInfo info : ris) { byte[] ip = getIP(info); @@ -594,9 +609,9 @@ class SybilRenderer { long heard = prof.getFirstHeardAbout(); if (heard > 0) { long age = Math.max(now - heard, 1); - if (age < DAY) { - // .125 point for every hour under 24, max 3 points - double point = Math.min(3.0d, (DAY - age) / (DAY / 3.0d)); + if (age < 2 * DAY) { + // .125 point for every hour under 48, max 6 points + double point = Math.min(6.0d, (2 * DAY - age) / (2 * DAY / 6.0d)); addPoints(points, h, point, "First heard about: " + _t("{0} ago", DataHelper.formatDuration2(age))); }