Skip to content

Commit d60bb12

Browse files
committed
Console: Netdb tab fixes and cleanup (Gitlab #465)
Reversions and fixes to changes since 2.3.0. Subdbs may not contain RIs, so we don't need /netdb tabs for them. Partially fixes Gitlab #465. - Remove subdb RI tabs on /netdb - HTML fixes on subdb LS tab - Skip subdb LS tab if no clients - We don't need both Hash and boolean args on renderLeaseSetHTML(), just use hash != null - Rename/cleanup/restore tagged strings, don't tag strings only visible in advanced config
1 parent 5ea16d9 commit d60bb12

File tree

3 files changed

+50
-143
lines changed

3 files changed

+50
-143
lines changed

apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java

+17-48
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66
import java.util.HashMap;
77
import java.util.Locale;
88
import java.util.Map;
9-
import java.util.Set;
109
import java.util.TreeMap;
1110

1211
import net.i2p.crypto.EncType;
1312
import net.i2p.crypto.SigType;
1413
import net.i2p.data.DataHelper;
1514
import net.i2p.data.Hash;
16-
import net.i2p.data.router.RouterInfo;
1715
import net.i2p.util.SystemVersion;
1816
import net.i2p.router.sybil.Analysis;
1917
import net.i2p.router.web.FormHandler;
@@ -49,16 +47,14 @@ public class NetDbHelper extends FormHandler {
4947
_x("Local Router"), // 1
5048
_x("Router Lookup"), // 2
5149
// advanced below here
52-
_x("All Routers in Floodfill NetDB"), // 3
53-
_x("All Routers in Floodfill NetDB with Full Stats"), // 4
50+
_x("All Routers"), // 3
51+
_x("All Routers with Full Stats"), // 4
5452
_x("LeaseSets"), // 5
5553
"LeaseSet Debug", // 6
5654
"Sybil", // 7
5755
"Advanced Lookup", // 8
5856
"LeaseSet Lookup", // 9
59-
_x("All Routers in Client NetDBs"), // 10
60-
_x("All Routers in Client NetDBs with Full Stats"), // 11
61-
_x("LeaseSets in Client NetDBs"), // 12
57+
"LeaseSets (Client DBs)" // 10
6258
};
6359

6460
private static final String links[] =
@@ -72,9 +68,7 @@ public class NetDbHelper extends FormHandler {
7268
"?f=3", // 7
7369
"?f=4", // 8
7470
"", // 9
75-
"?f=5", // 10
76-
"?f=6", // 11
77-
"?l=7", // 12
71+
"?l=7", // 10
7872
};
7973

8074

@@ -251,14 +245,6 @@ public void setIntros(String f) {
251245
_icount = Integer.parseInt(f);
252246
} catch (NumberFormatException nfe) {}
253247
}
254-
255-
public void setClientPage(String f) {
256-
try {
257-
258-
} catch(Exception e){
259-
//if (_log.shouldLog)
260-
}
261-
}
262248

263249
/**
264250
* call for non-text-mode browsers
@@ -326,27 +312,21 @@ protected void processForm() {
326312
/**
327313
* storeWriter() must be called previously
328314
*/
329-
public String getFloodfillNetDbSummary() {
330-
return getNetDbSummary(null, false);
331-
}
332-
333-
public String getNetDbSummary(Hash client, boolean clientOnly) {
315+
public String getNetDbSummary() {
334316
NetDbRenderer renderer = new NetDbRenderer(_context);
335317
try {
336-
if (client == null && !clientOnly)
337-
renderNavBar();
318+
renderNavBar();
338319
if (_routerPrefix != null || _version != null || _country != null ||
339320
_family != null || _caps != null || _ip != null || _sybil != null ||
340321
_port != 0 || _type != null || _mtu != null || _ipv6 != null ||
341322
_ssucaps != null || _transport != null || _cost != 0 || _etype != null ||
342323
_icount > 0) {
343-
if (client == null && !clientOnly)
344-
renderer.renderRouterInfoHTML(_out, _limit, _page,
324+
renderer.renderRouterInfoHTML(_out, _limit, _page,
345325
_routerPrefix, _version, _country,
346326
_family, _caps, _ip, _sybil, _port, _highPort, _type, _etype,
347-
_mtu, _ipv6, _ssucaps, _transport, _cost, _icount, client, clientOnly);
327+
_mtu, _ipv6, _ssucaps, _transport, _cost, _icount);
348328
} else if (_lease) {
349-
renderer.renderLeaseSetHTML(_out, _debug, client, _clientOnly);
329+
renderer.renderLeaseSetHTML(_out, _debug, null);
350330
} else if (_hostname != null) {
351331
renderer.renderLeaseSet(_out, _hostname, true);
352332
} else if (_full == 3) {
@@ -357,29 +337,21 @@ else if ((_mode == 13 || _mode == 16) && !_postOK)
357337
(new SybilRenderer(_context)).getNetDbSummary(_out, _newNonce, _mode, _date);
358338
} else if (_full == 4) {
359339
renderLookupForm();
360-
} else if (_full == 5) {
361-
renderer.renderStatusHTML(_out, _limit, _page, _full, null, true);
362-
} else if (_full == 6) {
363-
renderer.renderStatusHTML(_out, _limit, _page, _full, null, true);
364-
} else if (_clientOnly && client == null) {
365-
for (Hash _client : _context.clientManager().getPrimaryHashes()) {
366-
renderer.renderLeaseSetHTML(_out, _debug, _client, clientOnly);
340+
} else if (_clientOnly) {
341+
for (Hash client : _context.clientManager().getPrimaryHashes()) {
342+
renderer.renderLeaseSetHTML(_out, false, client);
367343
}
368344
} else {
369345
if (_full == 0 && _sort != null)
370346
_full = 3;
371-
renderer.renderStatusHTML(_out, _limit, _page, _full, client, clientOnly);
347+
renderer.renderStatusHTML(_out, _limit, _page, _full);
372348
}
373349
} catch (IOException ioe) {
374350
ioe.printStackTrace();
375351
}
376352
return "";
377353
}
378354

379-
public String getClientNetDbSummary(Hash client) {
380-
return getNetDbSummary(client, true);
381-
}
382-
383355
/**
384356
* @since 0.9.1
385357
*/
@@ -405,12 +377,8 @@ private int getTab() {
405377
return 8;
406378
if (_hostname != null)
407379
return 9;
408-
if (_full == 5)
409-
return 10;
410-
if (_full == 6)
411-
return 11;
412380
if (_clientOnly)
413-
return 12;
381+
return 10;
414382
return 0;
415383
}
416384

@@ -431,8 +399,9 @@ private void renderNavBar() throws IOException {
431399
continue; // can't nav to lookup
432400
if (i > 2 && i != tab && !isAdvanced())
433401
continue;
434-
if (i == 10 || i == 11) {
435-
if (_context.netDbSegmentor().getRoutersKnownToClients().size() == 0)
402+
if (i == 10) {
403+
// skip if no clients
404+
if (_context.clientManager().getPrimaryHashes().isEmpty() && i != tab)
436405
continue;
437406
}
438407
if (i == tab) {

apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java

+32-94
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,12 @@
4141
import net.i2p.data.router.RouterInfo;
4242
import net.i2p.data.router.RouterKeyGenerator;
4343
import net.i2p.router.JobImpl;
44+
import net.i2p.router.NetworkDatabaseFacade;
4445
import net.i2p.router.RouterContext;
4546
import net.i2p.router.TunnelPoolSettings;
4647
import net.i2p.router.crypto.FamilyKeyCrypto;
47-
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseSegmentor;
48-
import net.i2p.router.networkdb.kademlia.SegmentedNetworkDatabaseFacade;
49-
import net.i2p.router.util.HashDistance; // debug
5048
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
49+
import net.i2p.router.util.HashDistance; // debug
5150
import static net.i2p.router.sybil.Util.biLog2;
5251
import net.i2p.router.transport.GeoIP;
5352
import net.i2p.router.web.HelperBase;
@@ -115,34 +114,9 @@ public void renderRouterInfoHTML(Writer out, int pageSize, int page,
115114
String ip, String sybil, int port, int highPort, SigType type, EncType etype,
116115
String mtu, String ipv6, String ssucaps,
117116
String tr, int cost, int icount) throws IOException {
118-
renderRouterInfoHTML(out, pageSize, page,
119-
routerPrefix, version,
120-
country, family, caps,
121-
ip, sybil, port, highPort, type, etype,
122-
mtu, ipv6, ssucaps,
123-
tr, cost, icount, null, false);
124-
}
125-
public void renderRouterInfoHTML(Writer out, int pageSize, int page,
126-
String routerPrefix, String version,
127-
String country, String family, String caps,
128-
String ip, String sybil, int port, int highPort, SigType type, EncType etype,
129-
String mtu, String ipv6, String ssucaps,
130-
String tr, int cost, int icount, Hash client, boolean allClients) throws IOException {
131117
StringBuilder buf = new StringBuilder(4*1024);
132118
List<Hash> sybils = sybil != null ? new ArrayList<Hash>(128) : null;
133-
FloodfillNetworkDatabaseFacade netdb = _context.netDb();
134-
if (allClients) {
135-
netdb = _context.netDb();
136-
}else{
137-
if (client != null) {
138-
Log _log = _context.logManager().getLog(NetDbRenderer.class);
139-
if (_log.shouldLog(Log.DEBUG))
140-
_log.debug("client subdb for: " + client);
141-
netdb = _context.clientNetDb(client);
142-
}
143-
else
144-
netdb = _context.netDb();
145-
}
119+
NetworkDatabaseFacade netdb = _context.netDb();
146120

147121
if (".".equals(routerPrefix)) {
148122
buf.append("<table><tr><td class=\"infohelp\">")
@@ -234,15 +208,7 @@ public void renderRouterInfoHTML(Writer out, int pageSize, int page,
234208
}
235209
boolean notFound = true;
236210
Set<RouterInfo> routers = new HashSet<RouterInfo>();
237-
if (allClients){
238-
routers.addAll(_context.netDbSegmentor().getRoutersKnownToClients());
239-
} else {
240-
if (client == null)
241-
routers.addAll(_context.netDb().getRouters());
242-
else
243-
routers.addAll(_context.clientNetDb(client).getRouters());
244-
245-
}
211+
routers.addAll(_context.netDb().getRouters());
246212
int ipMode = 0;
247213
String ipArg = ip; // save for error message
248214
String altIPv6 = null;
@@ -611,27 +577,20 @@ private static boolean hasCap(RouterInfo ri, String caps) {
611577
*
612578
* @param debug @since 0.7.14 sort by distance from us, display
613579
* median distance, and other stuff, useful when floodfill
580+
* @param client null for main db; non-null for client db
614581
*/
615-
public void renderLeaseSetHTML(Writer out, boolean debug, Hash client, boolean clientsOnly) throws IOException {
582+
public void renderLeaseSetHTML(Writer out, boolean debug, Hash client) throws IOException {
616583
StringBuilder buf = new StringBuilder(4*1024);
617584
if (debug)
618585
buf.append("<p id=\"debugmode\">Debug mode - Sorted by hash distance, closest first</p>\n");
619586
Hash ourRKey;
620587
Set<LeaseSet> leases;
621588
DecimalFormat fmt;
622-
FloodfillNetworkDatabaseFacade netdb = null;
623-
if (clientsOnly){
589+
NetworkDatabaseFacade netdb;
590+
if (client == null)
624591
netdb = _context.netDb();
625-
}else{
626-
if (client != null) {
627-
Log _log = _context.logManager().getLog(NetDbRenderer.class);
628-
if (_log.shouldLog(Log.DEBUG))
629-
_log.debug("client subdb for: " + client);
630-
netdb = _context.clientNetDb(client);
631-
}
632-
else
633-
netdb = _context.netDb();
634-
}
592+
else
593+
netdb = _context.clientNetDb(client);
635594
if (debug) {
636595
ourRKey = _context.routerHash();
637596
leases = new TreeSet<LeaseSet>(new LeaseSetRoutingKeyComparator(ourRKey));
@@ -641,11 +600,7 @@ public void renderLeaseSetHTML(Writer out, boolean debug, Hash client, boolean c
641600
leases = new TreeSet<LeaseSet>(new LeaseSetComparator());
642601
fmt = null;
643602
}
644-
if (clientsOnly)
645-
leases.addAll(_context.netDbSegmentor().getLeasesKnownToClients());
646-
else{
647-
leases.addAll(netdb.getLeases());
648-
}
603+
leases.addAll(netdb.getLeases());
649604
int medianCount = 0;
650605
int rapCount = 0;
651606
BigInteger median = null;
@@ -658,16 +613,15 @@ public void renderLeaseSetHTML(Writer out, boolean debug, Hash client, boolean c
658613
} else {
659614
buf.append("<table id=\"leasesetsummary\">\n");
660615
}
661-
if (clientsOnly)
662-
buf.append("<tr><th colspan=\"3\">Leaseset Summary for All Clients: ").append(client).append("</th>");
663-
else if (client != null)
664-
buf.append("<tr><th colspan=\"3\">Leaseset Summary for Client: ").append(client).append("</th>");
665-
else
666-
buf.append("<tr><th colspan=\"3\">Leaseset Summary for Floodfill</th>");
667-
buf.append("<th><a href=\"/configadvanced\" title=\"").append(_t("Manually Configure Floodfill Participation")).append("\">[")
668-
.append(_t("Configure Floodfill Participation"))
669-
.append("]</a></th></tr>\n")
670-
.append("<tr><td><b>Total Leasesets:</b></td><td colspan=\"3\">").append(leases.size()).append("</td></tr>\n");
616+
if (client != null) {
617+
buf.append("<tr><th colspan=\"3\">Leasesets for Client: ").append(client.toBase32()).append("</th><th></th></tr>\n");
618+
} else {
619+
buf.append("<tr><th colspan=\"3\">Leaseset Summary for Floodfill</th>" +
620+
"<th><a href=\"/configadvanced\" title=\"").append(_t("Manually Configure Floodfill Participation")).append("\">[")
621+
.append(_t("Configure Floodfill Participation"))
622+
.append("]</a></th></tr>\n");
623+
}
624+
buf.append("<tr><td><b>Total Leasesets:</b></td><td colspan=\"3\">").append(leases.size()).append("</td></tr>\n");
671625
if (debug) {
672626
RouterKeyGenerator gen = _context.routerKeyGenerator();
673627
buf.append("<tr><td><b>Published (RAP) Leasesets:</b></td><td colspan=\"3\">").append(leases).append("</td></tr>\n")
@@ -676,17 +630,17 @@ else if (client != null)
676630
.append("<tr><td><b>Next Mod Data:</b></td><td>").append(DataHelper.getUTF8(gen.getNextModData())).append("</td>")
677631
.append("<td><b>Change in:</b></td><td>").append(DataHelper.formatDuration(gen.getTimeTillMidnight())).append("</td></tr>\n");
678632
}
679-
int ff = 0;
680633
if (client == null) {
681-
ff = _context.peerManager().getPeersByCapability(FloodfillNetworkDatabaseFacade.CAPABILITY_FLOODFILL).size();
634+
int ff = _context.peerManager().getPeersByCapability(FloodfillNetworkDatabaseFacade.CAPABILITY_FLOODFILL).size();
682635
buf.append("<tr><td><b>Known Floodfills:</b></td><td colspan=\"3\">").append(ff).append("</td></tr>\n");
683636
buf.append("<tr><td><b>Currently Floodfill?</b></td><td>").append(netdb.floodfillEnabled() ? "yes" : "no");
637+
if (debug)
638+
buf.append("</td><td><b>Routing Key:</b></td><td>").append(ourRKey.toBase64());
639+
else
640+
buf.append("</td><td colspan=\"2\">");
641+
buf.append("</td></tr>\n");
684642
}
685-
if (debug)
686-
buf.append("</td><td><b>Routing Key:</b></td><td>").append(ourRKey.toBase64());
687-
else
688-
buf.append("</td><td colspan=\"2\">");
689-
buf.append("</td></tr>\n</table>\n");
643+
buf.append("</table>\n");
690644

691645
if (leases.isEmpty()) {
692646
//if (!debug)
@@ -960,7 +914,7 @@ private void renderLeaseSet(StringBuilder buf, LeaseSet ls, boolean debug, long
960914
* @param mode 0: charts only; 1: full routerinfos; 2: abbreviated routerinfos
961915
* mode 3: Same as 0 but sort countries by count
962916
*/
963-
public void renderStatusHTML(Writer out, int pageSize, int page, int mode, Hash client, boolean clientsOnly) throws IOException {
917+
public void renderStatusHTML(Writer out, int pageSize, int page, int mode) throws IOException {
964918
if (!_context.netDb().isInitialized()) {
965919
out.write("<div id=\"notinitialized\">");
966920
out.write(_t("Not initialized"));
@@ -977,13 +931,7 @@ public void renderStatusHTML(Writer out, int pageSize, int page, int mode, Hash
977931
Hash us = _context.routerHash();
978932

979933
Set<RouterInfo> routers = new TreeSet<RouterInfo>(new RouterInfoComparator());
980-
if (client != null) {
981-
routers.addAll(_context.clientNetDb(client).getRouters());
982-
} else if (clientsOnly) {
983-
routers.addAll(_context.netDbSegmentor().getRoutersKnownToClients());
984-
} else {
985-
routers.addAll(_context.netDb().getRouters());
986-
}
934+
routers.addAll(_context.netDb().getRouters());
987935
int toSkip = pageSize * page;
988936
boolean nextpg = routers.size() > toSkip + pageSize;
989937
StringBuilder buf = new StringBuilder(8192);
@@ -1071,19 +1019,9 @@ public void renderStatusHTML(Writer out, int pageSize, int page, int mode, Hash
10711019
if (!showStats) {
10721020

10731021
// the summary table
1074-
if (client != null) {
1075-
buf.append("<table id=\"netdboverview\" border=\"0\" cellspacing=\"30\"><tr><th colspan=\"3\">")
1076-
.append(_t("Network Database Router Statistics for Client " + client))
1077-
.append("</th></tr><tr><td style=\"vertical-align: top;\">");
1078-
} else if (clientsOnly) {
1079-
buf.append("<table id=\"netdboverview\" border=\"0\" cellspacing=\"30\"><tr><th colspan=\"3\">")
1080-
.append(_t("Network Database Router Statistics for all Clients"))
1081-
.append("</th></tr><tr><td style=\"vertical-align: top;\">");
1082-
} else {
1083-
buf.append("<table id=\"netdboverview\" border=\"0\" cellspacing=\"30\"><tr><th colspan=\"3\">")
1084-
.append(_t("Network Database Router Statistics for Floodfill Router"))
1085-
.append("</th></tr><tr><td style=\"vertical-align: top;\">");
1086-
}
1022+
buf.append("<table id=\"netdboverview\" border=\"0\" cellspacing=\"30\"><tr><th colspan=\"3\">");
1023+
buf.append(_t("Network Database Router Statistics"));
1024+
buf.append("</th></tr><tr><td style=\"vertical-align: top;\">");
10871025
// versions table
10881026
List<String> versionList = new ArrayList<String>(versions.objects());
10891027
if (!versionList.isEmpty()) {

apps/routerconsole/jsp/netdb.jsp

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,5 @@
4141
<jsp:setProperty name="formhandler" property="sort" value="<%=request.getParameter(\"s\")%>" />
4242
<jsp:setProperty name="formhandler" property="intros" value="<%=request.getParameter(\"i\")%>" />
4343
<%@include file="formhandler.jsi" %>
44-
<jsp:getProperty name="formhandler" property="floodfillNetDbSummary" />
44+
<jsp:getProperty name="formhandler" property="netDbSummary" />
4545
</div></body></html>

0 commit comments

Comments
 (0)