aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gq/malwarefight/tokenapp/SocketThread.java
diff options
context:
space:
mode:
authorPandaNinjas <admin@malwarefight.gq>2022-12-23 17:29:28 -0800
committerPandaNinjas <admin@malwarefight.gq>2022-12-23 17:29:28 -0800
commitbd6b4db71f1e07a845d922dc30cefcc64afa6294 (patch)
tree3ec253f13a0bfa20a8c0b467657d80265c12593a /src/main/java/gq/malwarefight/tokenapp/SocketThread.java
downloadNoSession-bd6b4db71f1e07a845d922dc30cefcc64afa6294.tar.gz
NoSession-bd6b4db71f1e07a845d922dc30cefcc64afa6294.tar.bz2
NoSession-bd6b4db71f1e07a845d922dc30cefcc64afa6294.zip
Initial commit
Diffstat (limited to 'src/main/java/gq/malwarefight/tokenapp/SocketThread.java')
-rw-r--r--src/main/java/gq/malwarefight/tokenapp/SocketThread.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/main/java/gq/malwarefight/tokenapp/SocketThread.java b/src/main/java/gq/malwarefight/tokenapp/SocketThread.java
new file mode 100644
index 0000000..572ca57
--- /dev/null
+++ b/src/main/java/gq/malwarefight/tokenapp/SocketThread.java
@@ -0,0 +1,64 @@
+package gq.malwarefight.tokenapp;
+
+import com.mojang.authlib.exceptions.AuthenticationException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.nio.charset.StandardCharsets;
+import java.util.Scanner;
+
+public class SocketThread extends Thread {
+ private final Socket sock;
+ public SocketThread(Socket sock) {
+ this.sock = sock;
+ }
+
+ public void writeResponse(String output, OutputStream outputStream) throws IOException {
+ outputStream.write(
+ (output + "\n").getBytes(StandardCharsets.UTF_8)
+ );
+ outputStream.flush();
+ }
+
+ @Override
+ public void run() {
+ try {
+ InputStream in = sock.getInputStream();
+ OutputStream out = sock.getOutputStream();
+ Scanner scanner = new Scanner(in, StandardCharsets.UTF_8.name());
+ while (true) {
+ if (scanner.hasNextLine()) {
+ String line = scanner.nextLine();
+ String[] parts = line.split(" ");
+ if ("login".equals(parts[0])) {
+ try {
+ Main.sessionService.joinServer(
+ Main.gameProfile, Main.authenticationService.getClientToken(), parts[1]
+ );
+ } catch (Exception e) {
+ if (e instanceof ArrayIndexOutOfBoundsException) {
+ writeResponse("400 Bad Request", out);
+ } else if (e instanceof AuthenticationException) {
+ writeResponse("401 Unauthorized", out);
+ } else {
+ writeResponse("500 Internal Server Error", out);
+ }
+ continue;
+ }
+ writeResponse("200 OK", out);
+ } else if ("disconnect".equals(parts[0])) {
+ sock.close();
+ } else if ("fullquit".equals(parts[0])) {
+ Main.running = false;
+ sock.close();
+ return;
+ } else {
+ writeResponse("418 I'm a teapot", out);
+ }
+ }
+ }
+ } catch (IOException ignored) {}
+ }
+}