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