diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java index d0b962de6..02297e2e2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java @@ -29,6 +29,22 @@ import net.i2p.util.SystemVersion; public class PeerHelper extends HelperBase { private int _sortFlags; private String _urlBase; + private String _transport; + private boolean _graphical; + + private static final String titles[] = { + _x("Addresses"), + "NTCP", + "SSU", + _x("UPnP Status") + }; + + private static final String links[] = { + "", + "?tx=ntcp", + "?tx=ssu", + "?tx=upnp" + }; // Opera doesn't have the char, TODO check UA //private static final String THINSP = " / "; @@ -47,8 +63,20 @@ public class PeerHelper extends HelperBase { _sortFlags = 0; } } + public void setUrlBase(String base) { _urlBase = base; } + /** @since 0.9.38 */ + public void setTransport(String t) { _transport = t; } + + /** + * call for non-text-mode browsers + * @since 0.9.38 + */ + public void allowGraphical() { + _graphical = true; + } + public String getPeerSummary() { try { renderStatusHTML(_out, _urlBase, _sortFlags); @@ -67,54 +95,111 @@ public class PeerHelper extends HelperBase { * @since 0.9.31 moved from TransportManager */ private void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException { - if (isAdvanced()) { + if (_context.commSystem().isDummy()) { + out.write("
No peers, no transports, no UPnP: i2p.vmCommSystem=true
"); + return; + } + renderNavBar(out); + if (isAdvanced() && _transport == null) { out.write(""); out.write(_t("Status")); out.write(": "); out.write(_t(_context.commSystem().getStatus().toStatusString())); out.write("
"); } + SortedMap\n");
- for (Transport t : transports.values()) {
- if (t.hasCurrentAddress()) {
- for (RouterAddress ra : t.getCurrentAddresses()) {
- buf.append(ra.toString());
- buf.append("\n\n");
+ if (!transports.isEmpty()) {
+ out.write(getTransportsLegend());
+ }
+ } else if (_transport == null) {
+ StringBuilder buf = new StringBuilder(4*1024);
+ buf.append("").append(_t("Router Transport Addresses")).append("
\n");
+ if (!transports.isEmpty()) {
+ for (Transport t : transports.values()) {
+ if (t.hasCurrentAddress()) {
+ for (RouterAddress ra : t.getCurrentAddresses()) {
+ buf.append(ra.toString());
+ buf.append("\n\n");
+ }
+ } else {
+ buf.append(_t("{0} is used for outbound connections only", t.getStyle()));
+ buf.append("\n\n");
+ }
}
} else {
- buf.append(_t("{0} is used for outbound connections only", t.getStyle()));
- buf.append("\n\n");
+ buf.append(_t("none"));
}
+ buf.append("\n");
+ out.write(buf.toString());
+ } else if ("upnp".equals(_transport)) {
+ // UPnP Status
+ _context.commSystem().renderStatusHTML(_out, _urlBase, _sortFlags);
}
- buf.append("\n");
- out.write(buf.toString());
- // UPnP Status
- _context.commSystem().renderStatusHTML(_out, _urlBase, _sortFlags);
- out.write("\n");
out.flush();
}
+ /**
+ * @since 0.9.38
+ */
+ private int getTab() {
+ if ("ntcp".equals(_transport))
+ return 1;
+ if ("ssu".equals(_transport))
+ return 2;
+ if ("upnp".equals(_transport))
+ return 3;
+ return 0;
+ }
+
+ /**
+ * @since 0.9.38
+ */
+ private void renderNavBar(Writer out) throws IOException {
+ StringBuilder buf = new StringBuilder(1024);
+ buf.append("");
+ out.write(buf.toString());
+ }
+
/**
* @since 0.9.31 moved from TransportManager
*/
diff --git a/apps/routerconsole/jsp/peers.jsp b/apps/routerconsole/jsp/peers.jsp
index 2e3ba63e7..b346ec373 100644
--- a/apps/routerconsole/jsp/peers.jsp
+++ b/apps/routerconsole/jsp/peers.jsp
@@ -14,8 +14,13 @@