1
0
Fork 0

add add Region

This commit is contained in:
Christopher 2021-11-01 08:12:10 +01:00
parent 312a481b55
commit a43554a753
4 changed files with 95 additions and 9 deletions

View File

@ -30,16 +30,19 @@
{
global $RUNTIME;
$topRegionStatement = $RUNTIME['PDO']->prepare("UPDATE onlinetimes SET RegionLastSeen = ? WHERE RegionUUID = ?");
$topRegionStatement->execute(array(time(), $uuid));
$setOnlineTimeStatement = $RUNTIME['PDO']->prepare("UPDATE onlinetimes SET RegionLastSeen = ? WHERE RegionUUID = ?");
$setOnlineTimeStatement->execute(array(time(), $uuid));
}
public static function removeRegion($uuid)
{
global $RUNTIME;
$topRegionStatement = $RUNTIME['PDO']->prepare("DELETE FROM regions WHERE RegionUUID = ?");
$topRegionStatement->execute(array($uuid));
$removeRegionStatement = $RUNTIME['PDO']->prepare("DELETE FROM regions WHERE RegionUUID = ?");
$removeRegionStatement->execute(array($uuid));
$removeRegionStatement = $RUNTIME['PDO']->prepare("DELETE FROM onlinetimes WHERE RegionUUID = ?");
$removeRegionStatement->execute(array($uuid));
}
}
?>

View File

@ -19,6 +19,20 @@ function right($str, $length)
return substr($str, -$length);
}
function guidv4($data = null) {
// Generate 16 bytes (128 bits) of random data or use the data passed into the function.
$data = $data ?? random_bytes(16);
assert(strlen($data) == 16);
// Set version to 0100
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
// Set bits 6-7 to 10
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
// Output the 36 character UUID.
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
function ping($host, $port)
{
$waitTimeoutInSeconds = 2;
@ -84,8 +98,24 @@ function getAssetImage($assetServer, $assetUUID)
return $assetUUID.'.png';
}
function getRegionStats($regionHostName)
{
$optionen = stream_context_create(array('http' => array('timeout' => 1)));
$result = file_get_contents("http://".$regionHostName."/jsonSimStats", false, $optionen);
if($result != "")
{
return json_decode($result);
}
return false;
}
function getTopRegionHTML($row)
{
if(!isset($row['Image']))
return;
if(!file_exists("./data/RegionImages/".$row['Image']))
$row['Image'] = "notFound.jpg";

View File

@ -1,10 +1,63 @@
<?php
$imageDownloadStatement = $RUNTIME['PDO']->prepare("SELECT QueueData FROM queue WHERE QueueType = 'DownloadImage'");
$imageDownloadStatement->execute(array());
$QueueStatement = $RUNTIME['PDO']->prepare("SELECT * FROM queue WHERE QueueType = 'addRegion'");
$QueueStatement->execute(array());
while($row = $imageDownloadStatement->fetch())
while($row = $QueueStatement->fetch())
{
print_r(json_decode($row['QueueData']));
$queueData = json_decode($row['QueueData']);
$REGIONDATA = array();
if(ping($queueData->Hostname, $queueData->Port))
{
$stats = getRegionStats($queueData->Hostname.":".$queueData->Port);
if($stats != false)
{
if($stats->RegionName != $queueData->RegionName)
break;
if(!isset($stats->RootAg))
break;
if(!isset($stats->Version))
break;
$REGIONDATA['Avatare'] = $stats->RootAg;
$REGIONDATA['Version'] = trim(substr(str_replace(" ", "", $stats->Version), 0, 16));
$REGIONDATA['MAP'] = "http://".$queueData->Hostname.":".$queueData->Port."/index.php?method=regionImage".trim(str_replace("-", "", $queueData->UUID));
if(isset($queueData->Image))
$REGIONDATA['Image'] = $queueData->Image;
if(!isset($queueData->Image))
$REGIONDATA['Image'] = guidv4();
if(isset($stats->RootAg) && isset($stats->NPCAg))
$REGIONDATA['Avatare'] = $stats->RootAg - $stats->NPCAg;
$QueueStatement = $RUNTIME['PDO']->prepare("REPLACE INTO onlinetimes VALUES (?, ?, ?)");
$QueueStatement->execute(array($queueData->UUID, time(), $REGIONDATA['Avatare']));
$QueueStatement = $RUNTIME['PDO']->prepare("REPLACE INTO regions VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$QueueStatement->execute(array($queueData->RegionName, $queueData->UUID, $queueData->GridName, $REGIONDATA['Image'], "00000000-0000-0000-0000-000000000000", $queueData->Hostname, $queueData->Port, $REGIONDATA['Version']));
if(isset($queueData->Image))
{
$QueueStatement = $RUNTIME['PDO']->prepare("INSERT INTO queue VALUES (?, ?, ?)");
$QueueStatement->execute(array(guidv4(), "assetImageDownload", json_encode(array("RegionUUID" => $queueData->UUID, "HomeURL" => @$queueData->Image, "TargetAssetUUID" => $queueData->Image))));
}
if(!isset($queueData->Image))
{
$QueueStatement = $RUNTIME['PDO']->prepare("INSERT INTO queue VALUES (?, ?, ?)");
$QueueStatement->execute(array(guidv4(), "regionImageDownload", json_encode(array("RegionUUID" => $queueData->UUID, "URL" => $REGIONDATA['MAP'], "TargetAssetUUID" => $REGIONDATA['Image']))));
}
}
}
$removeQueueStatement = $RUNTIME['PDO']->prepare("DELETE FROM queue WHERE QueueID = ?");
$removeQueueStatement->execute(array($row['QueueID']));
}
?>

View File

@ -10,7 +10,7 @@
while($region = $RegionManager->getNextRegion())
@$RUNTIME['RegionList'] .= getRegionHTML($region);
$HTML->ReplaceLayoutInhalt("%%RegionList%%", $RUNTIME['RegionList']);
$HTML->ReplaceLayoutInhalt("%%RegionList%%", @$RUNTIME['RegionList']);
$HTML->build();