Vzdálený přístup ke konzoli pomocí PHP
Skočit na navigaci
Skočit na vyhledávání
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.