# StatusAPI

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 ist ausschließlich mit vorheriger schriftlicher Genehmigung des Entwicklers gestattet. > © Entwickelt von M_Viper. Alle Rechte vorbehalten. --- ## Übersicht 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 - Live-Snapshot für Proxy, Uptime, RAM, CPU, Backends und Ping - 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 - CPS-basierte Attack-Erkennung mit konfigurierbaren Start- und Stop-Schwellen - Pro-IP Rate-Limit mit temporären IP-Blocks - 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 & 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 inkl. Close-Flow - Weiterleitung an Discord und Telegram (konfigurierbar)
Verify, Forum & CommandBlocker - Spieler-Verifizierung über Token - Forum-Linking und Forum-Benachrichtigungen ingame - Command-Blocker mit `/cb`-Verwaltung
AutoMessage & CustomCommands - Rotierende Auto-Nachrichten aus `messages.txt` (intervallgesteuert) - Eigene Command-Mappings über `customcommands.yml` - Optionaler `/chat`-Command (steuerbar per Konfiguration) - Reload via `/bcmds`
--- ### HTTP API Basis-URL: `http://:9191` – Port konfigurierbar über `statusapi.port`. | Methode | Pfad | Beschreibung | Auth | |---|---|---|---| | `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 (StatusAPI) #### Netzwerk & Schutz | Command | Beschreibung | |---|---| | `/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 & Forum | Command | Beschreibung | |---|---| | `/verify ` | Account verifizieren | | `/forumlink ` | Account mit Forum verknüpfen | | `/forum` | Forum-Benachrichtigungen anzeigen | #### Chat, Support & Moderation | Command | Beschreibung | |---|---| | `/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 | Command | Beschreibung | |---|---| | `/cb add ` | Command blockieren | | `/cb remove ` | Blockierung aufheben | | `/cb list` | Alle blockierten Commands anzeigen | | `/cb reload` | CommandBlocker neu laden | #### CustomCommands | Command | Beschreibung | |---|---| | `/bcmds` | `customcommands.yml` neu laden | | `/chat ` | Text als Chat senden oder Slash-Command ausführen | --- ### 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`) | --- ### Konfiguration (StatusAPI) #### `verify.properties` – Core, Verify, Broadcast, Forum, Port ```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] ``` #### `network-guard.properties` – NetworkInfo, Webhook, AntiBot, BackendJoinGuard ```properties 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 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= ``` #### Weitere Konfigurationsdateien | 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) | --- ## BackendJoinGuard 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. > **Wichtig:** BackendJoinGuard kommt auf **jeden Backend-Server**, nicht auf den Proxy. --- ### Betriebsarten | 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 | --- ### 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 ### StatusAPI | 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 | ### 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 |