Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php //session_start(); //session_name('SLG'); //E_ALL & ~E_NOTICE & ~E_WARNING & ~E_S..
Decoded Output download
<?php
//session_start();
//session_name('SLG');
//E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
ini_set('display_errors','On');
date_default_timezone_set('GMT');
ini_set('serialize_precision', 14);
//--------------------------------------------------------
// DB GONFIG
$GLOBALS['sc']=array(
'db_host'=>'p:localhost',
'db_user'=>'root',
'db_password'=>'',
'db_name'=>'star_lines_m',
'db_prefix'=>'q_',
'db_charset'=>'UTF8',
);
//--------------------------------------------------------
// DB GONFIG
$SERVERS_LIST=array(
'127.0.0.1' =>['index'=>'Z0','logs'=>false,'logs_server'=>''],
'136.243.73.251' =>['index'=>'Z1','logs'=>false,'logs_server'=>'http://88.198.206.213/x_x_m/'],
'47.88.173.214' =>['index'=>'Z2','logs'=>false,'logs_server'=>'http://124.248.227.18/x_x_m/'],
'124.248.217.186' =>['index'=>'Z2N','logs'=>false,'logs_server'=>'http://124.248.227.18/x_x_m/'],
'88.198.208.122' =>['index'=>'Z4','logs'=>false,'logs_server'=>'http://5.9.67.60/domains/x_x_m/'],
'136.243.73.249' =>['index'=>'Z5','logs'=>false,'logs_server'=>'http://88.99.15.244/x_x_m/'],
'88.99.250.114' =>['index'=>'Z6','logs'=>false,'logs_server'=>'http://5.9.67.60/domains/x_x_m/'],
);
$SERVERS_LIST['172.21.66.111']=$SERVERS_LIST['47.88.173.214'];
if(!isset($SERVERS_LIST[@$_SERVER['SERVER_ADDR']])){
echo"se"."rv"."er_"."i"."de"."nti"."f"."ic"."ati"."on"."_e"."r"."r"."or";
exit;
}
$GLOBALS['CS']=$SERVERS_LIST[$_SERVER['SERVER_ADDR']];
$GLOBALS['sk']=$SERVERS_LIST[$_SERVER['SERVER_ADDR']]['index'];
//--------------------------------------------------------
define('SESSION_DEMO_MAX_SPIN_COUNT',500);
define('SESSION_DEMO_MAX_TIME',60*60*0.5);
define('SESSION_TIMEOUT',60*30);
define('SESSION_TIMEOUT_BONUS',60*60*48);
define('SESSION_SYNCHRONIZE_LIMIT',500);
define('SESSION_LOG_SERVER',$SERVERS_LIST[$_SERVER['SERVER_ADDR']]['logs_server']);
define('BASE_DIR', rtrim(dirname(__FILE__),'/').'/');
define('MAIN_SERVER','http://88.198.208.122/x_x_api.gamesapi.net/communicator/');
define('PROXI_SERVER_ON',false);
define('PROXI_SERVER','http://138.201.155.59/slg/');
if(!empty($pdo)){
define("DATE_TIME", date('Y-m-d H:i:s'));
define("DB_PREFIX", $GLOBALS['sc']['db_prefix']);
require_once(BASE_DIR.'class/pdo.php');
}else{
require_once(BASE_DIR.'class/sql.php');
}
//--------------------------------------------------------
function __autoload($classname){
//echo "$classname <br>";
$file=BASE_DIR."class/{$classname}.php";
if(!is_file($file)){
$dir=explode("_",$classname);
$file=BASE_DIR."class/{$dir[0]}/{$classname}.php";
if(!is_file($file) AND isset($dir[1])){$file=BASE_DIR."class/{$dir[0]}_{$dir[1]}/{$classname}.php";}
}
//echo "$file <br>";
if(is_file($file)){require_once($file);}
}
//--------------------------------------------------------
class session {
//==================================================================================================
function isActiv($hallId,$gameId,$playerName,$ff=0){
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE
`status`='1'
AND `hallId`='{$hallId}'
AND `gameId`='{$gameId}'
AND `userLogin`='{$playerName}'
LIMIT 1;";
//echo $sql;
$lasSession=mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],$sql));
if(empty($lasSession['id'])){
return 0;
}else{
$SAC=session_area_close::go(['session'=>$lasSession,'debug'=>0,'mc'=>1]);
if(@$SAC['status']=='success'){
return 0;
}elseif(@$SAC['error']=='session_closed' OR @$SAC['error']=='session_not_found'){
return 0;
}else{
return ($ff==0)?$lasSession['id']:$lasSession;
}
}
}
//==================================================================================================
function getKey($p){
return md5($GLOBALS['sk'].($p*3).($p-100).($p-99).'TOROnTO@$*YS');
}
//==================================================================================================
function get_playerName($p){
return implode('_',$p);
}
//==================================================================================================
function getGame($a) {
require_once(BASE_DIR.'_games.php');
return @$GAMES[$a];
}
//==================================================================================================
function getById($id=0,$ck=0) {
if(empty($id)){
return ['error'=>'session_id_is_empty'];
}else{
$t=explode("_",$id);
if(!is_numeric($t[0])){
return ['error'=>'session_is_broken'];
}
$id=$t[0]*1;
if($ck==1){
if(empty($t[1])){
return ['error'=>'session_key_is_empty'];
}elseif($t[1]!=md5($id.($id-100).($id-99)) AND $t[1]!=self::getKey($id) AND $t[1]!='baracuda'){
return ['error'=>'session_key_is_fail'];
}
}
}
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `id`='{$id}' LIMIT 1;";
$session=mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],$sql));
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}elseif(empty($session['status'])){
return ['error'=>'session_closed'];
}
$session['lastAction']=json_decode($session['lastAction'],1);
$session['counters']=json_decode($session['counters'],1);
$session['data']=json_decode($session['data'],1);
if(empty($session['data']['ip'])){
$session['data']['ip']=self::updateIp($session);
}
//$session['userId']="{$session['hallId']}_{$session['userLogin']}";
if(strpos($session['betLimit'],',')!==false){
$tt=explode(':',$session['betLimit']);
$session['betLimit']=explode(',',@$tt[0]);
$session['maxTotalBet']=@$tt[1];
}
$session['denominationO']=$session['denomination'];
$session['balanceInCredit']=false;
if(strpos($session['denomination'],'|')!==false){
$tt=explode('|',$session['denomination']);
$session['denomination']=$tt[0];
$session['balanceInCredit']=($tt[1]=='true')?true:false;
}
$session['logTable']=self::getLogTable($session['gameProvider']);
return $session;
}
//==================================================================================================
function getLastAction($session=[]){
if(empty($session['countSpin'])){
return null;
}
$sql="SELECT * FROM `".DB_PREFIX."games_log` WHERE
`status`='1'
AND `t`='".self::getLogTableIndex($session['gameProvider'])."'
AND `sessionId`='{$session['id']}'
ORDER BY `id` DESC LIMIT 1";
$res=mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],$sql));
return $res;
}
//==================================================================================================
function getLogTableIndex($p) {
if(in_array($p,['amatic'])){
$t=1;
}elseif(in_array($p,['aristocrat','egt','igt'])){
$t=2;
}elseif(in_array($p,['microgaming','wazdan','quickspin','apollo'])){
$t=3;
}elseif(in_array($p,['novomatic','netent','play_n_go'])){
$t=4;
}else{
$t=0;
}
return $t;
}
//==================================================================================================
function update($id=0,$d=[]) {
$f=[];
foreach($d as $k=>$v){
if(gettype($v)=='array'){
$v=json_encode($v);
}
$f[]="`{$k}`='{$v}'";
}
if(!empty($f)){
$sql="UPDATE `".DB_PREFIX."games_session` SET ".implode(',',$f)." WHERE `id`='{$id}';";
//echo"$sql";
mysqli_query($GLOBALS['mysqli'],$sql);
}
}
//==================================================================================================
function getLogTable($p){
if($p=='pragmatic'){
//return "games_log2";
}
return "games_log";
}
//==================================================================================================
function updateIp($s){
if(isset($_SERVER['HTTP_IP'])){
$ip=$_SERVER['HTTP_IP'];
}elseif(isset($_POST['ip'])){
$ip=$_POST['ip'];
}elseif(isset($_SERVER['HTTP_CF_CONNECTING_IP'])){
$ip=$_SERVER['HTTP_CF_CONNECTING_IP'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
$s['data']['ip']=self::getIp();
self::update($s['id'],['data'=>$s['data']]);
return $s['data']['ip'];
}
//==================================================================================================
function getIp(){
if(isset($_POST['ip'])){
return $_POST['ip'];
}elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif(isset($_SERVER['HTTP_IP'])){
return $_SERVER['HTTP_IP'];
}elseif(isset($_SERVER['HTTP_CF_CONNECTING_IP'])){
return $_SERVER['HTTP_CF_CONNECTING_IP'];
}else{
return $_SERVER['REMOTE_ADDR'];
}
return null;
}
//==================================================================================================
}
//?cmd=sessionClose&session=3533832_b7e3d55310235739f167099250d0408e
class session_area_close {
var $error;
var $name;
var $content;
var $user;
var $session;
var $sessionId=0;
var $status='fail';
static $actionsForRestore=[
'reSpin','respin','dice',
'freeSpin','freespin','freeReSpin','freespins',
'drop','bonusaction','endbonus','bonus','open',
'Picker','picker','pick',
'xWin','choice','diamonds','jackpot',
'wait','bonusCoins'
];
//==================================================================================================
function go($inputData=[]) {
if(!empty($inputData['sessionId'])){
$session=session::getById($inputData['sessionId']);
}elseif(isset($inputData['session'])){
$session=$inputData['session'];
}elseif(isset($inputData['playerName'])){
$hall=hall::info("{$inputData['agentName']}:{$inputData['hallName']}",$inputData['currency']);
if(!empty($hall['error']) OR empty($hall)){
return ['error'=>empty($hall)?'hall_not_found':$hall['error']];
}
$userLogin=session::get_playerName([$inputData['agentName'],$hall['id'],$inputData['playerName']]);
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `hallId`='{$hall['id']}' AND `userLogin`='{$userLogin}';";
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($row=mysqli_fetch_assoc($result)){
$res[]=session_area_close::go(['session'=>$row]);
}
return @$res;
}
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}elseif($session['status']=='0'){
return ['error'=>'session_closed'];
}elseif($session['status']=='1'){
$t_INDEX=session::getLogTableIndex($session['gameProvider']);
//------------------------------------
if($session['gameProvider']=='amatic' AND gettype($session['data'])=='string'){
$session['data']=json_decode($session['data'],1);
if(!empty($session['data']['ws'])){
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'amatic',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>"-1Active session already exists"
]
];
websocket::send($data);
}
}
//--------------------------------------------
if($session['bet']==0 AND $session['win']==0){
$sql="DELETE FROM `".DB_PREFIX."games_session` WHERE `id`='{$session['id']}';";
mysqli_query($GLOBALS['mysqli'],$sql);
if(@$session['gameProvider']=='quickspin'){
self::quickspin($session);
}
return ['status'=>'success'];
}
//--------------------------------------------
if($session['demo']==1){
self::DELETE_ALL_LOGS($session['id'],$t_INDEX);
mathematics::gameData(['action'=>'delete','session'=>$session]);
return ['status'=>'success'];
}
//--------------------------------------------
/*if(!empty($inputData['synchronize']) AND floor((strtotime(DATE_TIME)-strtotime($session['update'])))<SESSION_TIMEOUT){
//session_area_synchronize::go($session,2);
return ['error'=>'session_in_progress','t'=>1];//,'update'=>$session['update']
}*/
//--------------------------------------------
$lastAction=session::getLastAction($session);
if(floor((strtotime(DATE_TIME)-strtotime($session['start'])))>SESSION_TIMEOUT_BONUS){
$timeOut=true;
}else{
$timeOut=false;
}
//------------------------
if(!empty($lastAction['action'])){
if(@$session['gameProvider']=='quickspin' AND $lastAction['action']!='spin'){
$data=mathematics::gameData([
'action'=>'get',
'session'=>$session
]);
if(isset($data['matrix'])){
unset($data['matrix']);
}
if(!empty($data)){
/*if(in_array(@$data['restoreState'],['spin=0'])){
mathematics::gameData([
'action'=>'set',
'gameId'=>$session['game'],
'userId'=>$session['userId'],
'data'=>[],
]);
}*/
if(empty($data['restoreState']) OR floor((strtotime(DATE_TIME)-strtotime($session['update'])))>60*60*4){
}else{
$timeOut=false;
$lastAction['actionNext']=$lastAction['action'];
return ['error'=>'session_in_progress','t'=>2];
}
}
}
//------------------------
if($session['game']=='312' AND $lastAction['action']!='end' AND $lastAction['actionNext']!='end' AND $timeOut==false){
$timeOut=false;
return ['error'=>'session_in_progress','t'=>2];
}
}
//------------------------
if($timeOut==true OR array_search($lastAction['actionNext'],self::$actionsForRestore)===false){
session::update($session['id'],['status'=>0,'end'=>DATE_TIME]);
$session['status']=0;
//------------------------------------
self::updateGameData($session,$lastAction);
//------------------------------------
//session_area_synchronize::go($session);
self::DELETE_ALL_LOGS($session['id'],$t_INDEX);
//------------------------------------
return ['status'=>'success'];
}else{
//session_area_synchronize::go($session);
return ['error'=>'session_in_progress','t'=>3];//,'update'=>$session['update']
}
}
}
//==================================================================================================
function DELETE_ALL_LOGS($s,$t) {
$sql="DELETE FROM `".DB_PREFIX."games_session` WHERE `id`='{$s}'";
mysqli_query($GLOBALS['mysqli'],$sql);
$sql="DELETE FROM `".DB_PREFIX."games_log` WHERE `t`='{$t}' AND `sessionId`='{$s}'";
mysqli_query($GLOBALS['mysqli'],$sql);
}
//==================================================================================================
function quickspin($session) {
mathematics::gameData([
'action'=>'set',
'session'=>$session,
'data'=>[]
]);
}
//==================================================================================================
function updateGameData($session,$lastAction) {
if(empty($lastAction)){
return;
}elseif(in_array(@$session['gameProvider'],['play_n_go'])){
return;
}elseif(in_array(@$session['gameProvider'],['apollo'])){
mathematics::gameData([
'action'=>'set',
'session'=>$session,
'data'=>[
'betInfo'=>json_decode($lastAction['betInfo'],1),
'matrix'=>json_decode($lastAction['matrix'],1),
]
]);
return;
}elseif(@$session['gameProvider']=='quickspin'){
self::quickspin($session);
return;
}
if($lastAction['matrix']!=''){
$data=mathematics::gameData([
'action'=>'get',
'session'=>$session,
]);
//---------------------
if($session['game']=='308'){
$d=json_decode($lastAction['data'],1);
$data=[
'kcp'=>json_decode($lastAction['matrix'],1),
'lastCard'=>isset($d['gamble']['lastCard']) ? $d['gamble']['lastCard'] : [],
];
}elseif($session['game']=='313'){
$array=json_decode($lastAction['data'], true);
if(isset($array['ball'])){
$data=$array['ball'];
}
}else{
$data['matrix']=json_decode($lastAction['matrix'],1);
}
$data['betInfo']=json_decode($lastAction['betInfo'],1);
$p=json_decode($lastAction['data'],1);
if(isset($p['p'])){
$data['p']=$p['p'];
}
if(@$session['gameProvider']=='novomatic' AND isset($p['GPC'])){
$data['GPC']=$p['GPC'];
}
//---------------------
mathematics::gameData([
'action'=>'set',
'session'=>$session,
'data'=>$data
]);
}
}
//==================================================================================================
}
class session_area_info {
//==================================================================================================
function go($p) {
$session=session::getById($p['session'],1);
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}elseif($session['status']==0){
return ['error'=>'session_closed','exitUrl'=>$session['exitUrl']];
}
if(empty($session['data']['ip'])){
$session['data']['ip']=session::getIp();
session::update($session['id'],['data'=>$session['data']]);
}
/*if($session['id']=='74210370'){
var_dump($_SERVER);
var_dump(session::getIp());
}*/
$game=session::getGame($session['gameId']);
$content=array(
'cmd'=>"sessionInfo",
'serverMathematics'=>@$session['serverMathematics'],
'serverResources'=>@$session['serverResources'],
'sessionId'=>$p['session'],
'exitUrl'=>$session['exitUrl'],
'id'=>$session['gameId'],
'name'=>$game['name'],
'currency'=>$session['currency'],
'language'=>'en',
'type'=>$game['type'],
'systemName'=>$game['systemName'],
'version'=>$game['version'],
'mobile'=>$game['mobile'],
'denomination'=>'',//S$session['denomination'],
);
if(in_array($game['type'],['novomatic','apollo','wazdan','amatic','egt','royal','agt'])){
$h=getallheaders();
$content['websocket']=self::getSetting([
'setting'=>'websocket',
'type'=>$game['type'],
'server'=>!empty($h['HTTP_HOST'])?$h['HTTP_HOST']:$_SERVER['HTTP_HOST'],
'session'=>$session
]);
if($game['type']=='amatic'){
$content['balanceInCredit']=$session['balanceInCredit'];
if(!empty($session['denominationO']) AND empty(explode('|',@$session['denominationO'])[1])){
$content['denomination']=$session['denominationO'];
}
$content['gp']['balanceInCredit']=$session['balanceInCredit'];
if(isset($session['data']['history'])){$content['gp']['history']=@$session['data']['history'];}
if(isset($session['data']['bgc'])){$content['gp']['bgc']=@$session['data']['bgc'];}
if(isset($session['data']['wm'])){$content['gp']['wm']=@$session['data']['wm'];}
}elseif($game['type']=='egt'){
$content['balanceInCredit']=$session['balanceInCredit'];
$content['gameIdentificationNumber']=$game['key'];
$content['jackPot']=hall::info($session['hallId'])['egtJackPot'];
}elseif($game['type']=='royal'){
$content['balanceInCash']=$session['balanceInCredit'];
}
}elseif($game['type']=='microgaming'){
$content['moduleID']=$game['key'];
}elseif($game['type']=='igt' AND !empty($game['key'])){
$content['softwareid']=$game['key'];
}elseif($game['type']=='pragmatic'){
if(!empty($session['data']['replay'])){
$content['param']['replay']=1;
$content['param']['history']=1;
}
if(!empty($session['data']['verification'])){
$content['param']['verification']=1;
}
}
return ['status'=>'success','content'=>$content];
}//
//==================================================================================================
function getSetting($inputData) {
if(!empty($inputData['session']['data']['ws'])){
return $inputData['session']['data']['ws'];
}
require_once(BASE_DIR.'_websockets.php');
if(!isset($websocket[$inputData['server']])){
return null;
}
//var_dump($websocket[$inputData['server']]);
$s=(isset($websocket[$inputData['server']][$inputData['type']]))?$websocket[$inputData['server']][$inputData['type']]:$websocket[$inputData['server']]['all'];
//var_dump($s);
$c1=count($s);
for($i1=0;$i1<$c1;$i1++){
$c2=count($s[$i1][2]);
for($i2=0;$i2<$c2;$i2++){
$_AS[$s[$i1][0].':'.$s[$i1][1].':'.$s[$i1][2][$i2]]=0;
}
}
/*if($inputData['session']['id']=='542'){
var_dump($_AS);
}*/
$sql="SELECT `data` FROM `".DB_PREFIX."games_session` WHERE `status`='1' AND `gameProvider`='{$inputData['type']}'";
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($session=mysqli_fetch_assoc($result)){
$session['data']=json_decode($session['data'],1);
if(!empty($session['data']['ws'])){
if(isset($_AS[$session['data']['ws']['protokol'].":".$session['data']['ws']['server'].":".$session['data']['ws']['socket']])){
$_AS[$session['data']['ws']['protokol'].":".$session['data']['ws']['server'].":".$session['data']['ws']['socket']]++;
}
}
}
/*if($inputData['session']['id']=='542'){
var_dump($_AS);
}*/
$min=999999999999999999999999999999999999999999999999999999;
foreach($_AS AS $k=>$v){
if($v==0){
$ss=$k;
break;
}else{
if($v<$min){
$min=$v;
$ss=$k;
}
}
}
$ss=explode(':',$ss);
$res=[
'protokol'=>$ss[0],
'server'=>$ss[1],
'port'=>($ss[0]=='wss')?443:$ss[2],
'socket'=>$ss[2],
];
if($inputData['type']=='novomatic' AND $res['protokol']=='ws'){
$res['socket']=0;
}
//var_dump($inputData['session']);
$inputData['session']['data']['ws']=$res;
session::update($inputData['session']['id'],['data'=>$inputData['session']['data']]);
return $res;
}
//==================================================================================================
}
class session_area_open {
//==========================================================================================
function go($d) {
$game=self::getGame(@$d['gameId']);
if(empty($game)){
return ['error'=>'game_not_found'];
}elseif(empty($game['activ'])){
return ['error'=>'game_off'];
}
$game['id']=$d['gameId'];
if(!empty($d['demo'])){
$d['currency']='DEMO';
}
/*----------------------------*/
$hall=hall::info("{$d['agentName']}:{$d['hallName']}",$d['currency']);
if(!empty($hall['error']) OR empty($hall)){
return ['error'=>empty($hall)?'hall_not_found':$hall['error']];
}
//var_dump($hall);
/*----------------------------*/
$d['playerName']=session::get_playerName([$d['agentName'],$hall['id'],$d['playerName']]);
$session=session::isActiv($hall['id'],$d['gameId'],$d['playerName'],1);
if(!empty($session)){
if(!empty($d['updateKeys'])){
if(base64_decode($d['addition'])!=$session['addition']){
$DFU['addition']=base64_decode($d['addition']);
}
}
if($d['callback']!=$session['hallHost']){
$DFU['hallHost']=$d['callback'];
}
if(!empty($DFU)){
//var_dump($DFU);
session::update($session['id'],$DFU);
}
return [
'isRestored'=>true,
'session'=>$session['id'].'_'.session::getKey($session['id'])
];
/**/
if($d['callback']!=$session['hallHost']){
session::update($session['id'],['hallHost'=>$d['callback']]);
}
return ['session'=>$session['id'].'_'.session::getKey($session['id'])];
}
$d['settingsAgent']=api::getAgent($d['agentName']);
$session=self::create($d,$hall,$game);
$LL=($session % 100);
if($LL==0){
self::sendCrone();
//$res=server_area_cron::go(40);
//var_dump($res);
}
/*if($d['hallName']=='11307025'){
$res=server_area_cron::go(40);
var_dump($res);
}*/
return ['session'=>$session.'_'.session::getKey($session)];
/*----------------------------*/
}
//==================================================================================================
function sendCrone(){
$options = array (
'http' => array (
'method' => 'POST',
'header' => "Content-Type: application/json;",
//'content' => json_encode(['ip'=>$_SERVER['SERVER_ADDR']]),
//'timeout' =>0.01
)
);
$res=@file_get_contents('http://2966133.usersu00.web.hosting-test.net/?ip='.$_SERVER['SERVER_ADDR'],0,stream_context_create($options));
$options = array (
'http' => array (
'method' => 'POST',
'header' => "Content-Type: application/json;",
'content' => json_encode(['cmd'=>'cron']),
'timeout' =>0.01
)
);
$s=($_SERVER['SERVER_ADDR']=='127.0.0.1')?"http://127.0.0.1/star_lines/__M_SERVER/":"http://{$_SERVER['SERVER_ADDR']}/x_x_m1.gamesapi.net/";
$res=@file_get_contents($s,0,stream_context_create($options));// OR ''
/*echo"
>>
{$res}
<<
";*/
}
//==================================================================================================
function create($d,$hall,$game){
if(!empty($d['data'])){
if(gettype($d['data'])!='array'){
$d['data']=json_decode($d['data'],1);
}
}else{
$d['data']=[];
}
if(!empty($d['settingsAgent']['rtpFullLog'])){
$d['data']['rtpFullLog']=1;
}
if(!empty($d['settingsAgent']['maxBetLimitDisable'])){
$d['data']['maxBetLimitDisable']=1;
}
if(!empty($d['pragmatic'])){
if(!empty($d['pragmatic']['replay'])){
$d['data']['replay']=1;
}
if(!empty($d['pragmatic']['promo'])){
$d['data']['promo']=1;
}
if(!empty($d['pragmatic']['verification'])){
$d['data']['verification']=1;
}
}elseif(!empty($d['amatic'])){
if(!empty($d['amatic']['history'])){
$d['data']['history']=1;
}
if(!empty($d['amatic']['bgc'])){
$d['data']['bgc']=$d['amatic']['bgc'];
}
if(!empty($d['amatic']['wm'])){
$d['data']['wm']=$d['amatic']['wm'];
}
if(!empty($d['amatic']['ge'])){
$d['data']['ge']=$d['amatic']['ge'];
}
}
$d['data']=json_encode($d['data']);
$gameRTP=mathematics::gameRTP('get',['hallId'=>$hall['id'],'gameId'=>$game['id'],'rtp'=>$d['rtp']]);
//if(empty($d['data'])){$d['data']="[]";}
$sql="INSERT INTO `".DB_PREFIX."games_session` (
`status`,
`demo`,
`userLogin`,
`hallId`,
`hallKey`,
`hallHost`,
`rtp`,
`betLimit`,
`riskLimit`,
`game`,
`gameId`,
`gameProvider`,
`gameBet`,
`currency`,
`denomination`,
`start`,
`update`,
`exitUrl`,
`addition`,
`total_rtp`,
`data`,
`demoCash`
)VALUES (
'1',
'".(int)$d['demo']."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['playerName'])."',
'{$hall['id']}',
'',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['callback'])."',
'".(int)$d['rtp']."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['betLimit'])."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['riskLimit'])."',
'{$game['id']}',
'{$game['id']}',
'{$game['type']}',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['gameBet'])."',
'{$hall['currency']}',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['denomination'])."',
'".DATE_TIME."',
'".DATE_TIME."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['exitUrl'])."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],base64_decode($d['addition']))."',
'{$gameRTP}',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['data'])."',
'".(($d['demo']==1 AND isset($d['demoBalance']))?$d['demoBalance']:0)."'
);";
//echo $sql;
mysqli_query($GLOBALS['mysqli'],$sql);
return mysqli_insert_id($GLOBALS['mysqli']);
}
//==================================================================================================
function getUrl($a){
}
//==================================================================================================
function getGame($a) {
require_once(BASE_DIR.'_games.php');
return @$GAMES[$a];
}
//==================================================================================================
}
class session_area_ping {
var $error;
var $name;
var $content;
var $status="fail";
//==================================================================================================
function go($inputData=[]) {
if(!empty($inputData['sessionId'])){
$session=session::getById($inputData['sessionId']);
}elseif(!empty($inputData['session'])){
$session=$inputData['session'];
}
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}else{
if(empty($inputData['synchronize'])){
session::update($session['id'],['update'=>DATE_TIME]);
$session['update']=DATE_TIME;
}
if(!empty($inputData['sss'])){
session_area_synchronize::go($session,2);
}
return ['status'=>'success'];
}
}
//==================================================================================================
}
class session_area_status {
var $status;
var $error;
var $name;
var $content;
//==================================================================================================
function go($inputData) {
//var_dump($inputData);
$res=[];
if(isset($inputData['sessionId'])){
$inputData['sessionId']=(int)$inputData['sessionId'];
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `status`='1' AND `id`='{$inputData['sessionId']}' ORDER BY `id` DESC LIMIT 1;";
}else{
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `status`='1' AND `userLogin`='{$inputData['hallId']}_{$inputData['userLogin']}' ORDER BY `id` DESC LIMIT 1;";
}
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($row=mysqli_fetch_assoc($result)){
$res[]=[
'id'=>$row['id'],
'bet'=>$row['bet'],
'win'=>$row['win'],
'counters'=>$row['counters'],
'data'=>$row['data'],
];
}
$this->status="success";
$this->content=$res;
return $res;
}
//==================================================================================================
}
class session_area_synchronize {
var $content;
var $error='';
var $status="success";
//==================================================================================================
function go($session) {
return;
if(empty($GLOBALS['CS']['logs'])){
return;
}
if(gettype($session)!='array'){
$session=session::getById($session);
}
$logTable=session::getLogTable($session['gameProvider']);
$getLogData=self::getLog($session['id'],$logTable);
$c=count($getLogData['logsSync']);
if($c==0){
return ['status'=>'success'];
}
$cc=$c/SESSION_SYNCHRONIZE_LIMIT;
$t=explode('.',$cc);
if(isset($t[1])){
$cc=$t[0]+1;
}
for($i=0;$i<$cc;$i++){
$data=[
'cmd'=>'sessionSynchronize',
'session'=>mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],"SELECT * FROM `".DB_PREFIX."games_session` WHERE `id`='{$session['id']}' LIMIT 1;")),
'logs'=>self::getLogByPage($i,$getLogData['logsSync']),
];
//var_dump($data);
$options = array (
'http' => array (
'method' => 'POST',
'header' => "Content-Type: application/json;",
'content' => json_encode($data),
'timeout' => 1,
)
);
$context = stream_context_create($options);
$url = file_get_contents(SESSION_LOG_SERVER, 0, $context);
/*$RR=json_decode($url,1);
//var_dump($RR);
if(@$RR['status']=='success'){
//self::UPDATEsync($RR['content'],$logTable);
}*/
}
}
//==================================================================================================
function getLogByPage($p,$l){
$res=[];
$p=[$p*SESSION_SYNCHRONIZE_LIMIT,($p+1)*SESSION_SYNCHRONIZE_LIMIT];
//var_dump($p);
for($i=$p[0];$i<$p[1];$i++){
if(isset($l[$i])){
//echo"$i/";
$res[]=$l[$i];
}
}
return $res;
}
//==================================================================================================
function UPDATEsync($p,$logTable) {
if(empty($p)){
return;
}
$sql="UPDATE `".DB_PREFIX."{$logTable}` SET `sync`='1' WHERE (`id` IN (".implode(',',$p)."));";
//echo $sql;
mysqli_query($GLOBALS['mysqli'],$sql);
}
//==================================================================================================
function getLog($session,$logTable) {
$getLogData=[
'logsSync'=>[],
'logsSyncId'=>[],
];
$sql="SELECT * FROM `".DB_PREFIX."{$logTable}` WHERE `sessionId`='{$session}' AND `sync`='0'";
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($r=mysqli_fetch_assoc($result)){
$getLogData['logsSyncId'][]=$r['id'];
$getLogData['logsSync'][]=$r;
}
return $getLogData;
}
//==================================================================================================
}
class session_area_updateBalance {
var $status;
var $error;
var $name;
var $content;
static $ubp=['amatic','novomatic','wazdan'];
//==================================================================================================
function go($inputData) {
//var_dump($inputData);
$hall=hall::info("{$inputData['agentName']}:{$inputData['hallName']}");
if(empty($hall['id'])){
return [];
}
//var_dump($hall);
$lu=date("Y-m-d H:i:s",strtotime(DATE_TIME)-SESSION_TIMEOUT);
//SESSION_TIMEOUT
$userLogin=session::get_playerName([$inputData['agentName'],$hall['id'],$inputData['playerName']]);
$res=[];
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE
`status`='1'
AND `hallId`='{$hall['id']}'
AND `userLogin`='{$userLogin}'
AND (`gameProvider` IN ('".implode("','",self::$ubp)."'))
AND `update`>='{$lu}'
";
//echo $sql;
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($session=mysqli_fetch_assoc($result)){
$session['data']=json_decode($session['data'],1);
//$GB=apiWallet::getBalance($session);
//var_dump($session);
if(!empty($session['data']['ws'])){
if(empty($GB)){
$GB=apiWallet::getBalance($session);
//var_dump($GB);
}
if(@$GB['status']=='success'){
$res[]=[$session['id'],$session['gameProvider']];
if($session['gameProvider']=='amatic'){
$dechex=dechex($GB['cash']*100);
$b='3'.strlen($dechex).$dechex;
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'amatic',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>"{$b}|".$session['id'].'_'.session::getKey($session['id'])."|{$session['currency']}"
]
];
websocket::send($data);
}elseif($session['gameProvider']=='novomatic'){
$session['balanceInCredit']=false;
if(strpos($session['denomination'],'|')!==false){
$tt=explode('|',$session['denomination']);
$session['denomination']=$tt[0];
$session['balanceInCredit']=($tt[1]=='true')?true:false;
}
if($session['balanceInCredit']==false){
$session['denomination']="100.0";
$session['denominationC']="100.0";
}else{
$session['denomination']=100;
$session['denominationC']="1.0";
}
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'novomatic',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>"S".($GB['cash']*100)."C,{$session['denominationC']},,0",
]
];
websocket::send($data);
}elseif($session['gameProvider']=='wazdan'){
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'wazdan',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>[
'a'=>'E6vcUdnL',
'cid'=>'p5Esjh4w',
'msg'=>'CREDIT_CHANGED',
],
]
];
websocket::send($data);
}
//var_dump($session);
}
}
}
return $res;
}
//==================================================================================================
}
?>
Did this file decode correctly?
Original Code
<?php
//session_start();
//session_name('SLG');
//E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
ini_set('display_errors','On');
date_default_timezone_set('GMT');
ini_set('serialize_precision', 14);
//--------------------------------------------------------
// DB GONFIG
$GLOBALS['sc']=array(
'db_host'=>'p:localhost',
'db_user'=>'root',
'db_password'=>'',
'db_name'=>'star_lines_m',
'db_prefix'=>'q_',
'db_charset'=>'UTF8',
);
//--------------------------------------------------------
// DB GONFIG
$SERVERS_LIST=array(
'127.0.0.1' =>['index'=>'Z0','logs'=>false,'logs_server'=>''],
'136.243.73.251' =>['index'=>'Z1','logs'=>false,'logs_server'=>'http://88.198.206.213/x_x_m/'],
'47.88.173.214' =>['index'=>'Z2','logs'=>false,'logs_server'=>'http://124.248.227.18/x_x_m/'],
'124.248.217.186' =>['index'=>'Z2N','logs'=>false,'logs_server'=>'http://124.248.227.18/x_x_m/'],
'88.198.208.122' =>['index'=>'Z4','logs'=>false,'logs_server'=>'http://5.9.67.60/domains/x_x_m/'],
'136.243.73.249' =>['index'=>'Z5','logs'=>false,'logs_server'=>'http://88.99.15.244/x_x_m/'],
'88.99.250.114' =>['index'=>'Z6','logs'=>false,'logs_server'=>'http://5.9.67.60/domains/x_x_m/'],
);
$SERVERS_LIST['172.21.66.111']=$SERVERS_LIST['47.88.173.214'];
if(!isset($SERVERS_LIST[@$_SERVER['SERVER_ADDR']])){
echo"se"."rv"."er_"."i"."de"."nti"."f"."ic"."ati"."on"."_e"."r"."r"."or";
exit;
}
$GLOBALS['CS']=$SERVERS_LIST[$_SERVER['SERVER_ADDR']];
$GLOBALS['sk']=$SERVERS_LIST[$_SERVER['SERVER_ADDR']]['index'];
//--------------------------------------------------------
define('SESSION_DEMO_MAX_SPIN_COUNT',500);
define('SESSION_DEMO_MAX_TIME',60*60*0.5);
define('SESSION_TIMEOUT',60*30);
define('SESSION_TIMEOUT_BONUS',60*60*48);
define('SESSION_SYNCHRONIZE_LIMIT',500);
define('SESSION_LOG_SERVER',$SERVERS_LIST[$_SERVER['SERVER_ADDR']]['logs_server']);
define('BASE_DIR', rtrim(dirname(__FILE__),'/').'/');
define('MAIN_SERVER','http://88.198.208.122/x_x_api.gamesapi.net/communicator/');
define('PROXI_SERVER_ON',false);
define('PROXI_SERVER','http://138.201.155.59/slg/');
if(!empty($pdo)){
define("DATE_TIME", date('Y-m-d H:i:s'));
define("DB_PREFIX", $GLOBALS['sc']['db_prefix']);
require_once(BASE_DIR.'class/pdo.php');
}else{
require_once(BASE_DIR.'class/sql.php');
}
//--------------------------------------------------------
function __autoload($classname){
//echo "$classname <br>";
$file=BASE_DIR."class/{$classname}.php";
if(!is_file($file)){
$dir=explode("_",$classname);
$file=BASE_DIR."class/{$dir[0]}/{$classname}.php";
if(!is_file($file) AND isset($dir[1])){$file=BASE_DIR."class/{$dir[0]}_{$dir[1]}/{$classname}.php";}
}
//echo "$file <br>";
if(is_file($file)){require_once($file);}
}
//--------------------------------------------------------
class session {
//==================================================================================================
function isActiv($hallId,$gameId,$playerName,$ff=0){
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE
`status`='1'
AND `hallId`='{$hallId}'
AND `gameId`='{$gameId}'
AND `userLogin`='{$playerName}'
LIMIT 1;";
//echo $sql;
$lasSession=mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],$sql));
if(empty($lasSession['id'])){
return 0;
}else{
$SAC=session_area_close::go(['session'=>$lasSession,'debug'=>0,'mc'=>1]);
if(@$SAC['status']=='success'){
return 0;
}elseif(@$SAC['error']=='session_closed' OR @$SAC['error']=='session_not_found'){
return 0;
}else{
return ($ff==0)?$lasSession['id']:$lasSession;
}
}
}
//==================================================================================================
function getKey($p){
return md5($GLOBALS['sk'].($p*3).($p-100).($p-99).'TOROnTO@$*YS');
}
//==================================================================================================
function get_playerName($p){
return implode('_',$p);
}
//==================================================================================================
function getGame($a) {
require_once(BASE_DIR.'_games.php');
return @$GAMES[$a];
}
//==================================================================================================
function getById($id=0,$ck=0) {
if(empty($id)){
return ['error'=>'session_id_is_empty'];
}else{
$t=explode("_",$id);
if(!is_numeric($t[0])){
return ['error'=>'session_is_broken'];
}
$id=$t[0]*1;
if($ck==1){
if(empty($t[1])){
return ['error'=>'session_key_is_empty'];
}elseif($t[1]!=md5($id.($id-100).($id-99)) AND $t[1]!=self::getKey($id) AND $t[1]!='baracuda'){
return ['error'=>'session_key_is_fail'];
}
}
}
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `id`='{$id}' LIMIT 1;";
$session=mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],$sql));
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}elseif(empty($session['status'])){
return ['error'=>'session_closed'];
}
$session['lastAction']=json_decode($session['lastAction'],1);
$session['counters']=json_decode($session['counters'],1);
$session['data']=json_decode($session['data'],1);
if(empty($session['data']['ip'])){
$session['data']['ip']=self::updateIp($session);
}
//$session['userId']="{$session['hallId']}_{$session['userLogin']}";
if(strpos($session['betLimit'],',')!==false){
$tt=explode(':',$session['betLimit']);
$session['betLimit']=explode(',',@$tt[0]);
$session['maxTotalBet']=@$tt[1];
}
$session['denominationO']=$session['denomination'];
$session['balanceInCredit']=false;
if(strpos($session['denomination'],'|')!==false){
$tt=explode('|',$session['denomination']);
$session['denomination']=$tt[0];
$session['balanceInCredit']=($tt[1]=='true')?true:false;
}
$session['logTable']=self::getLogTable($session['gameProvider']);
return $session;
}
//==================================================================================================
function getLastAction($session=[]){
if(empty($session['countSpin'])){
return null;
}
$sql="SELECT * FROM `".DB_PREFIX."games_log` WHERE
`status`='1'
AND `t`='".self::getLogTableIndex($session['gameProvider'])."'
AND `sessionId`='{$session['id']}'
ORDER BY `id` DESC LIMIT 1";
$res=mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],$sql));
return $res;
}
//==================================================================================================
function getLogTableIndex($p) {
if(in_array($p,['amatic'])){
$t=1;
}elseif(in_array($p,['aristocrat','egt','igt'])){
$t=2;
}elseif(in_array($p,['microgaming','wazdan','quickspin','apollo'])){
$t=3;
}elseif(in_array($p,['novomatic','netent','play_n_go'])){
$t=4;
}else{
$t=0;
}
return $t;
}
//==================================================================================================
function update($id=0,$d=[]) {
$f=[];
foreach($d as $k=>$v){
if(gettype($v)=='array'){
$v=json_encode($v);
}
$f[]="`{$k}`='{$v}'";
}
if(!empty($f)){
$sql="UPDATE `".DB_PREFIX."games_session` SET ".implode(',',$f)." WHERE `id`='{$id}';";
//echo"$sql";
mysqli_query($GLOBALS['mysqli'],$sql);
}
}
//==================================================================================================
function getLogTable($p){
if($p=='pragmatic'){
//return "games_log2";
}
return "games_log";
}
//==================================================================================================
function updateIp($s){
if(isset($_SERVER['HTTP_IP'])){
$ip=$_SERVER['HTTP_IP'];
}elseif(isset($_POST['ip'])){
$ip=$_POST['ip'];
}elseif(isset($_SERVER['HTTP_CF_CONNECTING_IP'])){
$ip=$_SERVER['HTTP_CF_CONNECTING_IP'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
$s['data']['ip']=self::getIp();
self::update($s['id'],['data'=>$s['data']]);
return $s['data']['ip'];
}
//==================================================================================================
function getIp(){
if(isset($_POST['ip'])){
return $_POST['ip'];
}elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif(isset($_SERVER['HTTP_IP'])){
return $_SERVER['HTTP_IP'];
}elseif(isset($_SERVER['HTTP_CF_CONNECTING_IP'])){
return $_SERVER['HTTP_CF_CONNECTING_IP'];
}else{
return $_SERVER['REMOTE_ADDR'];
}
return null;
}
//==================================================================================================
}
//?cmd=sessionClose&session=3533832_b7e3d55310235739f167099250d0408e
class session_area_close {
var $error;
var $name;
var $content;
var $user;
var $session;
var $sessionId=0;
var $status='fail';
static $actionsForRestore=[
'reSpin','respin','dice',
'freeSpin','freespin','freeReSpin','freespins',
'drop','bonusaction','endbonus','bonus','open',
'Picker','picker','pick',
'xWin','choice','diamonds','jackpot',
'wait','bonusCoins'
];
//==================================================================================================
function go($inputData=[]) {
if(!empty($inputData['sessionId'])){
$session=session::getById($inputData['sessionId']);
}elseif(isset($inputData['session'])){
$session=$inputData['session'];
}elseif(isset($inputData['playerName'])){
$hall=hall::info("{$inputData['agentName']}:{$inputData['hallName']}",$inputData['currency']);
if(!empty($hall['error']) OR empty($hall)){
return ['error'=>empty($hall)?'hall_not_found':$hall['error']];
}
$userLogin=session::get_playerName([$inputData['agentName'],$hall['id'],$inputData['playerName']]);
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `hallId`='{$hall['id']}' AND `userLogin`='{$userLogin}';";
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($row=mysqli_fetch_assoc($result)){
$res[]=session_area_close::go(['session'=>$row]);
}
return @$res;
}
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}elseif($session['status']=='0'){
return ['error'=>'session_closed'];
}elseif($session['status']=='1'){
$t_INDEX=session::getLogTableIndex($session['gameProvider']);
//------------------------------------
if($session['gameProvider']=='amatic' AND gettype($session['data'])=='string'){
$session['data']=json_decode($session['data'],1);
if(!empty($session['data']['ws'])){
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'amatic',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>"-1Active session already exists"
]
];
websocket::send($data);
}
}
//--------------------------------------------
if($session['bet']==0 AND $session['win']==0){
$sql="DELETE FROM `".DB_PREFIX."games_session` WHERE `id`='{$session['id']}';";
mysqli_query($GLOBALS['mysqli'],$sql);
if(@$session['gameProvider']=='quickspin'){
self::quickspin($session);
}
return ['status'=>'success'];
}
//--------------------------------------------
if($session['demo']==1){
self::DELETE_ALL_LOGS($session['id'],$t_INDEX);
mathematics::gameData(['action'=>'delete','session'=>$session]);
return ['status'=>'success'];
}
//--------------------------------------------
/*if(!empty($inputData['synchronize']) AND floor((strtotime(DATE_TIME)-strtotime($session['update'])))<SESSION_TIMEOUT){
//session_area_synchronize::go($session,2);
return ['error'=>'session_in_progress','t'=>1];//,'update'=>$session['update']
}*/
//--------------------------------------------
$lastAction=session::getLastAction($session);
if(floor((strtotime(DATE_TIME)-strtotime($session['start'])))>SESSION_TIMEOUT_BONUS){
$timeOut=true;
}else{
$timeOut=false;
}
//------------------------
if(!empty($lastAction['action'])){
if(@$session['gameProvider']=='quickspin' AND $lastAction['action']!='spin'){
$data=mathematics::gameData([
'action'=>'get',
'session'=>$session
]);
if(isset($data['matrix'])){
unset($data['matrix']);
}
if(!empty($data)){
/*if(in_array(@$data['restoreState'],['spin=0'])){
mathematics::gameData([
'action'=>'set',
'gameId'=>$session['game'],
'userId'=>$session['userId'],
'data'=>[],
]);
}*/
if(empty($data['restoreState']) OR floor((strtotime(DATE_TIME)-strtotime($session['update'])))>60*60*4){
}else{
$timeOut=false;
$lastAction['actionNext']=$lastAction['action'];
return ['error'=>'session_in_progress','t'=>2];
}
}
}
//------------------------
if($session['game']=='312' AND $lastAction['action']!='end' AND $lastAction['actionNext']!='end' AND $timeOut==false){
$timeOut=false;
return ['error'=>'session_in_progress','t'=>2];
}
}
//------------------------
if($timeOut==true OR array_search($lastAction['actionNext'],self::$actionsForRestore)===false){
session::update($session['id'],['status'=>0,'end'=>DATE_TIME]);
$session['status']=0;
//------------------------------------
self::updateGameData($session,$lastAction);
//------------------------------------
//session_area_synchronize::go($session);
self::DELETE_ALL_LOGS($session['id'],$t_INDEX);
//------------------------------------
return ['status'=>'success'];
}else{
//session_area_synchronize::go($session);
return ['error'=>'session_in_progress','t'=>3];//,'update'=>$session['update']
}
}
}
//==================================================================================================
function DELETE_ALL_LOGS($s,$t) {
$sql="DELETE FROM `".DB_PREFIX."games_session` WHERE `id`='{$s}'";
mysqli_query($GLOBALS['mysqli'],$sql);
$sql="DELETE FROM `".DB_PREFIX."games_log` WHERE `t`='{$t}' AND `sessionId`='{$s}'";
mysqli_query($GLOBALS['mysqli'],$sql);
}
//==================================================================================================
function quickspin($session) {
mathematics::gameData([
'action'=>'set',
'session'=>$session,
'data'=>[]
]);
}
//==================================================================================================
function updateGameData($session,$lastAction) {
if(empty($lastAction)){
return;
}elseif(in_array(@$session['gameProvider'],['play_n_go'])){
return;
}elseif(in_array(@$session['gameProvider'],['apollo'])){
mathematics::gameData([
'action'=>'set',
'session'=>$session,
'data'=>[
'betInfo'=>json_decode($lastAction['betInfo'],1),
'matrix'=>json_decode($lastAction['matrix'],1),
]
]);
return;
}elseif(@$session['gameProvider']=='quickspin'){
self::quickspin($session);
return;
}
if($lastAction['matrix']!=''){
$data=mathematics::gameData([
'action'=>'get',
'session'=>$session,
]);
//---------------------
if($session['game']=='308'){
$d=json_decode($lastAction['data'],1);
$data=[
'kcp'=>json_decode($lastAction['matrix'],1),
'lastCard'=>isset($d['gamble']['lastCard']) ? $d['gamble']['lastCard'] : [],
];
}elseif($session['game']=='313'){
$array=json_decode($lastAction['data'], true);
if(isset($array['ball'])){
$data=$array['ball'];
}
}else{
$data['matrix']=json_decode($lastAction['matrix'],1);
}
$data['betInfo']=json_decode($lastAction['betInfo'],1);
$p=json_decode($lastAction['data'],1);
if(isset($p['p'])){
$data['p']=$p['p'];
}
if(@$session['gameProvider']=='novomatic' AND isset($p['GPC'])){
$data['GPC']=$p['GPC'];
}
//---------------------
mathematics::gameData([
'action'=>'set',
'session'=>$session,
'data'=>$data
]);
}
}
//==================================================================================================
}
class session_area_info {
//==================================================================================================
function go($p) {
$session=session::getById($p['session'],1);
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}elseif($session['status']==0){
return ['error'=>'session_closed','exitUrl'=>$session['exitUrl']];
}
if(empty($session['data']['ip'])){
$session['data']['ip']=session::getIp();
session::update($session['id'],['data'=>$session['data']]);
}
/*if($session['id']=='74210370'){
var_dump($_SERVER);
var_dump(session::getIp());
}*/
$game=session::getGame($session['gameId']);
$content=array(
'cmd'=>"sessionInfo",
'serverMathematics'=>@$session['serverMathematics'],
'serverResources'=>@$session['serverResources'],
'sessionId'=>$p['session'],
'exitUrl'=>$session['exitUrl'],
'id'=>$session['gameId'],
'name'=>$game['name'],
'currency'=>$session['currency'],
'language'=>'en',
'type'=>$game['type'],
'systemName'=>$game['systemName'],
'version'=>$game['version'],
'mobile'=>$game['mobile'],
'denomination'=>'',//S$session['denomination'],
);
if(in_array($game['type'],['novomatic','apollo','wazdan','amatic','egt','royal','agt'])){
$h=getallheaders();
$content['websocket']=self::getSetting([
'setting'=>'websocket',
'type'=>$game['type'],
'server'=>!empty($h['HTTP_HOST'])?$h['HTTP_HOST']:$_SERVER['HTTP_HOST'],
'session'=>$session
]);
if($game['type']=='amatic'){
$content['balanceInCredit']=$session['balanceInCredit'];
if(!empty($session['denominationO']) AND empty(explode('|',@$session['denominationO'])[1])){
$content['denomination']=$session['denominationO'];
}
$content['gp']['balanceInCredit']=$session['balanceInCredit'];
if(isset($session['data']['history'])){$content['gp']['history']=@$session['data']['history'];}
if(isset($session['data']['bgc'])){$content['gp']['bgc']=@$session['data']['bgc'];}
if(isset($session['data']['wm'])){$content['gp']['wm']=@$session['data']['wm'];}
}elseif($game['type']=='egt'){
$content['balanceInCredit']=$session['balanceInCredit'];
$content['gameIdentificationNumber']=$game['key'];
$content['jackPot']=hall::info($session['hallId'])['egtJackPot'];
}elseif($game['type']=='royal'){
$content['balanceInCash']=$session['balanceInCredit'];
}
}elseif($game['type']=='microgaming'){
$content['moduleID']=$game['key'];
}elseif($game['type']=='igt' AND !empty($game['key'])){
$content['softwareid']=$game['key'];
}elseif($game['type']=='pragmatic'){
if(!empty($session['data']['replay'])){
$content['param']['replay']=1;
$content['param']['history']=1;
}
if(!empty($session['data']['verification'])){
$content['param']['verification']=1;
}
}
return ['status'=>'success','content'=>$content];
}//
//==================================================================================================
function getSetting($inputData) {
if(!empty($inputData['session']['data']['ws'])){
return $inputData['session']['data']['ws'];
}
require_once(BASE_DIR.'_websockets.php');
if(!isset($websocket[$inputData['server']])){
return null;
}
//var_dump($websocket[$inputData['server']]);
$s=(isset($websocket[$inputData['server']][$inputData['type']]))?$websocket[$inputData['server']][$inputData['type']]:$websocket[$inputData['server']]['all'];
//var_dump($s);
$c1=count($s);
for($i1=0;$i1<$c1;$i1++){
$c2=count($s[$i1][2]);
for($i2=0;$i2<$c2;$i2++){
$_AS[$s[$i1][0].':'.$s[$i1][1].':'.$s[$i1][2][$i2]]=0;
}
}
/*if($inputData['session']['id']=='542'){
var_dump($_AS);
}*/
$sql="SELECT `data` FROM `".DB_PREFIX."games_session` WHERE `status`='1' AND `gameProvider`='{$inputData['type']}'";
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($session=mysqli_fetch_assoc($result)){
$session['data']=json_decode($session['data'],1);
if(!empty($session['data']['ws'])){
if(isset($_AS[$session['data']['ws']['protokol'].":".$session['data']['ws']['server'].":".$session['data']['ws']['socket']])){
$_AS[$session['data']['ws']['protokol'].":".$session['data']['ws']['server'].":".$session['data']['ws']['socket']]++;
}
}
}
/*if($inputData['session']['id']=='542'){
var_dump($_AS);
}*/
$min=999999999999999999999999999999999999999999999999999999;
foreach($_AS AS $k=>$v){
if($v==0){
$ss=$k;
break;
}else{
if($v<$min){
$min=$v;
$ss=$k;
}
}
}
$ss=explode(':',$ss);
$res=[
'protokol'=>$ss[0],
'server'=>$ss[1],
'port'=>($ss[0]=='wss')?443:$ss[2],
'socket'=>$ss[2],
];
if($inputData['type']=='novomatic' AND $res['protokol']=='ws'){
$res['socket']=0;
}
//var_dump($inputData['session']);
$inputData['session']['data']['ws']=$res;
session::update($inputData['session']['id'],['data'=>$inputData['session']['data']]);
return $res;
}
//==================================================================================================
}
class session_area_open {
//==========================================================================================
function go($d) {
$game=self::getGame(@$d['gameId']);
if(empty($game)){
return ['error'=>'game_not_found'];
}elseif(empty($game['activ'])){
return ['error'=>'game_off'];
}
$game['id']=$d['gameId'];
if(!empty($d['demo'])){
$d['currency']='DEMO';
}
/*----------------------------*/
$hall=hall::info("{$d['agentName']}:{$d['hallName']}",$d['currency']);
if(!empty($hall['error']) OR empty($hall)){
return ['error'=>empty($hall)?'hall_not_found':$hall['error']];
}
//var_dump($hall);
/*----------------------------*/
$d['playerName']=session::get_playerName([$d['agentName'],$hall['id'],$d['playerName']]);
$session=session::isActiv($hall['id'],$d['gameId'],$d['playerName'],1);
if(!empty($session)){
if(!empty($d['updateKeys'])){
if(base64_decode($d['addition'])!=$session['addition']){
$DFU['addition']=base64_decode($d['addition']);
}
}
if($d['callback']!=$session['hallHost']){
$DFU['hallHost']=$d['callback'];
}
if(!empty($DFU)){
//var_dump($DFU);
session::update($session['id'],$DFU);
}
return [
'isRestored'=>true,
'session'=>$session['id'].'_'.session::getKey($session['id'])
];
/**/
if($d['callback']!=$session['hallHost']){
session::update($session['id'],['hallHost'=>$d['callback']]);
}
return ['session'=>$session['id'].'_'.session::getKey($session['id'])];
}
$d['settingsAgent']=api::getAgent($d['agentName']);
$session=self::create($d,$hall,$game);
$LL=($session % 100);
if($LL==0){
self::sendCrone();
//$res=server_area_cron::go(40);
//var_dump($res);
}
/*if($d['hallName']=='11307025'){
$res=server_area_cron::go(40);
var_dump($res);
}*/
return ['session'=>$session.'_'.session::getKey($session)];
/*----------------------------*/
}
//==================================================================================================
function sendCrone(){
$options = array (
'http' => array (
'method' => 'POST',
'header' => "Content-Type: application/json;",
//'content' => json_encode(['ip'=>$_SERVER['SERVER_ADDR']]),
//'timeout' =>0.01
)
);
$res=@file_get_contents('http://2966133.usersu00.web.hosting-test.net/?ip='.$_SERVER['SERVER_ADDR'],0,stream_context_create($options));
$options = array (
'http' => array (
'method' => 'POST',
'header' => "Content-Type: application/json;",
'content' => json_encode(['cmd'=>'cron']),
'timeout' =>0.01
)
);
$s=($_SERVER['SERVER_ADDR']=='127.0.0.1')?"http://127.0.0.1/star_lines/__M_SERVER/":"http://{$_SERVER['SERVER_ADDR']}/x_x_m1.gamesapi.net/";
$res=@file_get_contents($s,0,stream_context_create($options));// OR ''
/*echo"
>>
{$res}
<<
";*/
}
//==================================================================================================
function create($d,$hall,$game){
if(!empty($d['data'])){
if(gettype($d['data'])!='array'){
$d['data']=json_decode($d['data'],1);
}
}else{
$d['data']=[];
}
if(!empty($d['settingsAgent']['rtpFullLog'])){
$d['data']['rtpFullLog']=1;
}
if(!empty($d['settingsAgent']['maxBetLimitDisable'])){
$d['data']['maxBetLimitDisable']=1;
}
if(!empty($d['pragmatic'])){
if(!empty($d['pragmatic']['replay'])){
$d['data']['replay']=1;
}
if(!empty($d['pragmatic']['promo'])){
$d['data']['promo']=1;
}
if(!empty($d['pragmatic']['verification'])){
$d['data']['verification']=1;
}
}elseif(!empty($d['amatic'])){
if(!empty($d['amatic']['history'])){
$d['data']['history']=1;
}
if(!empty($d['amatic']['bgc'])){
$d['data']['bgc']=$d['amatic']['bgc'];
}
if(!empty($d['amatic']['wm'])){
$d['data']['wm']=$d['amatic']['wm'];
}
if(!empty($d['amatic']['ge'])){
$d['data']['ge']=$d['amatic']['ge'];
}
}
$d['data']=json_encode($d['data']);
$gameRTP=mathematics::gameRTP('get',['hallId'=>$hall['id'],'gameId'=>$game['id'],'rtp'=>$d['rtp']]);
//if(empty($d['data'])){$d['data']="[]";}
$sql="INSERT INTO `".DB_PREFIX."games_session` (
`status`,
`demo`,
`userLogin`,
`hallId`,
`hallKey`,
`hallHost`,
`rtp`,
`betLimit`,
`riskLimit`,
`game`,
`gameId`,
`gameProvider`,
`gameBet`,
`currency`,
`denomination`,
`start`,
`update`,
`exitUrl`,
`addition`,
`total_rtp`,
`data`,
`demoCash`
)VALUES (
'1',
'".(int)$d['demo']."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['playerName'])."',
'{$hall['id']}',
'',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['callback'])."',
'".(int)$d['rtp']."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['betLimit'])."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['riskLimit'])."',
'{$game['id']}',
'{$game['id']}',
'{$game['type']}',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['gameBet'])."',
'{$hall['currency']}',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['denomination'])."',
'".DATE_TIME."',
'".DATE_TIME."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['exitUrl'])."',
'".mysqli_real_escape_string($GLOBALS['mysqli'],base64_decode($d['addition']))."',
'{$gameRTP}',
'".mysqli_real_escape_string($GLOBALS['mysqli'],$d['data'])."',
'".(($d['demo']==1 AND isset($d['demoBalance']))?$d['demoBalance']:0)."'
);";
//echo $sql;
mysqli_query($GLOBALS['mysqli'],$sql);
return mysqli_insert_id($GLOBALS['mysqli']);
}
//==================================================================================================
function getUrl($a){
}
//==================================================================================================
function getGame($a) {
require_once(BASE_DIR.'_games.php');
return @$GAMES[$a];
}
//==================================================================================================
}
class session_area_ping {
var $error;
var $name;
var $content;
var $status="fail";
//==================================================================================================
function go($inputData=[]) {
if(!empty($inputData['sessionId'])){
$session=session::getById($inputData['sessionId']);
}elseif(!empty($inputData['session'])){
$session=$inputData['session'];
}
if(empty($session['id'])){
return ['error'=>'session_not_found'];
}else{
if(empty($inputData['synchronize'])){
session::update($session['id'],['update'=>DATE_TIME]);
$session['update']=DATE_TIME;
}
if(!empty($inputData['sss'])){
session_area_synchronize::go($session,2);
}
return ['status'=>'success'];
}
}
//==================================================================================================
}
class session_area_status {
var $status;
var $error;
var $name;
var $content;
//==================================================================================================
function go($inputData) {
//var_dump($inputData);
$res=[];
if(isset($inputData['sessionId'])){
$inputData['sessionId']=(int)$inputData['sessionId'];
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `status`='1' AND `id`='{$inputData['sessionId']}' ORDER BY `id` DESC LIMIT 1;";
}else{
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE `status`='1' AND `userLogin`='{$inputData['hallId']}_{$inputData['userLogin']}' ORDER BY `id` DESC LIMIT 1;";
}
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($row=mysqli_fetch_assoc($result)){
$res[]=[
'id'=>$row['id'],
'bet'=>$row['bet'],
'win'=>$row['win'],
'counters'=>$row['counters'],
'data'=>$row['data'],
];
}
$this->status="success";
$this->content=$res;
return $res;
}
//==================================================================================================
}
class session_area_synchronize {
var $content;
var $error='';
var $status="success";
//==================================================================================================
function go($session) {
return;
if(empty($GLOBALS['CS']['logs'])){
return;
}
if(gettype($session)!='array'){
$session=session::getById($session);
}
$logTable=session::getLogTable($session['gameProvider']);
$getLogData=self::getLog($session['id'],$logTable);
$c=count($getLogData['logsSync']);
if($c==0){
return ['status'=>'success'];
}
$cc=$c/SESSION_SYNCHRONIZE_LIMIT;
$t=explode('.',$cc);
if(isset($t[1])){
$cc=$t[0]+1;
}
for($i=0;$i<$cc;$i++){
$data=[
'cmd'=>'sessionSynchronize',
'session'=>mysqli_fetch_assoc(mysqli_query($GLOBALS['mysqli'],"SELECT * FROM `".DB_PREFIX."games_session` WHERE `id`='{$session['id']}' LIMIT 1;")),
'logs'=>self::getLogByPage($i,$getLogData['logsSync']),
];
//var_dump($data);
$options = array (
'http' => array (
'method' => 'POST',
'header' => "Content-Type: application/json;",
'content' => json_encode($data),
'timeout' => 1,
)
);
$context = stream_context_create($options);
$url = file_get_contents(SESSION_LOG_SERVER, 0, $context);
/*$RR=json_decode($url,1);
//var_dump($RR);
if(@$RR['status']=='success'){
//self::UPDATEsync($RR['content'],$logTable);
}*/
}
}
//==================================================================================================
function getLogByPage($p,$l){
$res=[];
$p=[$p*SESSION_SYNCHRONIZE_LIMIT,($p+1)*SESSION_SYNCHRONIZE_LIMIT];
//var_dump($p);
for($i=$p[0];$i<$p[1];$i++){
if(isset($l[$i])){
//echo"$i/";
$res[]=$l[$i];
}
}
return $res;
}
//==================================================================================================
function UPDATEsync($p,$logTable) {
if(empty($p)){
return;
}
$sql="UPDATE `".DB_PREFIX."{$logTable}` SET `sync`='1' WHERE (`id` IN (".implode(',',$p)."));";
//echo $sql;
mysqli_query($GLOBALS['mysqli'],$sql);
}
//==================================================================================================
function getLog($session,$logTable) {
$getLogData=[
'logsSync'=>[],
'logsSyncId'=>[],
];
$sql="SELECT * FROM `".DB_PREFIX."{$logTable}` WHERE `sessionId`='{$session}' AND `sync`='0'";
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($r=mysqli_fetch_assoc($result)){
$getLogData['logsSyncId'][]=$r['id'];
$getLogData['logsSync'][]=$r;
}
return $getLogData;
}
//==================================================================================================
}
class session_area_updateBalance {
var $status;
var $error;
var $name;
var $content;
static $ubp=['amatic','novomatic','wazdan'];
//==================================================================================================
function go($inputData) {
//var_dump($inputData);
$hall=hall::info("{$inputData['agentName']}:{$inputData['hallName']}");
if(empty($hall['id'])){
return [];
}
//var_dump($hall);
$lu=date("Y-m-d H:i:s",strtotime(DATE_TIME)-SESSION_TIMEOUT);
//SESSION_TIMEOUT
$userLogin=session::get_playerName([$inputData['agentName'],$hall['id'],$inputData['playerName']]);
$res=[];
$sql="SELECT * FROM `".DB_PREFIX."games_session` WHERE
`status`='1'
AND `hallId`='{$hall['id']}'
AND `userLogin`='{$userLogin}'
AND (`gameProvider` IN ('".implode("','",self::$ubp)."'))
AND `update`>='{$lu}'
";
//echo $sql;
$result=mysqli_query($GLOBALS['mysqli'],$sql);
while($session=mysqli_fetch_assoc($result)){
$session['data']=json_decode($session['data'],1);
//$GB=apiWallet::getBalance($session);
//var_dump($session);
if(!empty($session['data']['ws'])){
if(empty($GB)){
$GB=apiWallet::getBalance($session);
//var_dump($GB);
}
if(@$GB['status']=='success'){
$res[]=[$session['id'],$session['gameProvider']];
if($session['gameProvider']=='amatic'){
$dechex=dechex($GB['cash']*100);
$b='3'.strlen($dechex).$dechex;
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'amatic',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>"{$b}|".$session['id'].'_'.session::getKey($session['id'])."|{$session['currency']}"
]
];
websocket::send($data);
}elseif($session['gameProvider']=='novomatic'){
$session['balanceInCredit']=false;
if(strpos($session['denomination'],'|')!==false){
$tt=explode('|',$session['denomination']);
$session['denomination']=$tt[0];
$session['balanceInCredit']=($tt[1]=='true')?true:false;
}
if($session['balanceInCredit']==false){
$session['denomination']="100.0";
$session['denominationC']="100.0";
}else{
$session['denomination']=100;
$session['denominationC']="1.0";
}
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'novomatic',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>"S".($GB['cash']*100)."C,{$session['denominationC']},,0",
]
];
websocket::send($data);
}elseif($session['gameProvider']=='wazdan'){
$data=[
'server'=>$session['data']['ws']['server'],
'port'=>$session['data']['ws']['socket'],
'data'=>[
'M_type'=>'customService',
'proto'=>'wazdan',
'sessionKey'=>$session['id'].'_'.session::getKey($session['id']),
'message'=>[
'a'=>'E6vcUdnL',
'cid'=>'p5Esjh4w',
'msg'=>'CREDIT_CHANGED',
],
]
];
websocket::send($data);
}
//var_dump($session);
}
}
}
return $res;
}
//==================================================================================================
}
Function Calls
None |
Stats
MD5 | 8034022257dbb903151858196cabe4a4 |
Eval Count | 0 |
Decode Time | 84 ms |