From 6c349d0ec4d927fc4ad3f680c12eaffdd2439bbc Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 4 Jun 2009 16:06:39 +0000 Subject: [PATCH] Add standby indication to i2ptunnel page --- .../java/src/net/i2p/i2ptunnel/I2PTunnel.java | 4 ++-- .../java/src/net/i2p/i2ptunnel/TunnelController.java | 10 ++++++++++ .../java/src/net/i2p/i2ptunnel/web/IndexBean.java | 9 +++++++-- apps/i2ptunnel/jsp/index.jsp | 5 +++++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java index 8e7627309..486bcdead 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java @@ -75,7 +75,7 @@ public class I2PTunnel implements Logging, EventDispatcher { private static long __tunnelId = 0; private long _tunnelId; private Properties _clientOptions; - private final List _sessions; + private final List<I2PSession> _sessions; public static final int PACKET_DELAY = 100; @@ -179,7 +179,7 @@ public class I2PTunnel implements Logging, EventDispatcher { } } - List getSessions() { + List<I2PSession> getSessions() { synchronized (_sessions) { return new ArrayList(_sessions); } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java index 419e5a899..1f67783e9 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java @@ -434,6 +434,16 @@ public class TunnelController implements Logging { public boolean getIsRunning() { return _running; } public boolean getIsStarting() { return _starting; } + /** if running but no open sessions, we are in standby */ + public boolean getIsStandby() { + if (!_running) + return false; + for (I2PSession sess : _tunnel.getSessions()) { + if (!sess.isClosed()) + return false; + } + return true; + } public void getSummary(StringBuffer buf) { String type = getType(); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java index 0c0d86b3e..4c23ced34 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -77,6 +77,7 @@ public class IndexBean { public static final int RUNNING = 1; public static final int STARTING = 2; public static final int NOT_RUNNING = 3; + public static final int STANDBY = 4; public static final String PROP_TUNNEL_PASSPHRASE = "i2ptunnel.passphrase"; static final String PROP_NONCE = IndexBean.class.getName() + ".nonce"; @@ -412,8 +413,12 @@ public class IndexBean { public int getTunnelStatus(int tunnel) { TunnelController tun = getController(tunnel); if (tun == null) return NOT_RUNNING; - if (tun.getIsRunning()) return RUNNING; - else if (tun.getIsStarting()) return STARTING; + if (tun.getIsRunning()) { + if (isClient(tunnel) && tun.getIsStandby()) + return STANDBY; + else + return RUNNING; + } else if (tun.getIsStarting()) return STARTING; else return NOT_RUNNING; } diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index 4d9f6c57d..6c89d5ff4 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -97,6 +97,11 @@ case IndexBean.STARTING: %><div class="statusStarting text">Starting...</div> <a class="control" title="Stop this Tunnel" href="index.jsp?nonce=<%=indexBean.getNextNonce()%>&action=stop&tunnel=<%=curClient%>">Stop</a> + <% + break; + case IndexBean.STANDBY: + %><div class="statusStarting text">Standby</div> + <a class="control" title="Stop this Tunnel" href="index.jsp?nonce=<%=indexBean.getNextNonce()%>&action=stop&tunnel=<%=curClient%>">Stop</a> <% break; case IndexBean.RUNNING: -- GitLab