StatusAPI/src/main/java/net/viper/status/StatusAPI.java aktualisiert

This commit is contained in:
2026-01-01 21:49:10 +00:00
parent 395a26f023
commit 519bb5161e

View File

@@ -56,8 +56,12 @@ public class StatusAPI extends Plugin implements Runnable {
} }
private void handleConnection(Socket clientSocket) { private void handleConnection(Socket clientSocket) {
try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); BufferedReader in = null;
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) { OutputStream out = null;
try {
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = clientSocket.getOutputStream();
String inputLine = in.readLine(); String inputLine = in.readLine();
@@ -68,20 +72,18 @@ public class StatusAPI extends Plugin implements Runnable {
// --- VERSION CLEANUP START --- // --- VERSION CLEANUP START ---
String versionRaw = ProxyServer.getInstance().getVersion(); String versionRaw = ProxyServer.getInstance().getVersion();
String versionClean = versionRaw; // Fallback String versionClean = versionRaw;
// Regex um die saubere Version zu extrahieren (z.B. 1.21-R0.5-SNAPSHOT) if (versionRaw.contains("BungeeCord-Bootstrap:")) {
// Aus: git:BungeeCord-Bootstrap:1.21-R0.5-SNAPSHOT:36e6154:2012
if (versionRaw.matches("git-BungeeCord-Bootstrap:.*")) {
String[] parts = versionRaw.split(":"); String[] parts = versionRaw.split(":");
if(parts.length > 2) { if(parts.length >= 3) {
versionClean = parts[2]; versionClean = parts[2];
} }
} }
data.put("version", versionClean); data.put("version", versionClean);
// --- VERSION CLEANUP ENDE --- // --- VERSION CLEANUP ENDE ---
data.put("max_players", ProxyServer.getInstance().getConfig().getPlayerLimit()); data.put("max_players", String.valueOf(ProxyServer.getInstance().getConfig().getPlayerLimit()));
String motd = "BungeeCord"; String motd = "BungeeCord";
try { try {
@@ -101,17 +103,37 @@ public class StatusAPI extends Plugin implements Runnable {
data.put("players", playerNames); data.put("players", playerNames);
String json = buildJsonString(data); String json = buildJsonString(data);
byte[] jsonBytes = json.getBytes("UTF-8");
out.println("HTTP/1.1 200 OK"); // HTTP Response mit korrekter Byte-Length
out.println("Content-Type: application/json"); StringBuilder response = new StringBuilder();
out.println("Access-Control-Allow-Origin: *"); response.append("HTTP/1.1 200 OK\r\n");
out.println("Content-Length: " + json.length()); response.append("Content-Type: application/json; charset=UTF-8\r\n");
out.println("Connection: close"); response.append("Access-Control-Allow-Origin: *\r\n");
out.println(); response.append("Content-Length: ").append(jsonBytes.length).append("\r\n");
out.println(json); response.append("Connection: close\r\n");
response.append("\r\n");
// Header senden
out.write(response.toString().getBytes("UTF-8"));
// Body senden
out.write(jsonBytes);
out.flush();
} }
} catch (Exception e) { } catch (Exception e) {
getLogger().severe("Fehler beim Verarbeiten der Anfrage: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
} finally {
// Sauber aufräumen
try {
if (out != null) out.close();
if (in != null) in.close();
if (clientSocket != null && !clientSocket.isClosed()) {
clientSocket.close();
}
} catch (IOException e) {
// Ignorieren
}
} }
} }