Files
StatusAPI/README.md
2026-05-07 20:28:41 +00:00

404 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# StatusAPI
<p align="center">
<img src="https://img.shields.io/badge/Version-4.1.0-0B63CE?style=for-the-badge" />
<img src="https://img.shields.io/badge/Platform-BungeeCord-D48700?style=for-the-badge" />
<img src="https://img.shields.io/badge/Minecraft-1.20+-1E9E5A?style=for-the-badge" />
<img src="https://img.shields.io/badge/Java-8+-C0392B?style=for-the-badge" />
</p>
<p align="center">
Modulares BungeeCord-Plugin für Netzwerkbetrieb, Moderation und Integrationen.<br>
Live-Status · Chat & Support · Verifizierung · Forum-Bridge · Broadcasts · AntiBot · BackendJoinGuard
</p>
---
> **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
<details>
<summary><strong>Core & HTTP-API</strong></summary>
- 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
</details>
<details>
<summary><strong>NetworkInfo</strong></summary>
- 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`
</details>
<details>
<summary><strong>AntiBot</strong></summary>
- 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)
</details>
<details>
<summary><strong>Chat & Moderation</strong></summary>
- 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)
</details>
<details>
<summary><strong>Verify, Forum & CommandBlocker</strong></summary>
- Spieler-Verifizierung über Token
- Forum-Linking und Forum-Benachrichtigungen ingame
- Command-Blocker mit `/cb`-Verwaltung
</details>
<details>
<summary><strong>AutoMessage & CustomCommands</strong></summary>
- Rotierende Auto-Nachrichten aus `messages.txt` (intervallgesteuert)
- Eigene Command-Mappings über `customcommands.yml`
- Optionaler `/chat`-Command (steuerbar per Konfiguration)
- Reload via `/bcmds`
</details>
---
### HTTP API
Basis-URL: `http://<proxy-ip>: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 <ip>` | Einzelne IP entblocken |
| `/antibot profile <strict\|high-traffic>` | Profil wechseln und speichern |
| `/antibot reload` | AntiBot-Konfiguration neu laden |
#### Verify & Forum
| Command | Beschreibung |
|---|---|
| `/verify <token>` | Account verifizieren |
| `/forumlink <token>` | Account mit Forum verknüpfen |
| `/forum` | Forum-Benachrichtigungen anzeigen |
#### Chat, Support & Moderation
| Command | Beschreibung |
|---|---|
| `/channel [kanal]` | Kanal wechseln oder Liste anzeigen |
| `/helpop <text>` | Support-Anfrage an Team |
| `/msg <spieler> <text>` | Private Nachricht senden |
| `/r <text>` | Auf letzte PM antworten |
| `/ignore <spieler>` | Spieler ignorieren |
| `/unignore <spieler>` | Ignore entfernen |
| `/chatmute <spieler> [minuten]` | Spieler muten |
| `/chatunmute <spieler>` | Mute aufheben |
| `/chataus` | Chat-Empfang toggeln |
| `/broadcast <text>` | Broadcast an alle senden |
| `/emoji` | Emoji-Liste anzeigen |
| `/socialspy` | PMs mitlesen toggeln |
| `/chatreload` | Chat-Konfiguration neu laden |
| `/chatinfo <spieler>` | 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 <discord\|telegram\|all>` | Verknüpfung aufheben |
| `/report <spieler> <grund>` | Spieler melden |
| `/reports [all]` | Reports ansehen |
| `/reportclose <id>` | Report schließen |
#### CommandBlocker
| Command | Beschreibung |
|---|---|
| `/cb add <command>` | Command blockieren |
| `/cb remove <command>` | Blockierung aufheben |
| `/cb list` | Alle blockierten Commands anzeigen |
| `/cb reload` | CommandBlocker neu laden |
#### CustomCommands
| Command | Beschreibung |
|---|---|
| `/bcmds` | `customcommands.yml` neu laden |
| `/chat <text>` | 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.<Name>.id=<id>
server.<Name>.secret=<secret>
broadcast.enabled=true
broadcast.api_key=<key>
forum.enabled=true
forum.api_secret=<key>
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=<discord_webhook>
networkinfo.webhook.embed_mode=detailed
networkinfo.attack.api_key=<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=<sync_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 |