244 lines
5.4 KiB
PHP
244 lines
5.4 KiB
PHP
|
<?php
|
||
|
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||
|
//
|
||
|
// This program is free software: you can redistribute it and/or modify
|
||
|
// it under the terms of the GNU Affero General Public License as
|
||
|
// published by the Free Software Foundation, either version 3 of the
|
||
|
// License, or (at your option) any later version.
|
||
|
//
|
||
|
// This program is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
// GNU Affero General Public License for more details.
|
||
|
//
|
||
|
// You should have received a copy of the GNU Affero General Public License
|
||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
//include_once('../config.php');
|
||
|
|
||
|
// Functions
|
||
|
|
||
|
// This function connect to the LAS
|
||
|
$LASPort = 49899;
|
||
|
function connectToLAS($LASHost, &$fp, &$res)
|
||
|
{
|
||
|
global $LASPort;
|
||
|
|
||
|
// connect to the login service
|
||
|
$fp = fsockopen ($LASHost, $LASPort, $errno, $errstr, 30);
|
||
|
if (!$fp)
|
||
|
{
|
||
|
$res = "Can't connect to the log analyser service '$LASHost:$LASPort' ($errno: $errstr) (error code 1)";
|
||
|
return false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$res = "";
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function disconnectFromLAS(&$fp)
|
||
|
{
|
||
|
fclose($fp);
|
||
|
}
|
||
|
|
||
|
function logQuery($LASHost, $query, &$result, &$queryId)
|
||
|
{
|
||
|
if (!connectToLAS($LASHost, $fp, $result))
|
||
|
{
|
||
|
$result = "Failed to connect to LAS $LASHost (ec 1)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// send the message that say that we want to add a user
|
||
|
$msgout = new CMemStream;
|
||
|
|
||
|
$fake = 0;
|
||
|
$msgout->serialuint32 ($fake); // fake used to number the packet
|
||
|
|
||
|
$messageType = 0;
|
||
|
$msgout->serialuint8 ($messageType);
|
||
|
|
||
|
$msgout->serialstring($query);
|
||
|
|
||
|
if (!sendMessage ($fp, $msgout))
|
||
|
{
|
||
|
$result = "Failed to send query to LAS $LASHost (ec 2)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (!waitMessage ($fp, $msgin))
|
||
|
{
|
||
|
$result = "Failed to wait for LAS $LASHost (ec 3)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$result = '';
|
||
|
if (!$msgin->serialstring($result))
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 4)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
fclose ($fp);
|
||
|
|
||
|
$pos = strpos($result, ':');
|
||
|
if ($pos === FALSE)
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 5)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$success = (substr($result, 0, $pos) == '1');
|
||
|
|
||
|
$result = substr($result, $pos+1);
|
||
|
|
||
|
if ($success)
|
||
|
{
|
||
|
$pos = strpos($result, ':');
|
||
|
if ($pos == FALSE)
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 6)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$queryId = substr($result, 0, $pos);
|
||
|
$result = substr($result, $pos+1);
|
||
|
}
|
||
|
|
||
|
return $success;
|
||
|
}
|
||
|
|
||
|
function getQueryResult($LASHost, $id, &$result, &$page, &$numpages)
|
||
|
{
|
||
|
if (!connectToLAS($LASHost, $fp, $result))
|
||
|
{
|
||
|
$result = "Failed to connect to LAS $LASHost (ec 7)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// send the message that say that we want to add a user
|
||
|
$msgout = new CMemStream;
|
||
|
|
||
|
$fake = 0;
|
||
|
$msgout->serialuint32 ($fake); // fake used to number the packet
|
||
|
|
||
|
$messageType = 1;
|
||
|
$msgout->serialuint8 ($messageType);
|
||
|
|
||
|
$str = $id.":".$page;
|
||
|
$msgout->serialstring($str);
|
||
|
|
||
|
if (!sendMessage ($fp, $msgout))
|
||
|
{
|
||
|
$result = "Failed to send query to LAS $LASHost (ec 8)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (!waitMessage ($fp, $msgin))
|
||
|
{
|
||
|
$result = "Failed to wait for LAS $LASHost (ec 9)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$result = '';
|
||
|
if (!$msgin->serialstring($result))
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 10)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
fclose ($fp);
|
||
|
|
||
|
$pos = strpos($result, ':');
|
||
|
if ($pos === FALSE)
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 11)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$success = (substr($result, 0, $pos) == '1');
|
||
|
|
||
|
if ($success)
|
||
|
{
|
||
|
++$pos;
|
||
|
$npos = strpos($result, ':', $pos);
|
||
|
$numpages = substr($result, $pos, $npos-$pos);
|
||
|
++$npos;
|
||
|
$pos = strpos($result, ':', $npos);
|
||
|
$page = substr($result, $npos, $pos-$npos);
|
||
|
|
||
|
$result = substr($result, $pos+1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$result = substr($result, $pos+1);
|
||
|
}
|
||
|
|
||
|
return $success;
|
||
|
}
|
||
|
|
||
|
function displayLASQueries($LASHost, &$result)
|
||
|
{
|
||
|
if (!connectToLAS($LASHost, $fp, $result))
|
||
|
{
|
||
|
$result = "Failed to connect to LAS $LASHost (ec 12)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// send the message that say that we want to add a user
|
||
|
$msgout = new CMemStream;
|
||
|
|
||
|
$fake = 0;
|
||
|
$msgout->serialuint32 ($fake); // fake used to number the packet
|
||
|
|
||
|
$messageType = 2;
|
||
|
$msgout->serialuint8 ($messageType);
|
||
|
|
||
|
if (!sendMessage ($fp, $msgout))
|
||
|
{
|
||
|
$result = "Failed to send query to LAS $LASHost (ec 13)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (!waitMessage ($fp, $msgin))
|
||
|
{
|
||
|
$result = "Failed to wait for LAS $LASHost (ec 14)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$result = '';
|
||
|
if (!$msgin->serialstring($result))
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 15)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
fclose ($fp);
|
||
|
|
||
|
$pos = strpos($result, ':');
|
||
|
if ($pos === FALSE)
|
||
|
{
|
||
|
$result = "Failed to decode LAS message $LASHost (ec 16)";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$success = (substr($result, 0, $pos) == '1');
|
||
|
|
||
|
if ($success)
|
||
|
{
|
||
|
++$pos;
|
||
|
$npos = strpos($result, "\n", $pos);
|
||
|
$result = substr($result, $npos);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$result = substr($result, $pos+1);
|
||
|
}
|
||
|
|
||
|
return $success;
|
||
|
}
|
||
|
?>
|