Console: Click on version or country in /netdb table to get list of those routers

This commit is contained in:
zzz
2015-06-03 16:55:01 +00:00
parent 9304cb2bbc
commit e2ca74963f
3 changed files with 44 additions and 10 deletions

View File

@ -5,6 +5,8 @@ import net.i2p.data.DataHelper;
public class NetDbHelper extends HelperBase { public class NetDbHelper extends HelperBase {
private String _routerPrefix; private String _routerPrefix;
private String _version;
private String _country;
private int _full; private int _full;
private boolean _lease; private boolean _lease;
private boolean _debug; private boolean _debug;
@ -33,6 +35,18 @@ public class NetDbHelper extends HelperBase {
_routerPrefix = DataHelper.stripHTML(r); // XSS _routerPrefix = DataHelper.stripHTML(r); // XSS
} }
/** @since 0.9.21 */
public void setVersion(String v) {
if (v != null)
_version = DataHelper.stripHTML(v); // XSS
}
/** @since 0.9.21 */
public void setCountry(String c) {
if (c != null)
_country = DataHelper.stripHTML(c); // XSS
}
public void setFull(String f) { public void setFull(String f) {
try { try {
_full = Integer.parseInt(f); _full = Integer.parseInt(f);
@ -59,8 +73,8 @@ public class NetDbHelper extends HelperBase {
NetDbRenderer renderer = new NetDbRenderer(_context); NetDbRenderer renderer = new NetDbRenderer(_context);
try { try {
renderNavBar(); renderNavBar();
if (_routerPrefix != null) if (_routerPrefix != null || _version!= null || _country != null)
renderer.renderRouterInfoHTML(_out, _routerPrefix); renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country);
else if (_lease) else if (_lease)
renderer.renderLeaseSetHTML(_out, _debug); renderer.renderLeaseSetHTML(_out, _debug);
else else

View File

@ -78,7 +78,14 @@ public class NetDbRenderer {
} }
} }
public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException { /**
* One String must be non-null
*
* @param routerPrefix may be null. "." for our router only
* @param version may be null
* @param country may be null
*/
public void renderRouterInfoHTML(Writer out, String routerPrefix, String version, String country) throws IOException {
StringBuilder buf = new StringBuilder(4*1024); StringBuilder buf = new StringBuilder(4*1024);
if (".".equals(routerPrefix)) { if (".".equals(routerPrefix)) {
renderRouterInfo(buf, _context.router().getRouterInfo(), true, true); renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
@ -87,13 +94,23 @@ public class NetDbRenderer {
Set<RouterInfo> routers = _context.netDb().getRouters(); Set<RouterInfo> routers = _context.netDb().getRouters();
for (RouterInfo ri : routers) { for (RouterInfo ri : routers) {
Hash key = ri.getIdentity().getHash(); Hash key = ri.getIdentity().getHash();
if (key.toBase64().startsWith(routerPrefix)) { if ((routerPrefix != null && key.toBase64().startsWith(routerPrefix)) ||
(version != null && version.equals(ri.getVersion())) ||
(country != null && country.equals(_context.commSystem().getCountry(key)))) {
renderRouterInfo(buf, ri, false, true); renderRouterInfo(buf, ri, false, true);
notFound = false; notFound = false;
} }
} }
if (notFound) if (notFound) {
buf.append(_("Router") + ' ').append(routerPrefix).append(' ' + _("not found in network database") ); buf.append(_("Router")).append(' ');
if (routerPrefix != null)
buf.append(routerPrefix);
else if (version != null)
buf.append(version);
else if (country != null)
buf.append(country);
buf.append(' ').append(_("not found in network database"));
}
} }
out.write(buf.toString()); out.write(buf.toString());
out.flush(); out.flush();
@ -320,8 +337,9 @@ public class NetDbRenderer {
buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n"); buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n");
for (String routerVersion : versionList) { for (String routerVersion : versionList) {
int num = versions.count(routerVersion); int num = versions.count(routerVersion);
buf.append("<tr><td align=\"center\">").append(DataHelper.stripHTML(routerVersion)); String ver = DataHelper.stripHTML(routerVersion);
buf.append("</td><td align=\"center\">").append(num).append("</td></tr>\n"); buf.append("<tr><td align=\"center\"><a href=\"/netdb?v=").append(ver).append("\">").append(ver);
buf.append("</a></td><td align=\"center\">").append(num).append("</td></tr>\n");
} }
buf.append("</table>\n"); buf.append("</table>\n");
} }
@ -353,9 +371,9 @@ public class NetDbRenderer {
for (String country : countryList) { for (String country : countryList) {
int num = countries.count(country); int num = countries.count(country);
buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append("\""); buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append("\"");
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> "); buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> <a href=\"/netdb?c=").append(country).append("\">");
buf.append(getTranslatedCountry(country)); buf.append(getTranslatedCountry(country));
buf.append("</td><td align=\"center\">").append(num).append("</td></tr>\n"); buf.append("</a></td><td align=\"center\">").append(num).append("</td></tr>\n");
} }
buf.append("</table>\n"); buf.append("</table>\n");
} }

View File

@ -23,5 +23,7 @@
<jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter(\"f\")%>" /> <jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
<jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter(\"r\")%>" /> <jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter(\"r\")%>" />
<jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter(\"l\")%>" /> <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:getProperty name="netdbHelper" property="netDbSummary" /> <jsp:getProperty name="netdbHelper" property="netDbSummary" />
</div></div></body></html> </div></div></body></html>