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 a72e2cd651..8cbd02304a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java @@ -5,6 +5,8 @@ import net.i2p.data.DataHelper; public class NetDbHelper extends HelperBase { private String _routerPrefix; + private String _version; + private String _country; private int _full; private boolean _lease; private boolean _debug; @@ -33,6 +35,18 @@ public class NetDbHelper extends HelperBase { _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) { try { _full = Integer.parseInt(f); @@ -59,8 +73,8 @@ public class NetDbHelper extends HelperBase { NetDbRenderer renderer = new NetDbRenderer(_context); try { renderNavBar(); - if (_routerPrefix != null) - renderer.renderRouterInfoHTML(_out, _routerPrefix); + if (_routerPrefix != null || _version!= null || _country != null) + renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country); else if (_lease) renderer.renderLeaseSetHTML(_out, _debug); else 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 01e4659878..89b4a7000e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -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); if (".".equals(routerPrefix)) { renderRouterInfo(buf, _context.router().getRouterInfo(), true, true); @@ -87,13 +94,23 @@ public class NetDbRenderer { Set routers = _context.netDb().getRouters(); for (RouterInfo ri : routers) { 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); notFound = false; } } - if (notFound) - buf.append(_("Router") + ' ').append(routerPrefix).append(' ' + _("not found in network database") ); + if (notFound) { + 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.flush(); @@ -320,8 +337,9 @@ public class NetDbRenderer { buf.append("" + _("Version") + "" + _("Count") + "\n"); for (String routerVersion : versionList) { int num = versions.count(routerVersion); - buf.append("").append(DataHelper.stripHTML(routerVersion)); - buf.append("").append(num).append("\n"); + String ver = DataHelper.stripHTML(routerVersion); + buf.append("").append(ver); + buf.append("").append(num).append("\n"); } buf.append("\n"); } @@ -353,9 +371,9 @@ public class NetDbRenderer { for (String country : countryList) { int num = countries.count(country); buf.append("\"").append(country.toUpperCase(Locale.US)).append("\""); "); + buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> "); buf.append(getTranslatedCountry(country)); - buf.append("").append(num).append("\n"); + buf.append("").append(num).append("\n"); } buf.append("\n"); } diff --git a/apps/routerconsole/jsp/netdb.jsp b/apps/routerconsole/jsp/netdb.jsp index ccbbccfee7..15231ec852 100644 --- a/apps/routerconsole/jsp/netdb.jsp +++ b/apps/routerconsole/jsp/netdb.jsp @@ -23,5 +23,7 @@ " /> " /> " /> + " /> + " />