Verify/src/main/java/de/mviper/verify/Verify.java gelöscht

This commit is contained in:
2026-01-08 14:25:09 +00:00
parent cc6d7577ea
commit e55126c266

View File

@@ -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 <token>");
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");
}
}