Commit c6e8a2

2026-04-12 19:50:05 OtterWiki: Add AzerothCore GM commands and server console wiki pages
/dev/null .. gm-commands.md
@@ 0,0 1,165 @@
+ # AzerothCore GM-Commands Referenz
+
+ ## Zugriff auf GM-Commands
+
+ GM-Commands können auf drei Wegen ausgeführt werden:
+
+ 1. **In-Game** (einfachste Methode): Im Chat eingeben (z.B. `.server info`)
+ 2. **SSH direkt** (CT119): `ssh root@192.168.178.89` → worldserver läuft als Service
+ 3. **SOAP PHP-Oneliner** (von CT119 aus):
+
+ ```bash
+ php -r "
+ \$c = new SoapClient(null, [
+ 'location' => 'http://127.0.0.1:7878/',
+ 'uri' => 'urn:AC',
+ 'style' => SOAP_RPC,
+ 'login' => 'admin',
+ 'password' => 'ADMINPASS'
+ ]);
+ echo \$c->executeCommand(new SoapParam('.server info', 'command'));
+ "
+ ```
+
+ > **Wichtig:** FusionCMS hat **kein** freies Command-Eingabefeld. Es führt nur vordefinierte Aktionen (Kick, Ban, Item senden) aus. Beliebige GM-Commands erfordern In-Game oder SSH/SOAP.
+
+ ---
+
+ ## Account-Commands
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.account create <user> <pass>` | Neuen Account anlegen |
+ | `.account set gmlevel <user> <level> -1` | GM-Level setzen (-1 = alle Realms). Level 3 = voller GM |
+ | `.account set password <user> <oldpass> <newpass> <newpass>` | Passwort ändern (kein `"` im PW!) |
+ | `.account onlinelist` | Alle eingeloggten Accounts |
+
+ > **Hinweis zu Sonderzeichen:** Enthält das Passwort `"`, muss das Passwort direkt per Python/SRP6 in der DB gesetzt werden (siehe [AzerothCore Wiki](azerothcore)).
+
+ ---
+
+ ## Character-Commands
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.character level <name> <level>` | Level eines Charakters setzen |
+ | `.character rename <name>` | Charakter umbenennen lassen |
+ | `.character customize <name>` | Aussehen anpassen lassen |
+ | `.character delete <name>` | Charakter löschen |
+ | `.lookup player online <name>` | Online-Charakter suchen |
+
+ ---
+
+ ## Teleport-Commands
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.appear <name>` | Zu einem Spieler teleportieren |
+ | `.summon <name>` | Spieler zu dir teleportieren |
+ | `.go xyz <x> <y> <z> <mapid>` | Zu Koordinaten teleportieren |
+ | `.go creature <entry/guid>` | Zu Creature teleportieren |
+ | `.tele <location>` | Zu benanntem Ort teleportieren |
+ | `.tele list` | Alle Teleport-Ziele auflisten |
+ | `.tele add <name>` | Aktuellen Ort als Teleport-Ziel speichern |
+
+ ---
+
+ ## Item-Commands
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.additem <itemid> [count]` | Item in dein Inventar hinzufügen |
+ | `.additem <itemid> <count> <player>` | Item zu Spieler hinzufügen |
+ | `.lookup item <name>` | Item-ID suchen |
+
+ ---
+
+ ## GM-Modus
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.gm on` | GM-Modus aktivieren (unsichtbar, immun) |
+ | `.gm off` | GM-Modus deaktivieren |
+ | `.gm visible on/off` | Sichtbarkeit für Spieler umschalten |
+ | `.gm list` | Alle Online-GMs anzeigen |
+
+ ---
+
+ ## Server-Commands
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.server info` | Server-Status, Uptime, Spieleranzahl |
+ | `.server motd` | Message of the Day anzeigen |
+ | `.server set motd <text>` | MOTD setzen |
+ | `.server exit` | Server herunterfahren |
+ | `.reload all` | Configs neu laden (ohne Neustart) |
+ | `.reload config` | worldserver.conf neu laden |
+ | `.online list` | Alle Online-Spieler |
+ | `.send message <name> <text>` | Nachricht an Spieler senden |
+ | `.send mail <name> <betreff> <text>` | Mail an Spieler senden |
+
+ ---
+
+ ## Kick / Ban
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.kick <name> [grund]` | Spieler kicken |
+ | `.ban account <acc> <dauer> <grund>` | Account bannen (z.B. `1d`, `7d`, `perm`) |
+ | `.ban ip <ip> <dauer> <grund>` | IP bannen |
+ | `.unban account <acc>` | Ban aufheben |
+ | `.banlist account` | Ban-Liste anzeigen |
+
+ ---
+
+ ## NPC / Creature Commands
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.npc info` | Info über anvisierte Creature |
+ | `.npc move` | NPC zu aktueller Position verschieben |
+ | `.npc delete` | Anvisierte Creature löschen |
+ | `.lookup creature <name>` | Creature-ID suchen |
+
+ ---
+
+ ## Aura / Spell
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.aura <spellid>` | Aura auf sich selbst anwenden |
+ | `.unaura <spellid>` | Aura entfernen |
+ | `.cast <spellid>` | Spell auf Ziel casten |
+ | `.learn <spellid>` | Spell lernen |
+
+ ---
+
+ ## Playerbots-Commands (Mod-Spezifisch)
+
+ | Command | Beschreibung |
+ |---------|-------------|
+ | `.bot add <name>` | Einzelnen Bot manuell hinzufügen |
+ | `.bot remove <name>` | Bot aus Party entfernen |
+ | `.bot info` | Bot-Status anzeigen |
+ | `AiPlayerbot.MaxRandomBots` | Max. Bots in `playerbots.conf` |
+
+ ---
+
+ ## GM-Level Übersicht
+
+ | Level | Bezeichnung | Rechte |
+ |-------|-------------|--------|
+ | 0 | Spieler | Normal |
+ | 1 | Moderator | Kick, Mute |
+ | 2 | GM | + Teleport, Spawn |
+ | 3 | Administrator | Alle Commands |
+ | 4+ | Console | Console-only |
+
+ ---
+
+ ## Verwandte Seiten
+
+ - [[azerothcore]] – Installation, Config-Pfade, Services
+ - [[server-konsole]] – SSH, SOAP, Logs
+ - [[home]]
/dev/null .. server-konsole.md
@@ 0,0 1,218 @@
+ # AzerothCore Server-Konsole & Admin-Zugriff
+
+ ## Übersicht
+
+ Der AzerothCore-Server (CT119) hat drei Admin-Zugangswege:
+
+ | Methode | Zugriff | Für was |
+ |---------|---------|---------|
+ | **In-Game** | WoW-Client als GM-Account | Einfachste Methode für GM-Commands |
+ | **SSH → Systemd** | `ssh root@192.168.178.89` | Logs, Service-Neustart, Config-Änderungen |
+ | **SOAP** | `127.0.0.1:7878` (nur intern) | Automatisierung, Scripts |
+
+ ---
+
+ ## SSH-Zugang (CT119)
+
+ ```bash
+ # Von Proxmox-Host:
+ ssh root@192.168.178.89
+
+ # Oder direkt per pct exec (von Proxmox):
+ pct exec 119 -- bash -c "systemctl status acore-world"
+ ```
+
+ ---
+
+ ## Services verwalten
+
+ ```bash
+ # Status prüfen:
+ systemctl status acore-auth
+ systemctl status acore-world
+
+ # Neustarten:
+ systemctl restart acore-auth
+ systemctl restart acore-world
+
+ # Stoppen / Starten:
+ systemctl stop acore-world
+ systemctl start acore-world
+ ```
+
+ > **Reihenfolge:** Bei Neustart zuerst `acore-world` stoppen, dann `acore-auth`. Starten in umgekehrter Reihenfolge.
+
+ ---
+
+ ## Logs anzeigen
+
+ ```bash
+ # Live-Log (Worldserver):
+ journalctl -u acore-world -f
+
+ # Letzten 100 Zeilen:
+ journalctl -u acore-world -n 100
+
+ # Log-Datei direkt (schneller bei vielen Einträgen):
+ tail -f /opt/azerothcore/logs/Server.log
+
+ # Fehler filtern:
+ journalctl -u acore-world -p err -n 50
+ ```
+
+ ---
+
+ ## SOAP-Interface
+
+ Der Worldserver stellt einen SOAP XML-RPC-Endpunkt auf `127.0.0.1:7878` bereit.
+ Credentials = Admin-Account (Login: `admin`, PW in `/root/acore-credentials.txt`).
+
+ ### SOAP per PHP (einfachste Methode):
+
+ ```bash
+ # In CT119 als root – beliebigen GM-Command ausführen:
+ php -r "
+ \$c = new SoapClient(null, [
+ 'location' => 'http://127.0.0.1:7878/',
+ 'uri' => 'urn:AC',
+ 'style' => SOAP_RPC,
+ 'login' => 'admin',
+ 'password' => 'ADMINPASS'
+ ]);
+ echo \$c->executeCommand(new SoapParam('.server info', 'command'));
+ "
+ ```
+
+ ### SOAP per curl:
+
+ ```bash
+ curl -s -u admin:ADMINPASS \
+ -H "Content-Type: text/xml" \
+ -d '<?xml version="1.0"?>
+ <methodCall>
+ <methodName>execute</methodName>
+ <params>
+ <param><value><string>.server info</string></value></param>
+ </params>
+ </methodCall>' \
+ http://127.0.0.1:7878/
+ ```
+
+ > **Wichtig:** Der SOAP-Port ist nur auf `127.0.0.1` gebunden – kein externer Zugriff möglich.
+
+ ---
+
+ ## Direkte MySQL-Konsole
+
+ ```bash
+ # In CT119 als root:
+ mysql -u root
+
+ # Direkte Abfragen:
+ USE acore_auth;
+ SELECT username, last_login FROM account ORDER BY last_login DESC LIMIT 10;
+
+ USE acore_characters;
+ SELECT name, level, class, race FROM characters WHERE online=1;
+
+ # Account-GM-Level setzen (direkt in DB):
+ UPDATE acore_auth.account_access SET SecurityLevel=3 WHERE id=(
+ SELECT id FROM acore_auth.account WHERE username='SPIELERNAME'
+ );
+ ```
+
+ ---
+
+ ## Config neu laden (ohne Neustart)
+
+ ```bash
+ # In-Game oder per SOAP:
+ .reload config # worldserver.conf neu laden
+ .reload all # Alle Configs (langsamer)
+ ```
+
+ > **Nicht alle Einstellungen** können live neu geladen werden – XP-Rates, Bot-Anzahl und DB-Verbindungen brauchen einen Neustart.
+
+ ---
+
+ ## CPU-Last reduzieren
+
+ Falls der Server zu viel CPU verbraucht (häufig durch journald bei vielen Log-Einträgen):
+
+ ```bash
+ # worldserver nice-Level erhöhen (niedrigere Priorität):
+ renice 10 $(pgrep worldserver)
+
+ # Console-Logging in worldserver.conf reduzieren:
+ # Logger.root = 3,Console Server → Logger.root = 2,Server
+ # Dann: systemctl restart acore-world
+ ```
+
+ ---
+
+ ## Passwort ändern
+
+ Für den Admin-Account nutzt AzerothCore **SHA1 SRP6** (WotLK-kompatibel).
+
+ ### Über SOAP (funktioniert NUR ohne `"` im Passwort):
+
+ ```bash
+ php -r "
+ \$c = new SoapClient(null, ['location'=>'http://127.0.0.1:7878/','uri'=>'urn:AC','style'=>SOAP_RPC,'login'=>'admin','password'=>'ALTESPASSWORT']);
+ echo \$c->executeCommand(new SoapParam('.account set password admin ALTESPASSWORT NEUESPASSWORT NEUESPASSWORT', 'command'));
+ "
+ ```
+
+ ### Direkt per Python (wenn Sonderzeichen im PW):
+
+ ```python
+ #!/usr/bin/env python3
+ import hashlib, os, struct
+
+ username = "ADMIN" # Immer UPPERCASE
+ password = "NEUESPASSWORT" # Immer UPPERCASE
+
+ N = int.from_bytes(bytes.fromhex(
+ '894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7'), 'big')
+ g = 7
+
+ salt_bytes = os.urandom(32)
+ h1 = hashlib.sha1((username.upper() + ':' + password.upper()).encode()).digest()
+ x_bytes = hashlib.sha1(salt_bytes + h1).digest()
+ x = int.from_bytes(x_bytes, 'little')
+ verifier = pow(g, x, N).to_bytes(32, 'little')
+
+ salt_hex = salt_bytes.hex().upper()
+ verifier_hex = verifier.hex().upper()
+
+ print(f"""UPDATE acore_auth.account
+ SET salt=0x{salt_hex}, verifier=0x{verifier_hex}
+ WHERE username='{username}';""")
+ ```
+
+ ```bash
+ python3 srp6_pass.py | mysql -u root
+ ```
+
+ > Danach auch SOAP-Passwort in FusionCMS-DB aktualisieren:
+ > ```sql
+ > mysql -u root fusioncms -e "UPDATE realms SET console_password='NEUESPASSWORT' WHERE id=1;"
+ > ```
+
+ ---
+
+ ## FusionCMS Web-Panel
+
+ - **URL:** https://panel.ls-cloud.biz
+ - **Login:** `admin` / Passwort aus `/root/acore-credentials.txt`
+ - **GM-Commands über FusionCMS:** Nur vordefinierte Aktionen (Kick, Ban, Item senden) — **kein freies Command-Eingabefeld!**
+
+ Das Panel nutzt SOAP intern. SOAP-Credentials entsprechen dem Admin-Account.
+
+ ---
+
+ ## Verwandte Seiten
+
+ - [[azerothcore]] – Installation, Config-Pfade, XP-Rates
+ - [[gm-commands]] – Vollständige GM-Command-Referenz
+ - [[home]]
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9