# 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 |