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

Variables

None

Stats

MD5 8034022257dbb903151858196cabe4a4
Eval Count 0
Decode Time 84 ms