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 f317f4bf19c7061f4893df01731060d8de00979c..5f1c39061bf54a13c4802c6895f1f7a44c9ed651 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java @@ -1,6 +1,7 @@ package net.i2p.router.web; import java.io.IOException; +import net.i2p.crypto.SigType; import net.i2p.data.DataHelper; public class NetDbHelper extends HelperBase { @@ -8,10 +9,11 @@ public class NetDbHelper extends HelperBase { private String _version; private String _country; private String _family, _caps, _ip, _sybil; - private int _full; + private int _full, _port; private boolean _lease; private boolean _debug; private boolean _graphical; + private SigType _type; private static final String titles[] = {_x("Summary"), // 0 @@ -84,6 +86,19 @@ public class NetDbHelper extends HelperBase { _sybil = DataHelper.stripHTML(c); // XSS } + /** @since 0.9.28 */ + public void setPort(String f) { + try { + _port = Integer.parseInt(f); + } catch (NumberFormatException nfe) {} + } + + /** @since 0.9.28 */ + public void setType(String f) { + if (f != null && f.length() > 0) + _type = SigType.parseSigType(f); + } + public void setFull(String f) { try { _full = Integer.parseInt(f); @@ -111,9 +126,10 @@ public class NetDbHelper extends HelperBase { try { renderNavBar(); if (_routerPrefix != null || _version != null || _country != null || - _family != null || _caps != null || _ip != null || _sybil != null) + _family != null || _caps != null || _ip != null || _sybil != null || + _port != 0 || _type != null) renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country, - _family, _caps, _ip, _sybil); + _family, _caps, _ip, _sybil, _port, _type); else if (_lease) renderer.renderLeaseSetHTML(_out, _debug); else if (_full == 3) @@ -139,7 +155,8 @@ public class NetDbHelper extends HelperBase { if (".".equals(_routerPrefix)) return 1; if (_routerPrefix != null || _version != null || _country != null || - _family != null || _caps != null || _ip != null || _sybil != null) + _family != null || _caps != null || _ip != null || _sybil != null || + _port != 0 || _type != null) return 2; if (_full == 2) return 3; @@ -201,6 +218,8 @@ public class NetDbHelper extends HelperBase { "Family <input type=\"text\" name=\"fam\"><br>\n" + "Hash prefix <input type=\"text\" name=\"r\"><br>\n" + "IP <input type=\"text\" name=\"ip\">IPv4 or IPv6, /24,/16,/8 suffixes optional for IPv4<br>\n" + + "Port <input type=\"text\" name=\"port\"><br>\n" + + "Sig Type <input type=\"text\" name=\"type\"><br>\n" + "Version <input type=\"text\" name=\"v\"><br>\n" + "<p><b>Add Sybil analysis (must pick one above):</b></p>\n" + "Sybil close to <input type=\"text\" name=\"sybil2\">Router hash, dest hash, b32, or from address book<br>\n" + 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 ee0a88788aadac3f23f17de8cf725b36df0cc9c3..4b3ac275d0ee2b8c2c3521168458de23359849d9 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; +import net.i2p.crypto.SigType; import net.i2p.data.DataHelper; import net.i2p.data.Destination; import net.i2p.data.Hash; @@ -89,7 +90,7 @@ class NetDbRenderer { */ public void renderRouterInfoHTML(Writer out, String routerPrefix, String version, String country, String family, String caps, - String ip, String sybil) throws IOException { + String ip, String sybil, int port, SigType type) throws IOException { StringBuilder buf = new StringBuilder(4*1024); List<Hash> sybils = sybil != null ? new ArrayList<Hash>(128) : null; if (".".equals(routerPrefix)) { @@ -118,7 +119,8 @@ class NetDbRenderer { (version != null && version.equals(ri.getVersion())) || (country != null && country.equals(_context.commSystem().getCountry(key))) || (family != null && family.equals(ri.getOption("family"))) || - (caps != null && ri.getCapabilities().contains(caps))) { + (caps != null && ri.getCapabilities().contains(caps)) || + (type != null && type == ri.getIdentity().getSigType())) { renderRouterInfo(buf, ri, false, true); if (sybil != null) sybils.add(key); @@ -144,6 +146,16 @@ class NetDbRenderer { } } } + } else if (port != 0) { + for (RouterAddress ra : ri.getAddresses()) { + if (port == ra.getPort()) { + renderRouterInfo(buf, ri, false, true); + if (sybil != null) + sybils.add(key); + notFound = false; + break; + } + } } } if (notFound) { diff --git a/apps/routerconsole/jsp/netdb.jsp b/apps/routerconsole/jsp/netdb.jsp index 18a83ea049bc78c3d2a3b838700e6da990219fb0..2778d801870844b1295611c916b0186a6da9155c 100644 --- a/apps/routerconsole/jsp/netdb.jsp +++ b/apps/routerconsole/jsp/netdb.jsp @@ -30,5 +30,7 @@ <jsp:setProperty name="netdbHelper" property="ip" value="<%=request.getParameter(\"ip\")%>" /> <jsp:setProperty name="netdbHelper" property="sybil" value="<%=request.getParameter(\"sybil\")%>" /> <jsp:setProperty name="netdbHelper" property="sybil2" value="<%=request.getParameter(\"sybil2\")%>" /> + <jsp:setProperty name="netdbHelper" property="port" value="<%=request.getParameter(\"port\")%>" /> + <jsp:setProperty name="netdbHelper" property="type" value="<%=request.getParameter(\"type\")%>" /> <jsp:getProperty name="netdbHelper" property="netDbSummary" /> </div></div></body></html>