diff options
Diffstat (limited to 'src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java')
-rw-r--r-- | src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java b/src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java new file mode 100644 index 0000000..26aa93c --- /dev/null +++ b/src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java @@ -0,0 +1,40 @@ +package de.bwlehrpool.bwlp_guac; + +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.net.event.TunnelCloseEvent; +import org.apache.guacamole.net.event.TunnelConnectEvent; +import org.apache.guacamole.net.event.listener.Listener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashSet; + +/** + * A listener to track whether a user currently is connected to a tunnel. + */ +public class TunnelListener implements Listener { + + private static final Logger LOGGER = LoggerFactory.getLogger(TunnelListener.class); + + private static final HashSet<String> usersWithTunnel = new HashSet<String>(); + + public static boolean hasTunnel(String username) { + return usersWithTunnel.contains(username); + } + + @Override + public void handleEvent(Object event) throws GuacamoleException { + if (event instanceof TunnelConnectEvent) { + String username = ((TunnelConnectEvent)event).getCredentials().getUsername(); + LOGGER.info("User " + username + " connected to a tunnel."); + usersWithTunnel.add(username); + } + else if (event instanceof TunnelCloseEvent) { + String username = ((TunnelCloseEvent)event).getCredentials().getUsername(); + LOGGER.info("User " + username + " closed a tunnel."); + usersWithTunnel.remove(username); + } + + } + +} |