From e55126c26657d9e0eb6485a09d49fed18c91b36c Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 8 Jan 2026 14:25:09 +0000 Subject: [PATCH] =?UTF-8?q?Verify/src/main/java/de/mviper/verify/Verify.ja?= =?UTF-8?q?va=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/de/mviper/verify/Verify.java | 146 ------------------ 1 file changed, 146 deletions(-) delete mode 100644 Verify/src/main/java/de/mviper/verify/Verify.java diff --git a/Verify/src/main/java/de/mviper/verify/Verify.java b/Verify/src/main/java/de/mviper/verify/Verify.java deleted file mode 100644 index d6c3e7f..0000000 --- a/Verify/src/main/java/de/mviper/verify/Verify.java +++ /dev/null @@ -1,146 +0,0 @@ -package de.mviper.verify; - -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.plugin.java.JavaPlugin; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import java.net.*; -import java.io.*; -import java.nio.charset.Charset; - -public class Verify extends JavaPlugin implements CommandExecutor { - - private String wpVerifyUrl; - private String sharedSecret; - private int serverId; - - @Override - public void onEnable() { - saveDefaultConfig(); - wpVerifyUrl = getConfig().getString("wp_verify_url", "http://deine-wp-domain.tld"); - sharedSecret = getConfig().getString("shared_secret", "ChangeMe"); - serverId = getConfig().getInt("server_id", 0); - getCommand("verify").setExecutor(this); - getLogger().info("Verify enabled for server ID: " + serverId + " | WP URL: " + wpVerifyUrl); - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "Nur Spieler können diesen Befehl benutzen."); - return true; - } - Player p = (Player) sender; - if (args.length != 1) { - p.sendMessage(ChatColor.YELLOW + "Benutzung: /verify "); - return true; - } - String token = args[0].trim(); - String playerName = p.getName(); - - HttpURLConnection conn = null; - try { - // FIX: Explizit UTF-8 für die Signatur - Charset utf8 = Charset.forName("UTF-8"); - String signature = hmacSHA256(playerName + token, sharedSecret, utf8); - - // FIX: Explizit UTF-8 für den Payload - String payload = "{\"player\":\"" + escapeJson(playerName) + "\",\"token\":\"" + escapeJson(token) + "\",\"server_id\":" + serverId + ",\"signature\":\"" + signature + "\"}"; - - URL url = new URL(wpVerifyUrl + "/wp-json/mc-gallery/v1/verify"); - conn = (HttpURLConnection) url.openConnection(); - conn.setConnectTimeout(5000); - conn.setReadTimeout(7000); - conn.setDoOutput(true); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); - - try (OutputStream os = conn.getOutputStream()) { - os.write(payload.getBytes(utf8)); - } - - int code = conn.getResponseCode(); - String resp; - - // FIX: Antwort immer als UTF-8 lesen, egal ob 200 oder 403 - if (code >= 200 && code < 300) { - InputStream is = conn.getInputStream(); - resp = streamToString(is, utf8); - } else { - InputStream es = conn.getErrorStream(); - resp = streamToString(es, utf8); - } - - // Antwort parsen - if (resp != null && !resp.isEmpty() && resp.trim().startsWith("{")) { - // Erfolgreiche Übertragung, nun JSON parsen - - // Checken ob success true ist - boolean isSuccess = resp.contains("\"success\":true"); - - // Die message auslesen - String message = "Ein unbekannter Fehler ist aufgetreten."; - int keyIndex = resp.indexOf("\"message\":\""); - if (keyIndex != -1) { - int startIndex = keyIndex + 11; - int endIndex = resp.indexOf("\"", startIndex); - if (endIndex != -1) { - message = resp.substring(startIndex, endIndex); - } - } - - // Nachricht senden (mit Farbcodes) - if (isSuccess) { - p.sendMessage(ChatColor.GREEN + "✓ " + message); - p.sendMessage(ChatColor.GRAY + "Du kannst nun Bilder hochladen!"); - } else { - // Hier landen Fehler wie "Name stimmt nicht überein" oder 403 - // Durch die UTF-8 Lesung sollten Umlaute jetzt korrekt sein - p.sendMessage(ChatColor.RED + "✗ " + message); - } - } else { - p.sendMessage(ChatColor.RED + "✗ Fehler beim Verbinden mit der Webseite (Code: " + code + ")"); - } - } catch (Exception ex) { - p.sendMessage(ChatColor.RED + "✗ Ein interner Fehler ist aufgetreten."); - getLogger().warning("Verify error: " + ex.getMessage()); - ex.printStackTrace(); - } finally { - if (conn != null) { - conn.disconnect(); - } - } - - return true; - } - - // FIX: UTF-8 als Parameter übergeben - private static String hmacSHA256(String data, String key, Charset charset) throws Exception { - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(key.getBytes(charset), "HmacSHA256")); - byte[] raw = mac.doFinal(data.getBytes(charset)); - StringBuilder sb = new StringBuilder(); - for (byte b : raw) sb.append(String.format("%02x", b)); - return sb.toString(); - } - - // FIX: UTF-8 als Parameter übergeben - private static String streamToString(InputStream in, Charset charset) throws IOException { - if (in == null) return ""; - try (BufferedReader br = new BufferedReader(new InputStreamReader(in, charset))) { - StringBuilder sb = new StringBuilder(); - String line; - while ((line = br.readLine()) != null) sb.append(line); - return sb.toString(); - } - } - - private static String escapeJson(String s) { - return s.replace("\\", "\\\\").replace("\"","\\\"").replace("\n","\\n").replace("\r","\\r"); - } -} \ No newline at end of file