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 usersWithTunnel = new HashSet(); 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); } } }