diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigTunnelsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigTunnelsHelper.java index 2bce1cb59..ca4a1e708 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigTunnelsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigTunnelsHelper.java @@ -38,7 +38,9 @@ public class ConfigTunnelsHelper extends HelperBase { TunnelPoolSettings in = _context.tunnelManager().getInboundSettings(dest.calculateHash()); TunnelPoolSettings out = _context.tunnelManager().getOutboundSettings(dest.calculateHash()); - if ( (in == null) || (out == null) ) continue; + if (in == null || in.getAliasOf() != null || + out == null || out.getAliasOf() != null) + continue; String name = in.getDestinationNickname(); if (name == null) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java index 25ea1e475..814d7c074 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java @@ -8,6 +8,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Set; import net.i2p.data.DataHelper; import net.i2p.data.Hash; @@ -50,6 +51,11 @@ class TunnelRenderer { continue; TunnelPool in = clientInboundPools.get(client); TunnelPool outPool = clientOutboundPools.get(client); + if ((in != null && in.getSettings().getAliasOf() != null) || + (outPool != null && outPool.getSettings().getAliasOf() != null)) { + // skip aliases, we will print a header under the main tunnel pool below + continue; + } // TODO the following code is duplicated in SummaryHelper String name = (in != null) ? in.getSettings().getDestinationNickname() : null; if ( (name == null) && (outPool != null) ) @@ -62,6 +68,26 @@ class TunnelRenderer { out.write(" [" + _t("configure") + "]\n"); else out.write(" (" + _t("dead") + ")\n"); + if (in != null) { + // list aliases + Set aliases = in.getSettings().getAliases(); + if (aliases != null) { + for (Hash a : aliases) { + TunnelPool ain = clientInboundPools.get(a); + if (ain != null) { + String aname = ain.getSettings().getDestinationNickname(); + if (aname == null) + aname = a.toBase64().substring(0,4); + out.write("

" + _t("Client tunnels for") + ' ' + DataHelper.escapeHTML(_t(aname))); + if (isLocal) + out.write(" [" + _t("configure") + "]

\n"); + else + out.write(" (" + _t("dead") + ")\n"); + } + } + } + } renderPool(out, in, outPool); }