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