98 lines
2.5 KiB
PHP
98 lines
2.5 KiB
PHP
<?php
|
|
require_once('../tools/validate_cookie.php');
|
|
include_once('../login/config.php');
|
|
include_once('../tools/domain_info.php');
|
|
include_once('ring_session_manager_itf.php');
|
|
|
|
|
|
class JoinSessionCb extends CRingSessionManagerWeb
|
|
{
|
|
/**
|
|
* Join the specified session
|
|
*/
|
|
function joinSessionResult($userId, $sessionId, $result, $shardAddr, $participantStatus)
|
|
{
|
|
if ($result != 0)
|
|
{
|
|
echo "<h1>Error ".$result." : '".$shardAddr."' while trying to join a session </h1>";
|
|
echo '<p><p><a href="web_start.php">Back to menu</a>';
|
|
}
|
|
else
|
|
{
|
|
// ok, we have the info to connect !
|
|
// generate the lua script
|
|
$cookie=convertCookieForActionHandler($_COOKIE["ryzomId"]);
|
|
$luaScript='runAH(nil, "on_connect_to_shard", "cookie='.$cookie.'|fsAddr='.$shardAddr.'")';
|
|
//echo 'luaScrip : '.$luaScript.'<br>';
|
|
echo '<lua>'.$luaScript.'</lua>';
|
|
|
|
echo 'You are allowed in the session <br>';
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (isset($_POST["sessionId"]))
|
|
joinSessionFromIdPost($_POST["sessionId"]);
|
|
|
|
/**
|
|
* Authenticate and request to join the specified shard
|
|
*/
|
|
function joinSessionFromIdPost( $destSessionId )
|
|
{
|
|
$domainId = -1;
|
|
if (!validateCookie($userId, $domainId, $charId))
|
|
{
|
|
echo "Invalid cookie !";
|
|
die();
|
|
}
|
|
else
|
|
{
|
|
joinSessionFromId($userId, $domainId, $destSessionId);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Request to join the specified shard
|
|
*/
|
|
function joinSessionFromId( $userId, $domainId, $destSessionId )
|
|
{
|
|
$domainId = -1;
|
|
if (!validateCookie($userId, $domainId, $charId))
|
|
{
|
|
echo "Invalid cookie !";
|
|
die();
|
|
}
|
|
else
|
|
{
|
|
echo "Welcome user $userId<BR>";
|
|
|
|
$domainInfo = getDomainInfo($domainId);
|
|
$addr = split(":", $domainInfo["session_manager_address"]);
|
|
$RSMHost = $addr[0];
|
|
$RSMPort = $addr[1];
|
|
|
|
// ask join to the session manager
|
|
$joinSession = new JoinSessionCb;
|
|
$res = "";
|
|
$joinSession->connect($RSMHost, $RSMPort, $res);
|
|
// $rsmProxy = new CRingSessionManagerWebProxy;
|
|
|
|
// $charSlot = getCharSlot(); // if ingame (!=15), the RSM will check if this character has the right to connect to the specified session
|
|
// $charId = ($userId<<4) + $charSlot;
|
|
echo $charId." of user ".$userId." joigning session ".$destSessionId."<br>";
|
|
$joinSession->joinSession($charId, $destSessionId, $domainInfo["domain_name"]);
|
|
|
|
// wait the the return message
|
|
// $rsmSkel = new CRingSessionManagerWebSkel;
|
|
if ($joinSession->waitCallback() == false)
|
|
{
|
|
echo "No response from server, joinSession failed<br>";
|
|
}
|
|
|
|
die();
|
|
}
|
|
}
|
|
|
|
?>
|
|
|