summaryrefslogtreecommitdiffstats
path: root/src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java')
-rw-r--r--src/main/java/de/bwlehrpool/bwlp_guac/TunnelListener.java40
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);
+ }
+
+ }
+
+}