Vzdálený přístup ke konzoli pomocí PHP
Z WoWResource Wiki
Pokud chcete přímo z webu vykonávat některé důležité konzolové povely MaNGOSu, musíte mít nejprve povolenu v konfiguračním souboru mangosd.conf vzdálenou konzoli.
Ukázka kofigurace v souboru mangosd.conf:
Ra.Enable = 1 Ra.IP = 0.0.0.0 Ra.Port = 3443 Ra.MinLevel = 3 Ra.Secure = 1
Následně se můžete připojit z jiného počítače přes TCP/IP spojení na principu Telnetu nebo pro připojení použít následující PHP třídu.
Soubor RemoteConsole.php:
<?php define('CONNECTION_ERROR', 'Připojení k %s:%s se nezdařilo.'); define('NO_SUCH_USER', 'Neznámý uživatel.'); define('WRONG_PASS', 'Špatné heslo.'); define('NOT_ENOUGH_PRIVILEGES', 'Nedostatečné oprávnění uživatele.'); define('AUTH_ERROR', 'Chyba během přihlašování.'); class RemoteConsole { var $Socket; var $Host = 'localhost'; var $Port = 3443; var $UserName = 'administrator'; var $Password = 'administrator'; var $WelcomeMessage; function Open() { $this->Socket = fsockopen($this->Host, $this->Port); if(!$this->Socket) die(sprintf(CONNECTION_ERROR, $this->Host, $this->Port)); else { $this->WelcomeMessage = trim(fgets($this->Socket, 1000)); fputs($this->Socket, 'USER '.$this->UserName."\n"); fputs($this->Socket, 'PASS '.$this->Password."\n"); $Line = fgets($this->Socket, 1000); if($Line == "-No such user.\r\n") die(NO_SUCH_USER); if($Line == "-Wrong pass.\r\n") die(WRONG_PASS); if($Line == "-Not enough privileges.\r\n") die(NOT_ENOUGH_PRIVILEGES); if($Line != "+Logged in.\r\n") die(AUTH_ERROR.': '.$Line); stream_get_line($this->Socket, 1000, 'mangos>'); } } function Close() { fclose($this->Socket); } function Execute($Command) { fputs($this->Socket, $Command."\n"); stream_get_line($this->Socket, 1000, 'mangos>'); $Data = stream_get_line($this->Socket, 100000, 'mangos>'); return($Data); } } ?>
Jde o celkem jednoduchou třídu, která zajišťuje vzdálené přihlášení a vykonávání povelů.
Ukázka použití:
<?php include('RemoteConsole.php'); $MangosConsole = new RemoteConsole(); $MangosConsole->Host = 'localhost'; $MangosConsole->Port $MangosConsole->UserName = 'user'; $MangosConsole->Password = 'password'; $MangosConsole->Open(); echo($Console->Execute('help')); $MangosConsole->Close(); ?>
Jak je vidět z příkladu, tak použití je intuitivní. Pomocí povelu help nebo commands lze vypsat všechny možné povely.
Další užitečné povely:
- server info - Zobrazí informace o verzi emulátoru a databáze, počtu hráčů a době běhu.
- server restart - Provede restart serveru.
- account create <jméno> <heslo> - Vytvoří nový herní účet.
- announce <text> - Zobrazí všem hráčům zprávu.
- pdump write <jméno souboru> <guid nebo jméno> - Provede zálohu postavy do souboru.