2013-10-31 01:57:36 +01:00
< ? php
// Copyright (C) 2012 Mark Vejvoda, Titus Tscharntke and Tom Reynolds
// The Megaglest Team, under GNU GPL v3.0
// ==============================================================
define ( 'INCLUSION_PERMITTED' , true );
require_once ( 'config.php' );
require_once ( 'functions.php' );
// Consider using HTTP POST instead of HTTP GET here, data should always be sent via POST for privacy and security reasons
// Alternatively, do not retrieve (and transmit) this data at all via HTTP (other than the IP address the game servers advertises) but fetch it from the game server instead
// consider replacing this by a cron job
// cleanupServerList();
// Representation starts here (but it should really be starting much later, there is way too much logic behind this point)
header ( 'Content-Type: text/plain; charset=utf-8' );
//echo '#0 ' . $_GET['gameUUID'];
if ( isset ( $_GET [ 'gameUUID' ] ) ) {
define ( 'DB_LINK' , db_connect () );
$gameUUID = ( string ) clean_str ( $_GET [ 'gameUUID' ] );
2013-10-31 05:25:08 +01:00
$whereClause = 'gameUUID=\'' . mysql_real_escape_string ( $gameUUID ) . '\'' ;
2013-10-31 01:57:36 +01:00
2013-11-01 18:53:26 +01:00
$gameDuration = 0 ;
$framesToCalculatePlaytime = 0 ;
if ( isset ( $_GET [ 'framesToCalculatePlaytime' ] ) ) {
$framesToCalculatePlaytime = ( string ) clean_str ( $_GET [ 'framesToCalculatePlaytime' ] );
$gameDuration = $framesToCalculatePlaytime / 40 / 60 ;
}
if ( $gameDuration < MAX_MINS_OLD_COMPLETED_GAMES )
{
$game_completed = @ mysql_query ( 'SELECT COUNT(*) FROM glestserver WHERE ' . $whereClause . ' AND status=3;' );
$game_completed_status = @ mysql_fetch_row ( $game_completed );
2013-11-01 22:31:55 +01:00
if ( $game_completed_status [ 0 ] > 0 )
2013-11-01 18:53:26 +01:00
{
mysql_query ( 'DELETE FROM glestserver WHERE ' . $whereClause . ';' );
mysql_query ( 'DELETE FROM glestgamestats WHERE ' . $whereClause . ';' );
mysql_query ( 'DELETE FROM glestgameplayerstats WHERE ' . $whereClause . ';' );
2013-11-01 22:31:55 +01:00
echo 'OK - ' . $gameDuration ;
2013-11-01 18:53:26 +01:00
return ;
}
}
2013-10-31 05:25:08 +01:00
$stats_in_db = @ mysql_query ( 'SELECT COUNT(*) FROM glestgamestats WHERE ' . $whereClause . ';' );
2013-10-31 01:57:36 +01:00
$statsCount = @ mysql_fetch_row ( $stats_in_db );
2013-10-31 05:25:08 +01:00
$player_stats_in_db = @ mysql_query ( 'SELECT COUNT(*) FROM glestgameplayerstats WHERE ' . $whereClause . ';' );
2013-10-31 01:57:36 +01:00
$player_statsCount = @ mysql_fetch_row ( $player_stats_in_db );
$gameUUID = ( string ) clean_str ( $_GET [ 'gameUUID' ] );
$tech = ( string ) clean_str ( $_GET [ 'tech' ] );
$factionCount = 0 ;
if ( isset ( $_GET [ 'factionCount' ] ) ) {
$factionCount = ( string ) clean_str ( $_GET [ 'factionCount' ] );
}
$framesPlayed = 0 ;
if ( isset ( $_GET [ 'framesPlayed' ] ) ) {
$framesPlayed = ( string ) clean_str ( $_GET [ 'framesPlayed' ] );
}
$maxConcurrentUnitCount = 0 ;
if ( isset ( $_GET [ 'maxConcurrentUnitCount' ] ) ) {
$maxConcurrentUnitCount = ( string ) clean_str ( $_GET [ 'maxConcurrentUnitCount' ] );
}
$totalEndGameConcurrentUnitCount = 0 ;
if ( isset ( $_GET [ 'totalEndGameConcurrentUnitCount' ] ) ) {
$totalEndGameConcurrentUnitCount = ( string ) clean_str ( $_GET [ 'totalEndGameConcurrentUnitCount' ] );
}
$isHeadlessServer = 0 ;
if ( isset ( $_GET [ 'isHeadlessServer' ] ) ) {
$isHeadlessServer = ( string ) clean_str ( $_GET [ 'isHeadlessServer' ] );
}
//echo '#1 ' . $whereClause;
//echo '#2 ' . $statsCount[0];
if ( $statsCount [ 0 ] > 0 ) // this game is contained in the database
{
// update database info on this game server; no checks are performed
$result = mysql_query ( 'UPDATE glestgamestats SET ' .
'gameUUID=\'' . mysql_real_escape_string ( $gameUUID ) . '\', ' .
'tech=\'' . mysql_real_escape_string ( $tech ) . '\', ' .
'factionCount=\'' . mysql_real_escape_string ( $factionCount ) . '\', ' .
'framesPlayed=\'' . mysql_real_escape_string ( $framesPlayed ) . '\', ' .
'framesToCalculatePlaytime=\'' . mysql_real_escape_string ( $framesToCalculatePlaytime ) . '\', ' .
'maxConcurrentUnitCount=\'' . mysql_real_escape_string ( $maxConcurrentUnitCount ) . '\', ' .
'totalEndGameConcurrentUnitCount=\'' . mysql_real_escape_string ( $totalEndGameConcurrentUnitCount ) . '\', ' .
'isHeadlessServer=\'' . mysql_real_escape_string ( $isHeadlessServer ) . '\', ' .
'lasttime=' . 'now()' . ' ' .
2013-10-31 05:25:08 +01:00
'WHERE ' . $whereClause . ';' );
2013-10-31 01:57:36 +01:00
if ( ! $result ) {
die ( 'part 1a: Invalid query: ' . mysql_error ());
}
echo 'OK1a' ;
}
else // this game server is not listed in the database, yet
{ // check whether this game server is available from the Internet; if it is, add it to the database
// update database info on this game server; no checks are performed
$result = mysql_query ( 'INSERT INTO glestgamestats SET ' .
'gameUUID=\'' . mysql_real_escape_string ( $gameUUID ) . '\', ' .
'tech=\'' . mysql_real_escape_string ( $tech ) . '\', ' .
'factionCount=\'' . mysql_real_escape_string ( $factionCount ) . '\', ' .
'framesPlayed=\'' . mysql_real_escape_string ( $framesPlayed ) . '\', ' .
'framesToCalculatePlaytime=\'' . mysql_real_escape_string ( $framesToCalculatePlaytime ) . '\', ' .
'maxConcurrentUnitCount=\'' . mysql_real_escape_string ( $maxConcurrentUnitCount ) . '\', ' .
'totalEndGameConcurrentUnitCount=\'' . mysql_real_escape_string ( $totalEndGameConcurrentUnitCount ) . '\', ' .
'isHeadlessServer=\'' . mysql_real_escape_string ( $isHeadlessServer ) . '\';' );
if ( ! $result ) {
die ( 'part 2a: Invalid query: ' . mysql_error ());
}
echo 'OK2b' ;
}
for ( $factionNumber = 0 ; $factionNumber < $factionCount ; $factionNumber ++ )
{
// Player details
$factionIndex = 0 ;
if ( isset ( $_GET [ 'factionIndex_' . $factionNumber ] ) ) {
$factionIndex = clean_str ( $_GET [ 'factionIndex_' . $factionNumber ] );
}
$controlType = 0 ;
if ( isset ( $_GET [ 'controlType_' . $factionNumber ] ) ) {
$controlType = clean_str ( $_GET [ 'controlType_' . $factionNumber ] );
}
$resourceMultiplier = 0 ;
if ( isset ( $_GET [ 'resourceMultiplier_' . $factionNumber ] ) ) {
$resourceMultiplier = clean_str ( $_GET [ 'resourceMultiplier_' . $factionNumber ] );
}
$factionTypeName = " " ;
if ( isset ( $_GET [ 'factionTypeName_' . $factionNumber ] ) ) {
$factionTypeName = ( string ) clean_str ( $_GET [ 'factionTypeName_' . $factionNumber ] );
}
$personalityType = 0 ;
if ( isset ( $_GET [ 'personalityType_' . $factionNumber ] ) ) {
$personalityType = clean_str ( $_GET [ 'personalityType_' . $factionNumber ] );
}
$teamIndex = 0 ;
if ( isset ( $_GET [ 'teamIndex_' . $factionNumber ] ) ) {
$teamIndex = clean_str ( $_GET [ 'teamIndex_' . $factionNumber ] );
}
$wonGame = 0 ;
if ( isset ( $_GET [ 'wonGame_' . $factionNumber ] ) ) {
$wonGame = clean_str ( $_GET [ 'wonGame_' . $factionNumber ] );
}
$killCount = 0 ;
if ( isset ( $_GET [ 'killCount_' . $factionNumber ] ) ) {
$killCount = clean_str ( $_GET [ 'killCount_' . $factionNumber ] );
}
$enemyKillCount = 0 ;
if ( isset ( $_GET [ 'enemyKillCount_' . $factionNumber ] ) ) {
$enemyKillCount = clean_str ( $_GET [ 'enemyKillCount_' . $factionNumber ] );
}
$deathCount = 0 ;
if ( isset ( $_GET [ 'deathCount_' . $factionNumber ] ) ) {
$deathCount = clean_str ( $_GET [ 'deathCount_' . $factionNumber ] );
}
$unitsProducedCount = 0 ;
if ( isset ( $_GET [ 'unitsProducedCount_' . $factionNumber ] ) ) {
$unitsProducedCount = clean_str ( $_GET [ 'unitsProducedCount_' . $factionNumber ] );
}
$resourceHarvestedCount = 0 ;
if ( isset ( $_GET [ 'resourceHarvestedCount_' . $factionNumber ] ) ) {
$resourceHarvestedCount = clean_str ( $_GET [ 'resourceHarvestedCount_' . $factionNumber ] );
}
$playerName = " " ;
if ( isset ( $_GET [ 'playerName_' . $factionNumber ] ) ) {
$playerName = ( string ) clean_str ( $_GET [ 'playerName_' . $factionNumber ] );
}
$quitBeforeGameEnd = 0 ;
if ( isset ( $_GET [ 'quitBeforeGameEnd_' . $factionNumber ] ) ) {
$quitBeforeGameEnd = clean_str ( $_GET [ 'quitBeforeGameEnd_' . $factionNumber ] );
}
$quitTime = 0 ;
if ( isset ( $_GET [ 'quitTime_' . $factionNumber ] ) ) {
2013-11-03 00:38:19 +01:00
$quitTime = clean_str ( $_GET [ 'quitTime_' . $factionNumber ] );
2013-10-31 01:57:36 +01:00
}
2013-11-01 22:31:55 +01:00
$playerUUID = " " ;
if ( isset ( $_GET [ 'playerUUID_' . $factionNumber ] ) ) {
$playerUUID = ( string ) clean_str ( $_GET [ 'playerUUID_' . $factionNumber ] );
}
2013-11-02 20:05:59 +01:00
$playerPlatform = " " ;
if ( isset ( $_GET [ 'platform_' . $factionNumber ] ) ) {
$playerPlatform = ( string ) clean_str ( $_GET [ 'platform_' . $factionNumber ] );
}
2013-10-31 01:57:36 +01:00
if ( $player_statsCount [ 0 ] > 0 )
{
$result = mysql_query ( 'UPDATE glestgameplayerstats SET ' .
'gameUUID=\'' . mysql_real_escape_string ( $gameUUID ) . '\', ' .
'factionIndex=' . $factionIndex . ', ' .
'controlType=' . $controlType . ', ' .
'resourceMultiplier=' . $resourceMultiplier . ', ' .
'factionTypeName=\'' . mysql_real_escape_string ( $factionTypeName ) . '\', ' .
'personalityType=' . $personalityType . ', ' .
'teamIndex=' . $teamIndex . ', ' .
'wonGame=' . $wonGame . ', ' .
'killCount=' . $killCount . ', ' .
'enemyKillCount=' . $enemyKillCount . ', ' .
'deathCount=' . $deathCount . ', ' .
'unitsProducedCount=' . $unitsProducedCount . ', ' .
'resourceHarvestedCount=' . $resourceHarvestedCount . ', ' .
'playerName=\'' . mysql_real_escape_string ( $playerName ) . '\', ' .
'quitBeforeGameEnd=' . $quitBeforeGameEnd . ', ' .
'quitTime=' . $quitTime . ', ' .
2013-11-01 22:31:55 +01:00
'playerUUID=\'' . mysql_real_escape_string ( $playerUUID ) . '\', ' .
2013-11-02 20:05:59 +01:00
'platform=\'' . mysql_real_escape_string ( $playerPlatform ) . '\', ' .
2013-10-31 01:57:36 +01:00
'lasttime=' . 'now()' . ' ' .
2013-10-31 05:25:08 +01:00
'WHERE ' . $whereClause . ' AND factionIndex = ' . $factionIndex . ';' );
2013-10-31 01:57:36 +01:00
if ( ! $result ) {
die ( 'part 1b: Invalid query: ' . mysql_error ());
}
//echo 'OK1 $factionNumber = ' . $factionNumber;
echo 'OK1b' . $factionNumber ;
}
else
{
$result = mysql_query ( 'INSERT INTO glestgameplayerstats SET ' .
'gameUUID=\'' . mysql_real_escape_string ( $gameUUID ) . '\', ' .
'factionIndex=' . $factionIndex . ', ' .
'controlType=' . $controlType . ', ' .
'resourceMultiplier=' . $resourceMultiplier . ', ' .
'factionTypeName=\'' . mysql_real_escape_string ( $factionTypeName ) . '\', ' .
'personalityType=' . $personalityType . ', ' .
'teamIndex=' . $teamIndex . ', ' .
'wonGame=' . $wonGame . ', ' .
'killCount=' . $killCount . ', ' .
'enemyKillCount=' . $enemyKillCount . ', ' .
'deathCount=' . $deathCount . ', ' .
'unitsProducedCount=' . $unitsProducedCount . ', ' .
'resourceHarvestedCount=' . $resourceHarvestedCount . ', ' .
'playerName=\'' . mysql_real_escape_string ( $playerName ) . '\', ' .
'quitBeforeGameEnd=' . $quitBeforeGameEnd . ', ' .
2013-11-01 22:31:55 +01:00
'quitTime=' . $quitTime . ', ' .
2013-11-02 20:05:59 +01:00
'platform=\'' . mysql_real_escape_string ( $playerPlatform ) . '\', ' .
2013-11-01 22:31:55 +01:00
'playerUUID=\'' . mysql_real_escape_string ( $playerUUID ) . '\';' );
2013-10-31 01:57:36 +01:00
if ( ! $result ) {
die ( 'part 2b: Invalid query: ' . mysql_error ());
}
//echo 'OK2 $factionNumber = ' . $factionNumber;
echo 'OK2b' . $factionNumber ;
}
}
db_disconnect ( DB_LINK );
}
?>