diff --git a/README.md b/README.md index 7efaa16..a279436 100644 --- a/README.md +++ b/README.md @@ -1,284 +1,404 @@ # StatusAPI -![Version](https://img.shields.io/badge/version-4.1.0-0B63CE?style=for-the-badge) -![Platform](https://img.shields.io/badge/platform-BungeeCord-D48700?style=for-the-badge) -![Minecraft](https://img.shields.io/badge/Minecraft-1.20%2B-1E9E5A?style=for-the-badge) -![Java](https://img.shields.io/badge/Java-8%2B-C0392B?style=for-the-badge) -![API](https://img.shields.io/badge/HTTP%20API-Status%20%2B%20Broadcast%20%2B%20Attack-6F42C1?style=for-the-badge) +

+ + + + +

-StatusAPI ist ein modulares BungeeCord-Plugin für Netzwerkbetrieb, Moderation und Integrationen. -Der Fokus liegt auf Live-Status, Chat/Support, Verifizierung, Forum-Bridge, Broadcasts und Network-Guard mit AntiBot. +

+ Modulares BungeeCord-Plugin für Netzwerkbetrieb, Moderation und Integrationen.
+ Live-Status · Chat & Support · Verifizierung · Forum-Bridge · Broadcasts · AntiBot · BackendJoinGuard +

-## Rechtlicher Hinweis +--- -Dieses Projekt sowie alle enthaltenen Module, Quelltexte und Ressourcen dürfen nicht verändert, kopiert oder weiterverbreitet werden. -Jegliche Nutzung, Modifikation oder Weitergabe, ganz oder teilweise, ist ausschließlich mit vorheriger schriftlicher Genehmigung des Entwicklers gestattet. -© Entwickelt von M_Viper. Alle Rechte vorbehalten. +> **Rechtlicher Hinweis** +> Dieses Projekt sowie alle enthaltenen Module, Quelltexte und Ressourcen dürfen nicht verändert, kopiert oder weiterverbreitet werden. Jegliche Nutzung, Modifikation oder Weitergabe ist ausschließlich mit vorheriger schriftlicher Genehmigung des Entwicklers gestattet. +> © Entwickelt von M_Viper. Alle Rechte vorbehalten. -## Was das Plugin kann +--- -### Core und API +## Übersicht -- Eigener HTTP-Server über konfigurierbaren Port +Dieses Repository enthält zwei aufeinander abgestimmte Plugins: + +| Plugin | Plattform | Zweck | +|---|---|---| +| **StatusAPI** | BungeeCord (Proxy) | HTTP-API, AntiBot, Chat, Moderation, Verify, Forum | +| **BackendJoinGuard** | Paper / Spigot (Backend) | Verhindert Direktjoins am Proxy vorbei | + +BackendJoinGuard kann eigenständig betrieben werden oder seine Schutzregeln automatisch per Sync von StatusAPI beziehen. + +--- + +## Inhaltsverzeichnis + +- [StatusAPI](#statusapi-1) + - [Module](#module) + - [HTTP API](#http-api) + - [Commands](#commands-statusapi) + - [Permissions](#permissions-statusapi) + - [Konfiguration](#konfiguration-statusapi) +- [BackendJoinGuard](#backendjoinguard-1) + - [Betriebsarten](#betriebsarten) + - [Commands & Permissions](#commands--permissions-backendjoinguard) + - [Konfiguration](#konfiguration-backendjoinguard) +- [Voraussetzungen & Installation](#voraussetzungen--installation) +- [Troubleshooting](#troubleshooting) + +--- + +## StatusAPI + +### Module + +
+Core & HTTP-API + +- Eigener HTTP-Server über konfigurierbaren Port (`statusapi.port`, Standard: `9191`) - JSON-Statusausgabe mit Spieler-, Prefix-, Bedrock-, Netzwerk- und Systemdaten - POST-Endpunkte für Broadcast, Broadcast-Abbruch, Forum-Notify und Attack-Events -### NetworkInfo Modul +
+ +
+NetworkInfo - Live-Snapshot für Proxy, Uptime, RAM, CPU, Backends und Ping -- Ingame-Befehl für Statusprüfung -- Discord-Webhook-Meldungen für: - - Start und Stop - - hohe RAM-Auslastung - - hohe Spieler-Auslastung - - Attack Detected und Attack Stopped -- Embed-Modus über Konfiguration: - - compact - - detailed +- Ingame-Befehl `/netinfo` für Statusprüfung +- Discord-Webhook-Meldungen bei: Server-Start/-Stop, hoher RAM-/Spieler-Auslastung, Attack Detected/Stopped +- Embed-Modus konfigurierbar: `compact` oder `detailed` -### AntiBot Modul +
-- CPS-basierte Attack-Erkennung mit Start- und Stop-Schwellen +
+AntiBot + +- CPS-basierte Attack-Erkennung mit konfigurierbaren Start- und Stop-Schwellen - Pro-IP Rate-Limit mit temporären IP-Blocks -- Optionaler VPN/Proxy/Hosting-Check über ip-api -- Profile strict und high-traffic -- Laufzeitverwaltung per Command: - - Status anzeigen - - Blocks leeren - - einzelne IP entblocken - - Profil wechseln und speichern - - Konfiguration neu laden +- Optionaler VPN/Proxy/Hosting-Check via ip-api +- Profile: `strict` und `high-traffic` +- Laufzeitverwaltung über `/antibot` (Status, Blocks leeren, IP entblocken, Profil wechseln, Reload) -### Chat und Moderation +
-- Mehrere Chat-Kanäle -- PM-System mit Reply -- Ignore-System -- Mute und Unmute -- Mentions -- Emoji-Unterstützung -- SocialSpy +
+Chat & Moderation + +- Mehrere Chat-Kanäle, PM-System mit Reply, Ignore-System +- Mute/Unmute, Mentions, Emoji-Unterstützung, SocialSpy - Chat-History und Admin-Infos -- Report-System inklusive Close-Flow +- Report-System inkl. Close-Flow - Weiterleitung an Discord und Telegram (konfigurierbar) -### Verify, Forum und CommandBlocker +
+ +
+Verify, Forum & CommandBlocker - Spieler-Verifizierung über Token -- Forum-Linking und Forum-Benachrichtigungen im Spiel -- Command-Blocker mit /cb Verwaltung +- Forum-Linking und Forum-Benachrichtigungen ingame +- Command-Blocker mit `/cb`-Verwaltung -### AutoMessage und CustomCommands +
-- Rotierende Auto-Nachrichten aus Datei (intervallgesteuert) +
+AutoMessage & CustomCommands + +- Rotierende Auto-Nachrichten aus `messages.txt` (intervallgesteuert) - Eigene Command-Mappings über `customcommands.yml` - Optionaler `/chat`-Command (steuerbar per Konfiguration) -- Reload der CustomCommands über `/bcmds` +- Reload via `/bcmds` -## Voraussetzungen +
-- BungeeCord Proxy -- Minecraft 1.20+ -- Java 8+ -- Optional: - - LuckPerms - - Geyser-BungeeCord - - Discord Webhook/Bot - - Telegram Bot - - WordPress/Forum-Backend +--- -## Installation +### HTTP API -1. JAR nach plugins kopieren. -2. Proxy starten, damit Dateien erzeugt werden. -3. Proxy stoppen. -4. Konfigurationen anpassen: - - plugins/StatusAPI/verify.properties - - plugins/StatusAPI/chat.yml - - plugins/StatusAPI/network-guard.properties - - plugins/StatusAPI/blocked-commands.yml -5. Proxy neu starten. +Basis-URL: `http://:9191` – Port konfigurierbar über `statusapi.port`. -## HTTP API - -Standard-Port ist 9191 und wird über statusapi.port gesetzt. - -| Methode | Pfad | Zweck | Auth | +| Methode | Pfad | Beschreibung | Auth | |---|---|---|---| -| GET | / | Voller Status als JSON | keine | -| POST | /broadcast | Broadcast senden oder planen | x-api-key aus Broadcast-Konfiguration | -| POST | /broadcast/cancel | Geplanten Broadcast abbrechen | x-api-key | -| POST | /cancel | Alias für broadcast/cancel | x-api-key | -| POST | /forum/notify | Forum-Notification an Proxy | x-api-key bzw. Forum-Secret-Flow | -| POST | /network/attack | Attack Detected/Stopped an Discord-Webhook melden | x-api-key aus networkinfo.attack.api_key | +| `GET` | `/` | Voller Netzwerk-Status als JSON | – | +| `POST` | `/broadcast` | Broadcast senden oder planen | `x-api-key` | +| `POST` | `/broadcast/cancel` | Geplanten Broadcast abbrechen | `x-api-key` | +| `POST` | `/cancel` | Alias für `/broadcast/cancel` | `x-api-key` | +| `POST` | `/forum/notify` | Forum-Notification an Proxy | `x-api-key` / Forum-Secret | +| `POST` | `/network/attack` | Attack-Event an Discord-Webhook melden | `x-api-key` | +| `GET` | `/network/backendguard/config` | Guard-Regeln für BackendJoinGuard Sync | `x-api-key` | -## Commands +--- -### Netzwerk und Schutz +### Commands (StatusAPI) + +#### Netzwerk & Schutz | Command | Beschreibung | |---|---| -| /netinfo | Zeigt Netzwerk- und Systemstatus | -| /antibot status | Zeigt AntiBot Status | -| /antibot clearblocks | Entfernt aktive IP-Blocks | -| /antibot unblock | Entblockt eine IP | -| /antibot profile | Wechselt Profil und speichert Werte | -| /antibot reload | Lädt AntiBot-Konfiguration neu | +| `/netinfo` | Netzwerk- und Systemstatus anzeigen | +| `/antibot status` | AntiBot-Status anzeigen | +| `/antibot clearblocks` | Alle aktiven IP-Blocks entfernen | +| `/antibot unblock ` | Einzelne IP entblocken | +| `/antibot profile ` | Profil wechseln und speichern | +| `/antibot reload` | AntiBot-Konfiguration neu laden | -### Verify und Forum +#### Verify & Forum | Command | Beschreibung | |---|---| -| /verify | Verifiziert den Account | -| /forumlink | Verknüpft Account mit Forum | -| /forum | Zeigt Forum-Benachrichtigungen | +| `/verify ` | Account verifizieren | +| `/forumlink ` | Account mit Forum verknüpfen | +| `/forum` | Forum-Benachrichtigungen anzeigen | -### Chat, Support und Moderation +#### Chat, Support & Moderation | Command | Beschreibung | |---|---| -| /channel [kanal] | Kanal wechseln oder Liste zeigen | -| /helpop | Support-Anfrage an Team | -| /msg | Private Nachricht | -| /r | Antwort auf letzte PM | -| /ignore | Spieler ignorieren | -| /unignore | Ignore entfernen | -| /chatmute [minuten] | Spieler muten | -| /chatunmute | Mute aufheben | -| /chataus | Chat-Empfang toggeln | -| /broadcast | Broadcast an alle | -| /emoji | Emoji-Liste | -| /socialspy | PMs mitlesen | -| /chatreload | Chat-Konfig neu laden | -| /chatinfo | Admin-Infos zu Spieler | -| /chathist [spieler] [anzahl] | Chat-History | -| /mentions | Mention-Benachrichtigungen toggeln | -| /chatbypass | Nächste Nachricht Plugin-bypass | -| /discordlink, /dlink | Discord-Linktoken erstellen | -| /telegramlink, /tlink | Telegram-Linktoken erstellen | -| /unlink | Verknüpfung aufheben | -| /report | Spieler melden | -| /reports [all] | Reports ansehen | -| /reportclose | Report schließen | +| `/channel [kanal]` | Kanal wechseln oder Liste anzeigen | +| `/helpop ` | Support-Anfrage an Team | +| `/msg ` | Private Nachricht senden | +| `/r ` | Auf letzte PM antworten | +| `/ignore ` | Spieler ignorieren | +| `/unignore ` | Ignore entfernen | +| `/chatmute [minuten]` | Spieler muten | +| `/chatunmute ` | Mute aufheben | +| `/chataus` | Chat-Empfang toggeln | +| `/broadcast ` | Broadcast an alle senden | +| `/emoji` | Emoji-Liste anzeigen | +| `/socialspy` | PMs mitlesen toggeln | +| `/chatreload` | Chat-Konfiguration neu laden | +| `/chatinfo ` | Admin-Infos zu einem Spieler | +| `/chathist [spieler] [anzahl]` | Chat-History anzeigen | +| `/mentions` | Mention-Benachrichtigungen toggeln | +| `/chatbypass` | Nächste Nachricht am Plugin vorbei senden | +| `/discordlink`, `/dlink` | Discord-Linktoken erstellen | +| `/telegramlink`, `/tlink` | Telegram-Linktoken erstellen | +| `/unlink ` | Verknüpfung aufheben | +| `/report ` | Spieler melden | +| `/reports [all]` | Reports ansehen | +| `/reportclose ` | Report schließen | -### CommandBlocker +#### CommandBlocker | Command | Beschreibung | |---|---| -| /cb add | Command blockieren | -| /cb remove | Blockierung aufheben | -| /cb list | Blockierte Commands anzeigen | -| /cb reload | CommandBlocker neu laden | +| `/cb add ` | Command blockieren | +| `/cb remove ` | Blockierung aufheben | +| `/cb list` | Alle blockierten Commands anzeigen | +| `/cb reload` | CommandBlocker neu laden | -### CustomCommands +#### CustomCommands | Command | Beschreibung | |---|---| -| /bcmds | Lädt `customcommands.yml` neu | -| /chat | Sendet Text als Chat oder führt Slash-Command aus (falls aktiviert) | +| `/bcmds` | `customcommands.yml` neu laden | +| `/chat ` | Text als Chat senden oder Slash-Command ausführen | -# Verfügbare Permissions +--- -| Permission | Beschreibung | -|---------------------------|----------------------------------------------------------| -| statusapi.update.notify | Erlaubt Update-Benachrichtigungen | -| statusapi.netinfo | Zugriff auf /netinfo | -| statusapi.antibot | Zugriff auf /antibot | -| statusapi.automessage | Zugriff auf /automessage reload | -| statusapi.bcmds | Zugriff auf bestimmte CustomCommand-Funktionen | -| chat.channel.local | Zugang zum Local-Kanal | -| chat.channel.trade | Zugang zum Trade-Kanal | -| chat.channel.staff | Zugang zum Staff-Kanal | -| chat.helpop.receive | HelpOp-Nachrichten empfangen | -| chat.mute | Spieler muten / unmuten | -| chat.broadcast | Broadcast-Nachrichten senden | -| chat.socialspy | Private Nachrichten mitlesen | -| chat.admin.bypass | Admin-Bypass (kann nicht geblockt/gemutet werden) | -| chat.admin.notify | Benachrichtigungen über Mutes und Blocks erhalten | -| chat.report | Spieler reporten (/report) | -| chat.color | Farbcodes (&a, &b, ...) im Chat nutzen | -| chat.color.format | Formatierungen (&l, &o, &n, ...) im Chat nutzen | -| chat.filter.bypass | Chat-Filter (Anti-Spam, Caps, Blacklist) umgehen | -| commandblocker.bypass | Command-Blocker umgehen | -| commandblocker.admin | CommandBlocker verwalten (/cb) | +### Permissions (StatusAPI) +| Permission | Beschreibung | +|---|---| +| `statusapi.update.notify` | Update-Benachrichtigungen empfangen | +| `statusapi.netinfo` | Zugriff auf `/netinfo` | +| `statusapi.antibot` | Zugriff auf `/antibot` | +| `statusapi.automessage` | Zugriff auf `/automessage reload` | +| `statusapi.bcmds` | Zugriff auf CustomCommand-Funktionen | +| `chat.channel.local` | Zugang zum Local-Kanal | +| `chat.channel.trade` | Zugang zum Trade-Kanal | +| `chat.channel.staff` | Zugang zum Staff-Kanal | +| `chat.helpop.receive` | HelpOp-Nachrichten empfangen | +| `chat.mute` | Spieler muten / unmuten | +| `chat.broadcast` | Broadcasts senden | +| `chat.socialspy` | Private Nachrichten mitlesen | +| `chat.admin.bypass` | Nicht mutbar / nicht blockierbar | +| `chat.admin.notify` | Benachrichtigungen über Mutes und Blocks | +| `chat.report` | Spieler reporten (`/report`) | +| `chat.color` | Farbcodes (`&a`, `&b`, …) im Chat nutzen | +| `chat.color.format` | Formatierungen (`&l`, `&o`, `&n`, …) im Chat nutzen | +| `chat.filter.bypass` | Anti-Spam, Caps und Blacklist umgehen | +| `commandblocker.bypass` | Command-Blocker umgehen | +| `commandblocker.admin` | CommandBlocker verwalten (`/cb`) | -## Wichtige Konfigurationen +--- -### verify.properties +### Konfiguration (StatusAPI) -Core, Verify, Broadcast, Forum und Port. +#### `verify.properties` – Core, Verify, Broadcast, Forum, Port -Typische Schlüssel: +```properties +statusapi.port=9191 +wp_verify_url=https://deine-domain.tld +server..id= +server..secret= +broadcast.enabled=true +broadcast.api_key= +forum.enabled=true +forum.api_secret= +automessage.enabled=true +automessage.interval=300 +automessage.file=messages.txt +automessage.prefix=&8[&bInfo&8] +``` -- statusapi.port=9191 -- wp_verify_url=https://deine-domain.tld -- server..id= -- server..secret= -- broadcast.enabled=true -- broadcast.api_key= -- forum.enabled=true -- forum.api_secret= -- automessage.enabled=true -- automessage.interval=300 -- automessage.file=messages.txt -- automessage.prefix=&8[&bInfo&8] +#### `network-guard.properties` – NetworkInfo, Webhook, AntiBot, BackendJoinGuard -### network-guard.properties +```properties +networkinfo.enabled=true +networkinfo.webhook.enabled=true +networkinfo.webhook.url= +networkinfo.webhook.embed_mode=detailed +networkinfo.attack.api_key= -NetworkInfo, Webhook, Attack-API und AntiBot. +antibot.enabled=true +antibot.profile=high-traffic -Typische Schlüssel: +backendguard.enforcement_enabled=true +backendguard.log_blocked_attempts=true +backendguard.kick_message=&cBitte verbinde dich nur ueber den Proxy-Server. +backendguard.allowed_proxy_ips=127.0.0.1,::1 +backendguard.allowed_proxy_cidrs=10.0.0.0/24 +backendguard.sync.api_key= +``` -- networkinfo.enabled=true -- networkinfo.webhook.enabled=true -- networkinfo.webhook.url= -- networkinfo.webhook.embed_mode=detailed -- networkinfo.attack.api_key= -- antibot.enabled=true -- antibot.profile=high-traffic +#### Weitere Konfigurationsdateien -### chat.yml +| Datei | Inhalt | +|---|---| +| `chat.yml` | Kanäle, Formate, PM, Reports, Filter, Logging, Discord/Telegram, Linking | +| `blocked-commands.yml` | Liste der geblockten Commands | +| `customcommands.yml` | Eigene Befehle, Aliase, Sender-Typen | +| `messages.txt` | AutoMessage-Texte (Zeilen mit `#` und Leerzeilen werden ignoriert) | -Chat-Kanäle, Formate, PM, Reports, Filter, Logging, Discord/Telegram, Account-Linking. +--- -### blocked-commands.yml +## BackendJoinGuard -Liste der geblockten Commands für CommandBlocker. +BackendJoinGuard verhindert, dass Spieler Backend-Server direkt betreten und damit den Proxy-Schutz umgehen. Das Plugin prüft beim Login die Quell-IP – nur konfigurierte Proxy-IPs oder CIDR-Netze werden durchgelassen. -### customcommands.yml +> **Wichtig:** BackendJoinGuard kommt auf **jeden Backend-Server**, nicht auf den Proxy. -Konfiguration für eigene Befehle, Aliase, Sender-Typen und Command-Listen. +--- -## AutoMessage Datei +### Betriebsarten -Nachrichten für das AutoMessage-Modul liegen standardmäßig in `messages.txt`. -Leere Zeilen und Zeilen mit `#` werden ignoriert. +| Modus | Beschreibung | +|---|---| +| **Standalone** | Nutzt ausschließlich die lokale `config.yml` | +| **StatusAPI Sync** | Lädt Schutzregeln regelmäßig von StatusAPI; lokale Werte bleiben als Fallback erhalten | -## StatusPulse Companion (WordPress) +--- -Im Repository liegt zusätzlich ein WordPress-Admin-Companion unter wordpress/statuspulse. -Damit können Admins die StatusAPI-Verbindung, Attack-Key und Attack-Testflows direkt im WordPress-Backend bedienen. -Voraussetzung dafür ist StatusAPI ab Version 4.1.0. +### Commands & Permissions (BackendJoinGuard) + +| Command | Permission | Beschreibung | +|---|---|---| +| `/backendguard reload` | `backendguard.admin` | Config neu laden und bei aktivem Sync sofort neu abrufen | + +--- + +### Konfiguration (BackendJoinGuard) + +Datei: `plugins/BackendJoinGuard/config.yml` + +#### Lokaler Schutz + +```yml +enforcement-enabled: true +log-blocked-attempts: true +kick-message: "&cBitte verbinde dich nur ueber den Proxy-Server." + +allowed-proxy-ips: + - "127.0.0.1" + - "::1" + - "185.123.45.67" + +allowed-proxy-cidrs: + - "10.0.0.0/24" +``` + +#### StatusAPI Sync + +```yml +statusapi-sync: + enabled: true + base-url: "http://127.0.0.1:9191" + endpoint-path: "/network/backendguard/config" + api-key: "DEIN_SYNC_KEY" + interval-seconds: 60 + log-sync-errors: true +``` + +#### Typische Szenarien + +| Szenario | `allowed-proxy-ips` | `base-url` | +|---|---|---| +| Alles auf einer Maschine | `127.0.0.1`, `::1` | `http://127.0.0.1:9191` | +| Proxy auf separatem Host | `185.123.45.67` | `http://185.123.45.67:9191` | +| Internes Netz (CIDR) | `10.0.0.10` + CIDR `10.0.0.0/24` | `http://10.0.0.10:9191` | + +--- + +## Voraussetzungen & Installation + +### Voraussetzungen + +| Komponente | Pflicht | Optional | +|---|---|---| +| BungeeCord Proxy | ✅ | | +| Minecraft 1.20+ | ✅ | | +| Java 8+ | ✅ | | +| LuckPerms | | ✅ | +| Geyser-BungeeCord | | ✅ | +| Discord Webhook / Bot | | ✅ | +| Telegram Bot | | ✅ | +| WordPress / Forum-Backend | | ✅ | + +### StatusAPI installieren (Proxy) + +``` +1. StatusAPI.jar → plugins/ auf dem Proxy +2. Proxy starten → Konfigurationsdateien werden erzeugt +3. Proxy stoppen +4. Konfigurationen anpassen: + verify.properties · chat.yml · network-guard.properties · blocked-commands.yml +5. Proxy neu starten +``` + +### BackendJoinGuard installieren (Backend) + +``` +1. BackendJoinGuard.jar → plugins/ auf jedem Backend-Server +2. Server starten → config.yml wird erzeugt +3. config.yml anpassen +4. Server neu starten oder /backendguard reload ausführen +``` + +### StatusPulse Companion (WordPress) + +Im Repository unter `wordpress/statuspulse` liegt ein WordPress-Admin-Plugin. +Damit lassen sich StatusAPI-Verbindung, Attack-Key und Attack-Testflows direkt im WordPress-Backend bedienen. +Erfordert StatusAPI ≥ 4.1.0. + +--- ## Troubleshooting -### API nicht erreichbar +### StatusAPI -- statusapi.port prüfen -- Firewall/Hosting-Portfreigabe prüfen -- Proxy-Konsole auf Startmeldung des HTTP-Servers prüfen +| Problem | Mögliche Ursachen & Lösung | +|---|---| +| API nicht erreichbar | `statusapi.port` prüfen · Firewall / Portfreigabe prüfen · Proxy-Konsole auf HTTP-Server-Startmeldung prüfen | +| Attack-Meldungen fehlen in Discord | `networkinfo.webhook.enabled` und `.url` prüfen · `networkinfo.attack.enabled` und `api_key`-Header prüfen | +| AntiBot zu hart / zu weich | `antibot.profile` auf `strict` oder `high-traffic` setzen · Schwellwerte in `network-guard.properties` feinjustieren · `/antibot reload` ausführen | -### Attack-Meldungen kommen nicht in Discord an - -- networkinfo.webhook.enabled prüfen -- networkinfo.webhook.url prüfen -- networkinfo.attack.enabled prüfen -- networkinfo.attack.api_key Header prüfen - -### AntiBot greift zu hart oder zu weich - -- antibot.profile auf strict oder high-traffic setzen -- Schwellwerte in network-guard.properties feiner einstellen -- /antibot reload ausführen +### BackendJoinGuard +| Problem | Mögliche Ursachen & Lösung | +|---|---| +| Spieler werden trotz Proxy geblockt | Proxy-IP in `allowed-proxy-ips` korrekt eintragen · Bei mehreren Segmenten CIDR-Eintrag nutzen · Proxy-Konfiguration (Velocity/BungeeCord) prüfen | +| Sync mit StatusAPI funktioniert nicht | `base-url` und Port prüfen · `api-key` muss identisch zu `backendguard.sync.api_key` sein · `log-sync-errors: true` setzen und Konsole prüfen | \ No newline at end of file