README.md aktualisiert

This commit is contained in:
2026-04-16 09:48:56 +00:00
parent 084172116d
commit 8c48e73612

104
README.md
View File

@@ -23,8 +23,14 @@
- Offline-Benachrichtigungen - Offline-Benachrichtigungen
- Discord-Webhook mit Embeds & Rollen-Ping - Discord-Webhook mit Embeds & Rollen-Ping
- Blacklist für Spieler - Blacklist für Spieler
- **FAQ-System mit Kategorien** eigene GUI mit Custom-Skull-Items, optionaler Kategorie-Auswahl-Screen, vollständige In-Game-Verwaltung; `faqs.yml` wird beim ersten Start automatisch mit Beispiel-Kategorien und -FAQs generiert - **FAQ-System mit Kategorien** eigene GUI mit Custom-Skull-Items, optionaler Kategorie-Auswahl-Screen, vollständige In-Game-Verwaltung; wahlweise `faqs.yml` oder MySQL-Speicherung, Migration per Befehl
- **Performance-Caching** TTL-basierter In-Memory-Cache reduziert Datenbankabfragen spürbar - **Performance-Caching** TTL-basierter In-Memory-Cache reduziert Datenbankabfragen spürbar
- **Backup-System** automatische JSON-Backups per `/ticket backup`, vor Migrationen, im `backups/`-Ordner
- **HTTPS/TLS-Unterstützung** optionaler eingebetteter HTTPS-Server via JKS-Keystore (TLS 1.2+)
- **MySQL Auto-Reconnect** bricht die Datenbankverbindung ab, stellt das Plugin sie automatisch wieder her
- **Brute-Force-Schutz** IP-Sperre nach 5 Fehlversuchen im Web-Panel (15 Minuten)
- **Archiv-Verwaltung im Web-Panel** archivierte Tickets einsehen, permanent löschen oder wiederherstellen
- **Benutzerverwaltung zur Laufzeit** Web-Panel-Benutzer über die API anlegen, Passwort ändern, löschen
- **Saubere Konsole** minimale Start-Logs, kein unnötiger Spam - **Saubere Konsole** minimale Start-Logs, kein unnötiger Spam
- Erweiterbarkeit: viele Hooks - Erweiterbarkeit: viele Hooks
- **BungeeCord-Unterstützung**: serverübergreifende Tickets, Teleports, Weiterleitungen, Benachrichtigungen - **BungeeCord-Unterstützung**: serverübergreifende Tickets, Teleports, Weiterleitungen, Benachrichtigungen
@@ -57,6 +63,8 @@
| `/ticket faq edit <ID> <Frage> \| <Antwort>` | Bestehendes FAQ bearbeiten | Admin | | `/ticket faq edit <ID> <Frage> \| <Antwort>` | Bestehendes FAQ bearbeiten | Admin |
| `/ticket faq delete <ID>` | FAQ löschen | Admin | | `/ticket faq delete <ID>` | FAQ löschen | Admin |
| `/ticket faq reload` | FAQs aus faqs.yml neu laden | Admin | | `/ticket faq reload` | FAQs aus faqs.yml neu laden | Admin |
| `/ticket faq migrate [tomysql\|tofile]` | FAQs zwischen faqs.yml und MySQL migrieren | Admin |
| `/ticket backup` | Datenbank-Backup erstellen (JSON im backups/-Ordner) | Admin |
| `/ticket kategorie add <n> [&Farbe] [Beschreibung]` | FAQ-Kategorie hinzufügen | Admin | | `/ticket kategorie add <n> [&Farbe] [Beschreibung]` | FAQ-Kategorie hinzufügen | Admin |
| `/ticket kategorie delete <Schlüssel>` | FAQ-Kategorie löschen | Admin | | `/ticket kategorie delete <Schlüssel>` | FAQ-Kategorie löschen | Admin |
| `/ticket kategorie list` | Alle FAQ-Kategorien auflisten | Admin | | `/ticket kategorie list` | Alle FAQ-Kategorien auflisten | Admin |
@@ -84,6 +92,19 @@
> `ticket.archive` ist nicht in `ticket.admin` enthalten und muss explizit vergeben werden. > `ticket.archive` ist nicht in `ticket.admin` enthalten und muss explizit vergeben werden.
### Web-Panel Benutzerrollen
| Rolle | Tickets | Archiv | FAQ | Weiterleiten |
|------------------|:-------:|:------:|:---:|:------------:|
| `admin` | ✔ | ✔ | ✔ | ✔ |
| `archive_viewer` | ✔ | ✔ | ✗ | ✗ |
| `supporter` | ✔ | ✗ | ✗ | ✗ |
- **Benutzernamen** sind case-insensitiv (Groß-/Kleinschreibung egal) und dürfen Sonderzeichen enthalten (`-`, `_`, `/` usw.)
- Passwörter werden beim ersten Start automatisch als SHA-256-Hash gespeichert
- Benutzer können zur **Laufzeit** über die Web-API angelegt, geändert und gelöscht werden — kein Neustart nötig
- **Brute-Force-Schutz**: 5 Fehlversuche → 15 Minuten IP-Sperre
--- ---
## Mehrsprachigkeit ## Mehrsprachigkeit
@@ -198,8 +219,12 @@ Jeder FAQ-Eintrag wird als **Custom-Skull-Item** angezeigt. Ein Klick zeigt die
/ticket faq edit 1 Neue Frage? | Neue Antwort. /ticket faq edit 1 Neue Frage? | Neue Antwort.
/ticket faq delete 1 /ticket faq delete 1
/ticket faq reload /ticket faq reload
/ticket faq migrate tomysql # faqs.yml → MySQL importieren
/ticket faq migrate tofile # MySQL → faqs.yml exportieren (mit automatischem Backup der alten faqs.yml)
``` ```
> `migrateFaqToFile()` erstellt automatisch ein Backup der bestehenden `faqs.yml` mit Zeitstempel bevor sie überschrieben wird.
Der optionale Kategorie-Schlüssel als erstes Argument weist die neue FAQ direkt einer Kategorie zu. Der Tab-Completer schlägt alle vorhandenen Schlüssel vor. Der optionale Kategorie-Schlüssel als erstes Argument weist die neue FAQ direkt einer Kategorie zu. Der Tab-Completer schlägt alle vorhandenen Schlüssel vor.
Alternativ über die **Admin-FAQ-GUI**: Klick auf einen Eintrag öffnet eine Aktions-GUI mit **Bearbeiten** und **Löschen**. Neue FAQs per „Neues FAQ hinzufügen"-Button hinzufügen die FAQ wird automatisch der aktuell geöffneten Kategorie zugeordnet. Alternativ über die **Admin-FAQ-GUI**: Klick auf einen Eintrag öffnet eine Aktions-GUI mit **Bearbeiten** und **Löschen**. Neue FAQs per „Neues FAQ hinzufügen"-Button hinzufügen die FAQ wird automatisch der aktuell geöffneten Kategorie zugeordnet.
@@ -228,6 +253,64 @@ faqs:
category: "tickets" category: "tickets"
``` ```
### FAQ-Speicherung (MySQL oder Datei)
FAQs können wahlweise in der `faqs.yml` oder direkt in der MySQL-Datenbank gespeichert werden. Der Speichermodus wird automatisch aus `use-mysql` in der `config.yml` übernommen kein separater Schalter nötig.
| `use-mysql` | FAQ-Speicher |
|-------------|---------------------------|
| `false` | `faqs.yml` (Standard) |
| `true` | MySQL (`faq_entries`, `faq_categories`) |
**Migration von faqs.yml → MySQL:**
```
/ticket faq migrate
```
Importiert alle Kategorien und Einträge aus der `faqs.yml` in die Datenbank. Duplikate werden automatisch übersprungen, der Befehl ist also mehrfach sicher ausführbar.
---
## Backup-System
TicketSystem erstellt automatisch JSON-Backups der Ticket-Daten.
```
/ticket backup
```
Backups werden im Ordner `plugins/TicketSystem/backups/` gespeichert mit Zeitstempel im Dateinamen (`backup_tickets_YYYY-MM-DD_HH-mm-ss.json`). Das Backup wird außerdem automatisch vor jeder Datenmigration erstellt.
- **MySQL-Modus**: Exportiert alle aktiven Tickets als JSON
- **Datei-Modus**: Kopiert die aktuelle `data.yml` / `data.json`
---
## HTTPS / TLS
Der eingebettete Web-Server unterstützt optionales HTTPS via Java Keystore (JKS).
```yaml
web-panel:
ssl:
enabled: true
keystore-file: "keystore.jks" # im plugins/TicketSystem/-Ordner
keystore-password: "changeit"
key-password: "changeit"
```
**Self-Signed Zertifikat erstellen (für Tests):**
```
keytool -genkeypair -alias ticketsystem -keyalg RSA -keysize 2048 -validity 365 -keystore plugins/TicketSystem/keystore.jks -storepass changeit
```
Für Produktion wird ein Let's Encrypt-Zertifikat oder ein Reverse-Proxy (Nginx/Apache) empfohlen. Wenn der Keystore fehlt, startet der Server automatisch ohne TLS.
---
## MySQL Auto-Reconnect
Bricht die MySQL-Verbindung während des Betriebs ab (z.B. Datenbankserver-Neustart), versucht das Plugin sie automatisch beim nächsten Datenbankzugriff wiederherzustellen — ohne Serverneustart.
--- ---
## Performance-Caching ## Performance-Caching
@@ -321,6 +404,11 @@ TicketSystem bietet volle Unterstützung für BungeeCord-Netzwerke:
| Bewertungs-System | ✔️ | ✖️ | ✖️ | | Bewertungs-System | ✔️ | ✖️ | ✖️ |
| Update-Checker | ✔️ | ✖️ | ✖️ | | Update-Checker | ✔️ | ✖️ | ✖️ |
| BungeeCord-Unterstützung | ✔️ | ✖️ | ✖️ | | BungeeCord-Unterstützung | ✔️ | ✖️ | ✖️ |
| Backup-System | ✔️ | ✖️ | ✖️ |
| HTTPS/TLS-Unterstützung | ✔️ | ✖️ | ✖️ |
| MySQL Auto-Reconnect | ✔️ | ✖️ | ✖️ |
| Brute-Force-Schutz Web-Panel | ✔️ | ✖️ | ✖️ |
| Archiv-Verwaltung Web-Panel | ✔️ | ✖️ | ✖️ |
Legende: ✔️ Vollständige Unterstützung · ⚠️ Eingeschränkt · ✖️ Nicht vorhanden Legende: ✔️ Vollständige Unterstützung · ⚠️ Eingeschränkt · ✖️ Nicht vorhanden
@@ -335,11 +423,14 @@ Legende: ✔️ Vollständige Unterstützung · ⚠️ Eingeschränkt · ✖️
> In der `config.yml` unter `categories:` Name, Farbe, Material und Aliases frei wählbar. Änderungen mit `/ticket reload` übernehmen. > In der `config.yml` unter `categories:` Name, Farbe, Material und Aliases frei wählbar. Änderungen mit `/ticket reload` übernehmen.
**Wie verwalte ich FAQs?** **Wie verwalte ich FAQs?**
> Mit `/ticket faq` öffnest du die GUI. Als Admin kannst du über die GUI oder per `/ticket faq add|edit|delete` FAQs verwalten. Alle Daten liegen in der automatisch generierten `faqs.yml`. > Mit `/ticket faq` öffnest du die GUI. Als Admin kannst du über die GUI oder per `/ticket faq add|edit|delete` FAQs verwalten. Daten liegen je nach Konfiguration in `faqs.yml` (Datei-Modus) oder in der MySQL-Datenbank.
**Wie richte ich FAQ-Kategorien ein?** **Wie richte ich FAQ-Kategorien ein?**
> Die `faqs.yml` wird beim ersten Start automatisch mit vier Beispiel-Kategorien erstellt. Neue Kategorien per `/ticket kategorie add <Name> [&Farbe] [Beschreibung]` hinzufügen, löschen per `/ticket kategorie delete <Schlüssel>`. Das Aussehen der Kategorie-Items wird in `config.yml` unter `gui-settings.faq.category-head-item` gesteuert. > Die `faqs.yml` wird beim ersten Start automatisch mit vier Beispiel-Kategorien erstellt. Neue Kategorien per `/ticket kategorie add <Name> [&Farbe] [Beschreibung]` hinzufügen, löschen per `/ticket kategorie delete <Schlüssel>`. Das Aussehen der Kategorie-Items wird in `config.yml` unter `gui-settings.faq.category-head-item` gesteuert.
**Wie verwalte ich das Archiv im Web-Panel?**
> Admins und Archive Viewer können archivierte Tickets über `/tickets?status=ARCHIVED` einsehen. Admins können einzelne Tickets permanent löschen (`deleteArchivedTicket`) oder in die aktive Datenbank wiederherstellen (`restoreArchivedTicket`). Die Aktionen stehen als Buttons in der Ticket-Detailansicht zur Verfügung.
**Was passiert mit Benachrichtigungen wenn ein Spieler offline ist?** **Was passiert mit Benachrichtigungen wenn ein Spieler offline ist?**
> Alle Benachrichtigungen werden gespeichert und beim nächsten Login angezeigt. > Alle Benachrichtigungen werden gespeichert und beim nächsten Login angezeigt.
@@ -360,15 +451,6 @@ Legende: ✔️ Vollständige Unterstützung · ⚠️ Eingeschränkt · ✖️
--- ---
## Support, Community & Motivation
Du hast Fragen, brauchst Hilfe oder möchtest Feedback geben?
- [Discord Support](https://discord.com/invite/FdRs4BRd8D)
- [Git Issues](https://git.viper.ipv64.net/M_Viper/TicketSystem/issues)
Wir antworten in der Regel innerhalb von 24 Stunden!
**Dein Feedback zählt:** **Dein Feedback zählt:**
Wenn TicketSystem deinen Server bereichert hat, freuen wir uns über eine 5-Sterne Bewertung auf SpigotMC! Wenn TicketSystem deinen Server bereichert hat, freuen wir uns über eine 5-Sterne Bewertung auf SpigotMC!
Jede Rückmeldung hilft, das Plugin weiter zu verbessern und die Community zu stärken. Jede Rückmeldung hilft, das Plugin weiter zu verbessern und die Community zu stärken.