README.md aktualisiert
This commit is contained in:
104
README.md
104
README.md
@@ -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.
|
||||||
Reference in New Issue
Block a user