forked from I2P_Developers/i2p.i2p
NetDb: Add MTU, SSU caps, IPv6 prefix, and cost lookups
This commit is contained in:
@ -8,8 +8,8 @@ public class NetDbHelper extends HelperBase {
|
|||||||
private String _routerPrefix;
|
private String _routerPrefix;
|
||||||
private String _version;
|
private String _version;
|
||||||
private String _country;
|
private String _country;
|
||||||
private String _family, _caps, _ip, _sybil;
|
private String _family, _caps, _ip, _sybil, _mtu, _ssucaps, _ipv6;
|
||||||
private int _full, _port;
|
private int _full, _port, _cost;
|
||||||
private boolean _lease;
|
private boolean _lease;
|
||||||
private boolean _debug;
|
private boolean _debug;
|
||||||
private boolean _graphical;
|
private boolean _graphical;
|
||||||
@ -99,6 +99,34 @@ public class NetDbHelper extends HelperBase {
|
|||||||
_type = SigType.parseSigType(f);
|
_type = SigType.parseSigType(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @since 0.9.28 */
|
||||||
|
public void setMtu(String f) {
|
||||||
|
if (f != null && f.length() > 0)
|
||||||
|
_mtu = DataHelper.stripHTML(f); // XSS
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @since 0.9.28 */
|
||||||
|
public void setIpv6(String f) {
|
||||||
|
if (f != null && f.length() > 0) {
|
||||||
|
_ipv6 = DataHelper.stripHTML(f); // XSS
|
||||||
|
if (!_ipv6.endsWith(":"))
|
||||||
|
_ipv6 = _ipv6 + ':';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @since 0.9.28 */
|
||||||
|
public void setSsucaps(String f) {
|
||||||
|
if (f != null && f.length() > 0)
|
||||||
|
_ssucaps = DataHelper.stripHTML(f); // XSS
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @since 0.9.28 */
|
||||||
|
public void setCost(String f) {
|
||||||
|
try {
|
||||||
|
_cost = Integer.parseInt(f);
|
||||||
|
} catch (NumberFormatException nfe) {}
|
||||||
|
}
|
||||||
|
|
||||||
public void setFull(String f) {
|
public void setFull(String f) {
|
||||||
try {
|
try {
|
||||||
_full = Integer.parseInt(f);
|
_full = Integer.parseInt(f);
|
||||||
@ -127,9 +155,11 @@ public class NetDbHelper extends HelperBase {
|
|||||||
renderNavBar();
|
renderNavBar();
|
||||||
if (_routerPrefix != null || _version != null || _country != null ||
|
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)
|
_port != 0 || _type != null || _mtu != null || _ipv6 != null ||
|
||||||
|
_ssucaps != null || _cost != 0)
|
||||||
renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country,
|
renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country,
|
||||||
_family, _caps, _ip, _sybil, _port, _type);
|
_family, _caps, _ip, _sybil, _port, _type,
|
||||||
|
_mtu, _ipv6, _ssucaps, _cost);
|
||||||
else if (_lease)
|
else if (_lease)
|
||||||
renderer.renderLeaseSetHTML(_out, _debug);
|
renderer.renderLeaseSetHTML(_out, _debug);
|
||||||
else if (_full == 3)
|
else if (_full == 3)
|
||||||
@ -156,7 +186,8 @@ public class NetDbHelper extends HelperBase {
|
|||||||
return 1;
|
return 1;
|
||||||
if (_routerPrefix != null || _version != null || _country != null ||
|
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)
|
_port != 0 || _type != null || _mtu != null || _ipv6 != null ||
|
||||||
|
_ssucaps != null || _cost != 0)
|
||||||
return 2;
|
return 2;
|
||||||
if (_full == 2)
|
if (_full == 2)
|
||||||
return 3;
|
return 3;
|
||||||
@ -214,12 +245,16 @@ public class NetDbHelper extends HelperBase {
|
|||||||
private void renderLookupForm() throws IOException {
|
private void renderLookupForm() throws IOException {
|
||||||
_out.write("<form action=\"/netdb\" method=\"GET\"><p><b>Pick One</b></p>\n" +
|
_out.write("<form action=\"/netdb\" method=\"GET\"><p><b>Pick One</b></p>\n" +
|
||||||
"Caps <input type=\"text\" name=\"caps\">e.g. f or XOfR<br>\n" +
|
"Caps <input type=\"text\" name=\"caps\">e.g. f or XOfR<br>\n" +
|
||||||
|
"Cost <input type=\"text\" name=\"cost\"><br>\n" +
|
||||||
"Country code <input type=\"text\" name=\"c\">e.g. ru<br>\n" +
|
"Country code <input type=\"text\" name=\"c\">e.g. ru<br>\n" +
|
||||||
"Family <input type=\"text\" name=\"fam\"><br>\n" +
|
"Family <input type=\"text\" name=\"fam\"><br>\n" +
|
||||||
"Hash prefix <input type=\"text\" name=\"r\"><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" +
|
"IP <input type=\"text\" name=\"ip\">host name, IPv4, or IPv6, /24,/16,/8 suffixes optional for IPv4<br>\n" +
|
||||||
|
"IPv6 Prefix <input type=\"text\" name=\"ipv6\"><br>\n" +
|
||||||
|
"MTU <input type=\"text\" name=\"mtu\"><br>\n" +
|
||||||
"Port <input type=\"text\" name=\"port\"><br>\n" +
|
"Port <input type=\"text\" name=\"port\"><br>\n" +
|
||||||
"Sig Type <input type=\"text\" name=\"type\"><br>\n" +
|
"Sig Type <input type=\"text\" name=\"type\"><br>\n" +
|
||||||
|
"SSU Caps <input type=\"text\" name=\"ssucaps\"><br>\n" +
|
||||||
"Version <input type=\"text\" name=\"v\"><br>\n" +
|
"Version <input type=\"text\" name=\"v\"><br>\n" +
|
||||||
"<p><b>Add Sybil analysis (must pick one above):</b></p>\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" +
|
"Sybil close to <input type=\"text\" name=\"sybil2\">Router hash, dest hash, b32, or from address book<br>\n" +
|
||||||
|
@ -90,7 +90,8 @@ class NetDbRenderer {
|
|||||||
*/
|
*/
|
||||||
public void renderRouterInfoHTML(Writer out, String routerPrefix, String version,
|
public void renderRouterInfoHTML(Writer out, String routerPrefix, String version,
|
||||||
String country, String family, String caps,
|
String country, String family, String caps,
|
||||||
String ip, String sybil, int port, SigType type) throws IOException {
|
String ip, String sybil, int port, SigType type,
|
||||||
|
String mtu, String ipv6, String ssucaps, int cost) throws IOException {
|
||||||
StringBuilder buf = new StringBuilder(4*1024);
|
StringBuilder buf = new StringBuilder(4*1024);
|
||||||
List<Hash> sybils = sybil != null ? new ArrayList<Hash>(128) : null;
|
List<Hash> sybils = sybil != null ? new ArrayList<Hash>(128) : null;
|
||||||
if (".".equals(routerPrefix)) {
|
if (".".equals(routerPrefix)) {
|
||||||
@ -156,6 +157,49 @@ class NetDbRenderer {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (mtu != null) {
|
||||||
|
for (RouterAddress ra : ri.getAddresses()) {
|
||||||
|
if (mtu.equals(ra.getOption("mtu"))) {
|
||||||
|
renderRouterInfo(buf, ri, false, true);
|
||||||
|
if (sybil != null)
|
||||||
|
sybils.add(key);
|
||||||
|
notFound = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (ipv6 != null) {
|
||||||
|
for (RouterAddress ra : ri.getAddresses()) {
|
||||||
|
String host = ra.getHost();
|
||||||
|
if (host != null && host.startsWith(ipv6)) {
|
||||||
|
renderRouterInfo(buf, ri, false, true);
|
||||||
|
if (sybil != null)
|
||||||
|
sybils.add(key);
|
||||||
|
notFound = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (ssucaps != null) {
|
||||||
|
for (RouterAddress ra : ri.getAddresses()) {
|
||||||
|
if (!"SSU".equals(ra.getTransportStyle()))
|
||||||
|
continue;
|
||||||
|
if (ssucaps.equals(ra.getOption("caps"))) {
|
||||||
|
renderRouterInfo(buf, ri, false, true);
|
||||||
|
if (sybil != null)
|
||||||
|
sybils.add(key);
|
||||||
|
notFound = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (cost != 0) {
|
||||||
|
for (RouterAddress ra : ri.getAddresses()) {
|
||||||
|
if (cost == ra.getCost()) {
|
||||||
|
renderRouterInfo(buf, ri, false, true);
|
||||||
|
if (sybil != null)
|
||||||
|
sybils.add(key);
|
||||||
|
notFound = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (notFound) {
|
if (notFound) {
|
||||||
|
@ -32,5 +32,9 @@
|
|||||||
<jsp:setProperty name="netdbHelper" property="sybil2" value="<%=request.getParameter(\"sybil2\")%>" />
|
<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="port" value="<%=request.getParameter(\"port\")%>" />
|
||||||
<jsp:setProperty name="netdbHelper" property="type" value="<%=request.getParameter(\"type\")%>" />
|
<jsp:setProperty name="netdbHelper" property="type" value="<%=request.getParameter(\"type\")%>" />
|
||||||
|
<jsp:setProperty name="netdbHelper" property="ipv6" value="<%=request.getParameter(\"ipv6\")%>" />
|
||||||
|
<jsp:setProperty name="netdbHelper" property="cost" value="<%=request.getParameter(\"cost\")%>" />
|
||||||
|
<jsp:setProperty name="netdbHelper" property="mtu" value="<%=request.getParameter(\"mtu\")%>" />
|
||||||
|
<jsp:setProperty name="netdbHelper" property="ssucaps" value="<%=request.getParameter(\"ssucaps\")%>" />
|
||||||
<jsp:getProperty name="netdbHelper" property="netDbSummary" />
|
<jsp:getProperty name="netdbHelper" property="netDbSummary" />
|
||||||
</div></div></body></html>
|
</div></div></body></html>
|
||||||
|
Reference in New Issue
Block a user