From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: AlphaKR93 Date: Tue, 5 Nov 2024 18:31:09 +0900 Subject: [PATCH] Hashed rcon password diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java index 3dd5c7441bb300ca17d717af37edbefb89db4b2f..df367fbb8c582614aaf2087aa37d5e47247af810 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java @@ -73,7 +73,6 @@ public class DedicatedServerProperties extends Settings> { return v1; } + // Plazma start - Settings helper + protected void set(String key, V value) { this.properties.put(key, value); } + protected void remove(String key) { this.properties.remove(key); } + // Plazma end - Settings helper + protected Settings.MutableValue getMutable(String key, Function parser, Function stringifier, V fallback) { String s1 = this.getStringRaw(key); V v1 = MoreObjects.firstNonNull(s1 != null ? parser.apply(s1) : null, fallback); diff --git a/src/main/java/net/minecraft/server/rcon/thread/RconClient.java b/src/main/java/net/minecraft/server/rcon/thread/RconClient.java index 1c3775c6d29a85803c87948c64ec81cbeb87aef4..4f6f46398ac0814a95d8253cc5f575b8f09f7209 100644 --- a/src/main/java/net/minecraft/server/rcon/thread/RconClient.java +++ b/src/main/java/net/minecraft/server/rcon/thread/RconClient.java @@ -26,13 +26,12 @@ public class RconClient extends GenericThread { private boolean authed; private final Socket client; private final byte[] buf = new byte[1460]; - private final String rconPassword; // CraftBukkit start private final DedicatedServer serverInterface; private final RconConsoleSource rconConsoleSource; // CraftBukkit end - RconClient(ServerInterface server, String password, Socket socket) { + RconClient(ServerInterface server, Socket socket) {// Plazma - hashed rcon password super("RCON Client " + String.valueOf(socket.getInetAddress())); this.serverInterface = (DedicatedServer) server; // CraftBukkit this.client = socket; @@ -43,7 +42,6 @@ public class RconClient extends GenericThread { this.running = false; } - this.rconPassword = password; this.rconConsoleSource = new net.minecraft.server.rcon.RconConsoleSource(this.serverInterface, socket.getRemoteSocketAddress()); // CraftBukkit } @@ -93,7 +91,7 @@ public class RconClient extends GenericThread { String s1 = PktUtils.stringFromByteArray(this.buf, j, i); int j1 = j + s1.length(); - if (!s1.isEmpty() && s1.equals(this.rconPassword)) { + if (!s1.isEmpty() && serverInterface.getProperties().matchRconPassword(s1)) { this.authed = true; this.send(l, 2, ""); continue; diff --git a/src/main/java/net/minecraft/server/rcon/thread/RconThread.java b/src/main/java/net/minecraft/server/rcon/thread/RconThread.java index c12d7db2b048a327c0e8f398848cd3a9bce0ebce..150cecc44a7f49740fa400e02de09671ff8b392a 100644 --- a/src/main/java/net/minecraft/server/rcon/thread/RconThread.java +++ b/src/main/java/net/minecraft/server/rcon/thread/RconThread.java @@ -16,15 +16,13 @@ import org.slf4j.Logger; public class RconThread extends GenericThread { private static final Logger LOGGER = LogUtils.getLogger(); private final ServerSocket socket; - private final String rconPassword; private final List clients = Lists.newArrayList(); private final ServerInterface serverInterface; - private RconThread(ServerInterface server, ServerSocket listener, String password) { + private RconThread(ServerInterface server, ServerSocket listener) {// Plazma - hashed rcon password super("RCON Listener"); this.serverInterface = server; this.socket = listener; - this.rconPassword = password; } private void clearClients() { @@ -37,7 +35,7 @@ public class RconThread extends GenericThread { while (this.running) { try { Socket socket = this.socket.accept(); - RconClient rconClient = new RconClient(this.serverInterface, this.rconPassword, socket); + RconClient rconClient = new RconClient(this.serverInterface, socket); // Plazma - hashed rcon password rconClient.start(); this.clients.add(rconClient); this.clearClients(); @@ -64,15 +62,14 @@ public class RconThread extends GenericThread { int i = dedicatedServerProperties.rconPort; if (0 < i && 65535 >= i) { - String string2 = dedicatedServerProperties.rconPassword; - if (string2.isEmpty()) { + if (!dedicatedServerProperties.shouldStartRCON()) { // Plazma - hashed rcon password LOGGER.warn("No rcon password set in server.properties, rcon disabled!"); return null; } else { try { ServerSocket serverSocket = new ServerSocket(i, 0, InetAddress.getByName(string)); serverSocket.setSoTimeout(500); - RconThread rconThread = new RconThread(server, serverSocket, string2); + RconThread rconThread = new RconThread(server, serverSocket); // Plazma - hashed rcon password if (!rconThread.start()) { return null; } else {