Console: /netdb fixes (ticket #2326):

- 'O' cap search won't include P/X
- Fix highlighted tab for transport search
- Use POST instead of GET
This commit is contained in:
zzz
2018-10-06 22:59:58 +00:00
parent aafccc0132
commit 0cd67acd19
2 changed files with 20 additions and 3 deletions

View File

@ -222,7 +222,7 @@ public class NetDbHelper extends HelperBase {
if (_routerPrefix != null || _version != null || _country != null ||
_family != null || _caps != null || _ip != null || _sybil != null ||
_port != 0 || _type != null || _mtu != null || _ipv6 != null ||
_ssucaps != null || _cost != 0)
_ssucaps != null || _transport != null || _cost != 0)
return 2;
if (_full == 2)
return 3;
@ -276,7 +276,7 @@ public class NetDbHelper extends HelperBase {
* @since 0.9.28
*/
private void renderLookupForm() throws IOException {
_out.write("<form action=\"/netdb\" method=\"GET\">\n" +
_out.write("<form action=\"/netdb\" method=\"POST\">\n" +
"<table id=\"netdblookup\"><tr><th colspan=\"3\">Network Database Search</th></tr>\n" +
"<tr><td colspan=\"3\" class=\"subheading\"><b>Enter one search field <i>only</i>:</b></td></tr>\n" +
"<tr><td>Capabilities:</td><td><input type=\"text\" name=\"caps\"></td><td>e.g. f or XOfR</td></tr>\n" +

View File

@ -173,7 +173,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)) ||
// 'O' will catch PO and XO also
(caps != null && hasCap(ri, caps)) ||
(tr != null && ri.getTargetAddress(tr) != null) ||
(type != null && type == ri.getIdentity().getSigType())) {
if (skipped < toSkip) {
@ -357,6 +358,22 @@ class NetDbRenderer {
SybilRenderer.renderSybilHTML(out, _context, sybils, sybil);
}
/**
* Special handling for 'O' cap
* @param caps non-null
* @since 0.9.38
*/
private static boolean hasCap(RouterInfo ri, String caps) {
String ricaps = ri.getCapabilities();
if (caps.equals("O")) {
return ricaps.contains(caps) &&
!ricaps.contains("P") &&
!ricaps.contains("X");
} else {
return ricaps.contains(caps);
}
}
/**
* @param debug @since 0.7.14 sort by distance from us, display
* median distance, and other stuff, useful when floodfill