StatusAPI/src/main/java/net/viper/status/StatusAPI.java aktualisiert
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user