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) {
try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
BufferedReader in = null;
OutputStream out = null;
try {
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = clientSocket.getOutputStream();
String inputLine = in.readLine();
@@ -68,20 +72,18 @@ public class StatusAPI extends Plugin implements Runnable {
// --- VERSION CLEANUP START ---
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)
// Aus: git:BungeeCord-Bootstrap:1.21-R0.5-SNAPSHOT:36e6154:2012
if (versionRaw.matches("git-BungeeCord-Bootstrap:.*")) {
if (versionRaw.contains("BungeeCord-Bootstrap:")) {
String[] parts = versionRaw.split(":");
if(parts.length > 2) {
if(parts.length >= 3) {
versionClean = parts[2];
}
}
data.put("version", versionClean);
// --- VERSION CLEANUP ENDE ---
data.put("max_players", ProxyServer.getInstance().getConfig().getPlayerLimit());
data.put("max_players", String.valueOf(ProxyServer.getInstance().getConfig().getPlayerLimit()));
String motd = "BungeeCord";
try {
@@ -101,17 +103,37 @@ public class StatusAPI extends Plugin implements Runnable {
data.put("players", playerNames);
String json = buildJsonString(data);
byte[] jsonBytes = json.getBytes("UTF-8");
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: application/json");
out.println("Access-Control-Allow-Origin: *");
out.println("Content-Length: " + json.length());
out.println("Connection: close");
out.println();
out.println(json);
// HTTP Response mit korrekter Byte-Length
StringBuilder response = new StringBuilder();
response.append("HTTP/1.1 200 OK\r\n");
response.append("Content-Type: application/json; charset=UTF-8\r\n");
response.append("Access-Control-Allow-Origin: *\r\n");
response.append("Content-Length: ").append(jsonBytes.length).append("\r\n");
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) {
getLogger().severe("Fehler beim Verarbeiten der Anfrage: " + e.getMessage());
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
}
}
}