Blame

c6e8a2 OtterWiki 2026-04-12 19:50:05
Add AzerothCore GM commands and server console wiki pages
1
# AzerothCore Server-Konsole & Admin-Zugriff
2
3
## Übersicht
4
5
Der AzerothCore-Server (CT119) hat drei Admin-Zugangswege:
6
7
| Methode | Zugriff | Für was |
8
|---------|---------|---------|
9
| **In-Game** | WoW-Client als GM-Account | Einfachste Methode für GM-Commands |
10
| **SSH → Systemd** | `ssh root@192.168.178.89` | Logs, Service-Neustart, Config-Änderungen |
11
| **SOAP** | `127.0.0.1:7878` (nur intern) | Automatisierung, Scripts |
12
13
---
14
15
## SSH-Zugang (CT119)
16
17
```bash
18
# Von Proxmox-Host:
19
ssh root@192.168.178.89
20
21
# Oder direkt per pct exec (von Proxmox):
22
pct exec 119 -- bash -c "systemctl status acore-world"
23
```
24
25
---
26
27
## Services verwalten
28
29
```bash
30
# Status prüfen:
31
systemctl status acore-auth
32
systemctl status acore-world
33
34
# Neustarten:
35
systemctl restart acore-auth
36
systemctl restart acore-world
37
38
# Stoppen / Starten:
39
systemctl stop acore-world
40
systemctl start acore-world
41
```
42
43
> **Reihenfolge:** Bei Neustart zuerst `acore-world` stoppen, dann `acore-auth`. Starten in umgekehrter Reihenfolge.
44
45
---
46
47
## Logs anzeigen
48
49
```bash
50
# Live-Log (Worldserver):
51
journalctl -u acore-world -f
52
53
# Letzten 100 Zeilen:
54
journalctl -u acore-world -n 100
55
56
# Log-Datei direkt (schneller bei vielen Einträgen):
57
tail -f /opt/azerothcore/logs/Server.log
58
59
# Fehler filtern:
60
journalctl -u acore-world -p err -n 50
61
```
62
63
---
64
65
## SOAP-Interface
66
67
Der Worldserver stellt einen SOAP XML-RPC-Endpunkt auf `127.0.0.1:7878` bereit.
68
Credentials = Admin-Account (Login: `admin`, PW in `/root/acore-credentials.txt`).
69
70
### SOAP per PHP (einfachste Methode):
71
72
```bash
73
# In CT119 als root – beliebigen GM-Command ausführen:
74
php -r "
75
\$c = new SoapClient(null, [
76
'location' => 'http://127.0.0.1:7878/',
77
'uri' => 'urn:AC',
78
'style' => SOAP_RPC,
79
'login' => 'admin',
80
'password' => 'ADMINPASS'
81
]);
82
echo \$c->executeCommand(new SoapParam('.server info', 'command'));
83
"
84
```
85
86
### SOAP per curl:
87
88
```bash
89
curl -s -u admin:ADMINPASS \
90
-H "Content-Type: text/xml" \
91
-d '<?xml version="1.0"?>
92
<methodCall>
93
<methodName>execute</methodName>
94
<params>
95
<param><value><string>.server info</string></value></param>
96
</params>
97
</methodCall>' \
98
http://127.0.0.1:7878/
99
```
100
101
> **Wichtig:** Der SOAP-Port ist nur auf `127.0.0.1` gebunden – kein externer Zugriff möglich.
102
103
---
104
105
## Direkte MySQL-Konsole
106
107
```bash
108
# In CT119 als root:
109
mysql -u root
110
111
# Direkte Abfragen:
112
USE acore_auth;
113
SELECT username, last_login FROM account ORDER BY last_login DESC LIMIT 10;
114
115
USE acore_characters;
116
SELECT name, level, class, race FROM characters WHERE online=1;
117
118
# Account-GM-Level setzen (direkt in DB):
119
UPDATE acore_auth.account_access SET SecurityLevel=3 WHERE id=(
120
SELECT id FROM acore_auth.account WHERE username='SPIELERNAME'
121
);
122
```
123
124
---
125
126
## Config neu laden (ohne Neustart)
127
128
```bash
129
# In-Game oder per SOAP:
130
.reload config # worldserver.conf neu laden
131
.reload all # Alle Configs (langsamer)
132
```
133
134
> **Nicht alle Einstellungen** können live neu geladen werden – XP-Rates, Bot-Anzahl und DB-Verbindungen brauchen einen Neustart.
135
136
---
137
138
## CPU-Last reduzieren
139
140
Falls der Server zu viel CPU verbraucht (häufig durch journald bei vielen Log-Einträgen):
141
142
```bash
143
# worldserver nice-Level erhöhen (niedrigere Priorität):
144
renice 10 $(pgrep worldserver)
145
146
# Console-Logging in worldserver.conf reduzieren:
147
# Logger.root = 3,Console Server → Logger.root = 2,Server
148
# Dann: systemctl restart acore-world
149
```
150
151
---
152
153
## Passwort ändern
154
155
Für den Admin-Account nutzt AzerothCore **SHA1 SRP6** (WotLK-kompatibel).
156
157
### Über SOAP (funktioniert NUR ohne `"` im Passwort):
158
159
```bash
160
php -r "
161
\$c = new SoapClient(null, ['location'=>'http://127.0.0.1:7878/','uri'=>'urn:AC','style'=>SOAP_RPC,'login'=>'admin','password'=>'ALTESPASSWORT']);
162
echo \$c->executeCommand(new SoapParam('.account set password admin ALTESPASSWORT NEUESPASSWORT NEUESPASSWORT', 'command'));
163
"
164
```
165
166
### Direkt per Python (wenn Sonderzeichen im PW):
167
168
```python
169
#!/usr/bin/env python3
170
import hashlib, os, struct
171
172
username = "ADMIN" # Immer UPPERCASE
173
password = "NEUESPASSWORT" # Immer UPPERCASE
174
175
N = int.from_bytes(bytes.fromhex(
176
'894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7'), 'big')
177
g = 7
178
179
salt_bytes = os.urandom(32)
180
h1 = hashlib.sha1((username.upper() + ':' + password.upper()).encode()).digest()
181
x_bytes = hashlib.sha1(salt_bytes + h1).digest()
182
x = int.from_bytes(x_bytes, 'little')
183
verifier = pow(g, x, N).to_bytes(32, 'little')
184
185
salt_hex = salt_bytes.hex().upper()
186
verifier_hex = verifier.hex().upper()
187
188
print(f"""UPDATE acore_auth.account
189
SET salt=0x{salt_hex}, verifier=0x{verifier_hex}
190
WHERE username='{username}';""")
191
```
192
193
```bash
194
python3 srp6_pass.py | mysql -u root
195
```
196
197
> Danach auch SOAP-Passwort in FusionCMS-DB aktualisieren:
198
> ```sql
199
> mysql -u root fusioncms -e "UPDATE realms SET console_password='NEUESPASSWORT' WHERE id=1;"
200
> ```
201
202
---
203
204
## FusionCMS Web-Panel
205
206
- **URL:** https://panel.ls-cloud.biz
207
- **Login:** `admin` / Passwort aus `/root/acore-credentials.txt`
208
- **GM-Commands über FusionCMS:** Nur vordefinierte Aktionen (Kick, Ban, Item senden) — **kein freies Command-Eingabefeld!**
209
210
Das Panel nutzt SOAP intern. SOAP-Credentials entsprechen dem Admin-Account.
211
212
---
213
214
## Verwandte Seiten
215
216
- [[azerothcore]] – Installation, Config-Pfade, XP-Rates
217
- [[gm-commands]] – Vollständige GM-Command-Referenz
218
- [[home]]