diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java index f482daa4d855a582a6543993798d574406767ce6..ac9f4ecc2a95c87e96af6ce1963779d836dc87af 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java @@ -315,17 +315,22 @@ public class HomeHelper extends HelperBase { url = app.url; // check for disabled webapps and other things if (url.equals("/dns")) { - if (!pm.isRegistered("susidns")) + if (!pm.isRegistered(PortMapper.SVC_SUSIDNS)) continue; } else if (url.equals("/webmail")) { - if (!pm.isRegistered("susimail")) + if (!pm.isRegistered(PortMapper.SVC_SUSIMAIL)) continue; } else if (url.equals("/torrents")) { - if (!pm.isRegistered("i2psnark")) + if (!pm.isRegistered(PortMapper.SVC_I2PSNARK)) continue; } else if (url.equals("/i2ptunnelmgr")) { - if (!pm.isRegistered("i2ptunnel")) + if (!pm.isRegistered(PortMapper.SVC_I2PTUNNEL)) continue; + // need both webapp and TCG, but we aren't refreshing + // the icons, so let's not do this + //ClientAppManager cmgr = _context.clientAppManager(); + //if (cmgr != null && cmgr.getRegisteredApp("i2ptunnel") == null) + // continue; } else if (url.equals("/configplugins")) { if (!PluginStarter.pluginsEnabled(_context)) continue; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java index 88977c7c14e209b1058e1b03f3495f215d03a61c..98915f0de1b2a0583c55e432d06668f67a33b648 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java @@ -354,7 +354,7 @@ class SummaryBarRenderer { svcs.put(tx, rbuf.toString()); } - if (pm.isRegistered(PortMapper.SVC_I2PTUNNEL)) { + if (_helper.isI2PTunnelRunning()) { String tx = _t("Hidden Services Manager"); rbuf.setLength(0); rbuf.append("<a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"") diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java index dc9480c094287ae3e9a7936249bd3802ea704231..689ea3d5342ff46c3d6c8c516ae74577e219c292 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; +import net.i2p.app.ClientAppManager; import net.i2p.data.DataHelper; import net.i2p.data.Destination; import net.i2p.data.Hash; @@ -565,6 +566,18 @@ public class SummaryHelper extends HelperBase { return DataHelper.formatSize2Decimal(sent) + 'B'; } + /** + * Are both the webapp and TCG running? + * + * @since 0.9.58 + */ + public boolean isI2PTunnelRunning() { + if (!_context.portMapper().isRegistered(PortMapper.SVC_I2PTUNNEL)) + return false; + ClientAppManager cmgr = _context.clientAppManager(); + return cmgr != null && cmgr.getRegisteredApp("i2ptunnel") != null; + } + /** * Client destinations connected locally. * @@ -575,7 +588,7 @@ public class SummaryHelper extends HelperBase { List<Destination> clients = new ArrayList<Destination>(_context.clientManager().listClients()); StringBuilder buf = new StringBuilder(512); - boolean link = _context.portMapper().isRegistered("i2ptunnel"); + boolean link = isI2PTunnelRunning(); buf.append("<h3>"); if (link) { buf.append("<a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"") diff --git a/core/java/src/net/i2p/util/PortMapper.java b/core/java/src/net/i2p/util/PortMapper.java index 661904f20183dc0bacfb6d0f0acd39b832b53cb5..3553c9b5ae166ab0c384d25210438541ca990fb7 100644 --- a/core/java/src/net/i2p/util/PortMapper.java +++ b/core/java/src/net/i2p/util/PortMapper.java @@ -60,6 +60,10 @@ public class PortMapper { /** * To indicate presence, alternative to WebAppStarter.isWebappRunning(). * For actual base URL, use getConsoleURL() + * + * Note: This is only the webapp. Also requires TCG running to be useful. + * The webapp does not start TCG. + * * @since 0.9.34 */ public static final String SVC_I2PTUNNEL = "i2ptunnel";