diff options
Diffstat (limited to 'src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java')
-rw-r--r-- | src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java b/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java index 5165a9c..ca4b7a5 100644 --- a/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java +++ b/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java @@ -1,15 +1,18 @@ package de.bwlehrpool.bwlp_guac; -import java.io.IOException; +import java.io.*; +import java.net.Socket; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicLong; +import org.apache.guacamole.net.auth.Credentials; import org.apache.guacamole.protocol.GuacamoleConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import de.bwlehrpool.bwlp_guac.JsonClient.State; + public class AvailableClient implements Cloneable { private static final Logger LOGGER = LoggerFactory.getLogger(AvailableClient.class); @@ -197,6 +200,29 @@ public class AvailableClient implements Cloneable { } } + public void remoteLogin(Credentials credentials, String resolution) { + String username = credentials.getUsername(); + try { + LOGGER.info("Logging in user " + username + " on client " + this); + + Socket socket = new Socket(this.clientip, 1234); // TODO Port? + OutputStream output = socket.getOutputStream(); + + int version = 1; + output.write(version & 0xFF); + output.write(version >> 8); + + String data = username + "\n" + credentials.getPassword() + "\n" + resolution; + output.write(data.getBytes()); + + output.flush(); + + socket.close(); + } catch (IOException e) { + LOGGER.warn("Login failed. User: " + username + " Client: " + this, e); + } + } + @Override public AvailableClient clone() { AvailableClient c = new AvailableClient(this.clientip); |