diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java index ba977a6e8005b78a1fd78bfd747bb47119be3117..313018db9561615c0f83385fb4fed4140e52cbd5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java @@ -7,6 +7,7 @@ public class NetDbHelper extends HelperBase { private String _routerPrefix; private String _version; private String _country; + private String _family; private int _full; private boolean _lease; private boolean _debug; @@ -49,6 +50,12 @@ public class NetDbHelper extends HelperBase { _country = DataHelper.stripHTML(c); // XSS } + /** @since 0.9.28 */ + public void setFamily(String c) { + if (c != null) + _family = DataHelper.stripHTML(c); // XSS + } + public void setFull(String f) { try { _full = Integer.parseInt(f); @@ -75,8 +82,8 @@ public class NetDbHelper extends HelperBase { NetDbRenderer renderer = new NetDbRenderer(_context); try { renderNavBar(); - if (_routerPrefix != null || _version != null || _country != null) - renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country); + if (_routerPrefix != null || _version != null || _country != null || _family != null) + renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country, _family); else if (_lease) renderer.renderLeaseSetHTML(_out, _debug); else if (_full == 3) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java index c9a34ece06d5e9f7764d32e6b9b95b0a3fc84fef..05ef0c1ac443ab5198b4ba5e6a55273ee6dd2df5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -85,8 +85,10 @@ class NetDbRenderer { * @param routerPrefix may be null. "." for our router only * @param version may be null * @param country may be null + * @param family may be null */ - public void renderRouterInfoHTML(Writer out, String routerPrefix, String version, String country) throws IOException { + public void renderRouterInfoHTML(Writer out, String routerPrefix, String version, + String country, String family) throws IOException { StringBuilder buf = new StringBuilder(4*1024); if (".".equals(routerPrefix)) { renderRouterInfo(buf, _context.router().getRouterInfo(), true, true); @@ -97,7 +99,8 @@ class NetDbRenderer { Hash key = ri.getIdentity().getHash(); if ((routerPrefix != null && key.toBase64().startsWith(routerPrefix)) || (version != null && version.equals(ri.getVersion())) || - (country != null && country.equals(_context.commSystem().getCountry(key)))) { + (country != null && country.equals(_context.commSystem().getCountry(key))) || + (family != null && family.equals(ri.getOption("family")))) { renderRouterInfo(buf, ri, false, true); notFound = false; } @@ -110,6 +113,8 @@ class NetDbRenderer { buf.append(version); else if (country != null) buf.append(country); + else if (family != null) + buf.append(_t("Family")).append(' ').append(family); buf.append(' ').append(_t("not found in network database")); } } 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 fb45e0cb27680cd61a5d46529a4b08e298b4dd04..703e93958a3cf0c82a14564138b010a8626e24b1 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java @@ -588,8 +588,9 @@ class SybilRenderer { boolean found = false; for (String s : foo) { int count = oc.count(s); - buf.append("<p><b>").append(count).append(" floodfills in declared family \"").append(DataHelper.escapeHTML(s) + '"') - .append("</b></p>"); + String ss = DataHelper.escapeHTML(s); + buf.append("<p><b>").append(count).append(" floodfills in declared family \"<a href=\"/netdb?fam=") + .append(ss).append("\">").append(ss).append("</a>\"</b></p>"); for (RouterInfo info : ris) { String fam = info.getOption("family"); if (fam == null) diff --git a/apps/routerconsole/jsp/netdb.jsp b/apps/routerconsole/jsp/netdb.jsp index 1b9be5d03fef789276c176b2f1a6476fa421036c..c323aa760b4e8fb9c3d5f90935f4f6d4ef42252e 100644 --- a/apps/routerconsole/jsp/netdb.jsp +++ b/apps/routerconsole/jsp/netdb.jsp @@ -25,5 +25,6 @@ <jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter(\"l\")%>" /> <jsp:setProperty name="netdbHelper" property="version" value="<%=request.getParameter(\"v\")%>" /> <jsp:setProperty name="netdbHelper" property="country" value="<%=request.getParameter(\"c\")%>" /> + <jsp:setProperty name="netdbHelper" property="family" value="<%=request.getParameter(\"fam\")%>" /> <jsp:getProperty name="netdbHelper" property="netDbSummary" /> </div></div></body></html>