diff --git a/classen/RegionManager.php b/classen/RegionManager.php index c2dfc98..4abf09b 100644 --- a/classen/RegionManager.php +++ b/classen/RegionManager.php @@ -7,8 +7,8 @@ { global $RUNTIME; - $topRegionStatement = $RUNTIME['PDO']->prepare("SELECT regions.RegionName AS Name, regions.RegionUUID AS UUID, regions.RegionImage AS Image, regions.RegionOwner AS OwnerID, users.UserName AS OwnerName, onlinetimes.RegionLastSeen AS LastSeen, onlinetimes.RegionOnlineUser AS OnlineCount FROM regions INNER JOIN onlinetimes ON regions.RegionUUID = onlinetimes.RegionUUID INNER JOIN users ON regions.RegionOwner = users.UserUUID WHERE onlinetimes.RegionLastSeen > ? ORDER BY OnlineCount DESC LIMIT ".$startRegion.", ".$totalRegionCount); - $topRegionStatement->execute(array(time() - 320)); + $topRegionStatement = $RUNTIME['PDO']->prepare("SELECT regions.RegionName AS Name, regions.RegionUUID AS UUID, regions.RegionImage AS Image, regions.RegionOwner AS OwnerID, users.UserName AS OwnerName, onlinetimes.RegionLastSeen AS LastSeen, onlinetimes.RegionOnlineUser AS OnlineCount, regions.RegionVersion AS RegionVersion, regions.RegionHostname AS Hostname, regions.RegionPort AS Port FROM regions INNER JOIN onlinetimes ON regions.RegionUUID = onlinetimes.RegionUUID INNER JOIN users ON regions.RegionOwner = users.UserUUID WHERE onlinetimes.RegionLastSeen > ? ORDER BY OnlineCount DESC LIMIT ".$startRegion.", ".$totalRegionCount); + $topRegionStatement->execute(array(time() - 900)); while($row = $topRegionStatement->fetch()) { @@ -25,5 +25,21 @@ { return array_shift($this->allRegions); } + + public static function setOnlineTime($uuid) + { + global $RUNTIME; + + $topRegionStatement = $RUNTIME['PDO']->prepare("UPDATE onlinetimes SET RegionLastSeen = ? WHERE RegionUUID = ?"); + $topRegionStatement->execute(array(time(), $uuid)); + } + + public static function removeRegion($uuid) + { + global $RUNTIME; + + $topRegionStatement = $RUNTIME['PDO']->prepare("DELETE FROM regions WHERE RegionUUID = ?"); + $topRegionStatement->execute(array($uuid)); + } } ?> \ No newline at end of file diff --git a/classen/utils.php b/classen/utils.php index 22f3351..475436e 100644 --- a/classen/utils.php +++ b/classen/utils.php @@ -19,6 +19,18 @@ function right($str, $length) return substr($str, -$length); } +function ping($host, $port) +{ + $waitTimeoutInSeconds = 2; + if($fp = @fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)) + { + fclose($fp); + return true; + } + + return false; +} + function getDataFromHTTP($URL, $contend = "", $requestTyp = "application/text") { try @@ -40,13 +52,45 @@ function sendInworldIM($fromUUID, $toUUID, $fromName, $targetURL, $text) getDataFromHTTP($targetURL, $rawXML, "text/xml"); } +function getAssetServerURI($homeURL, $userID) +{ + $xml = 'get_server_urlsuserID'.$userID.''; + $optionen = stream_context_create(array('http' => array('timeout' => 1, 'method' => 'POST', 'header' => 'Content-Type: application/xml', 'content' => $xml))); + $result = file_get_contents($homeURL, false, $optionen); + + $servers = new SimpleXMLElement($result); + + foreach ($servers->params->param->value->struct[0] as $serverEntry) + { + if($serverEntry->name == 'SRV_AssetServerURI') + return $serverEntry->value->string->__toString(); + } +} + +function getAssetImage($assetServer, $assetUUID) +{ + global $DATA; + chdir("/var/www/html"); + + if(!is_file('./data/RegionImages/'.$assetUUID.'.png')) + { + $DATA['WGETCMD'] = '/usr/bin/wget '.$assetServer.'assets/'.$assetUUID.'/data -O /tmp/'.$assetUUID; + $DATA['MPEGCMD'] = '/usr/bin/ffmpeg -i /tmp/'.$assetUUID.' ./data/RegionImages/'.$assetUUID.'.png'; + + $DATA['WGET'] = shell_exec($DATA['WGETCMD']); + $DATA['FFMPEG'] = shell_exec($DATA['MPEGCMD']); + } + + return $assetUUID.'.png'; +} + function getTopRegionHTML($row) { if(!file_exists("./data/RegionImages/".$row['Image'])) $row['Image'] = "notFound.jpg"; if(!isset($row['Description'])) - $row['Description'] = "(Es wurde noch keine Beschreibung Hinterlegt.)"; + $row['Description'] = "(Es wurde noch keine Beschreibung hinterlegt.)"; return ''; @@ -58,7 +102,7 @@ function getRegionHTML($row) $row['Image'] = "notFound.jpg"; if(!isset($row['Description'])) - $row['Description'] = "(Es wurde noch keine Beschreibung Hinterlegt.)"; + $row['Description'] = "(Es wurde noch keine Beschreibung hinterlegt.)"; return '
Region Image '.substr($row['Name'], 0, 50).'

'.substr($row['Name'], 0, 50).'

Online: '.$row['OnlineCount'].'

'.substr($row['Description'], 0, 300).'

'; diff --git a/cron/01-check_region.php b/cron/01-check_region.php new file mode 100644 index 0000000..5c3c24d --- /dev/null +++ b/cron/01-check_region.php @@ -0,0 +1,16 @@ +prepare("SELECT regions.RegionName AS Name, regions.RegionUUID AS UUID, regions.RegionImage AS Image, regions.RegionOwner AS OwnerID, users.UserName AS OwnerName, onlinetimes.RegionLastSeen AS LastSeen, onlinetimes.RegionOnlineUser AS OnlineCount, regions.RegionVersion AS RegionVersion, regions.RegionHostname AS Hostname, regions.RegionPort AS Port FROM regions INNER JOIN onlinetimes ON regions.RegionUUID = onlinetimes.RegionUUID INNER JOIN users ON regions.RegionOwner = users.UserUUID WHERE onlinetimes.RegionLastSeen < ? ORDER BY LastSeen ASC"); + $topRegionStatement->execute(array(time() - 600)); + + while($row = $topRegionStatement->fetch()) + { + if(ping($row['Hostname'], $row['Port'])) + { + RegionManager::setOnlineTime($row['UUID']); + continue; + } + + RegionManager::removeRegion($row['UUID']); + } + +?> \ No newline at end of file diff --git a/cron/02-add_region.php b/cron/02-add_region.php new file mode 100644 index 0000000..21f0e52 --- /dev/null +++ b/cron/02-add_region.php @@ -0,0 +1,10 @@ +prepare("SELECT QueueData FROM queue WHERE QueueType = 'DownloadImage'"); + $imageDownloadStatement->execute(array()); + + while($row = $imageDownloadStatement->fetch()) + { + print_r(json_decode($row['QueueData'])); + } + +?> \ No newline at end of file diff --git a/cron/03-download_images.php b/cron/03-download_images.php new file mode 100644 index 0000000..5c3c24d --- /dev/null +++ b/cron/03-download_images.php @@ -0,0 +1,16 @@ +prepare("SELECT regions.RegionName AS Name, regions.RegionUUID AS UUID, regions.RegionImage AS Image, regions.RegionOwner AS OwnerID, users.UserName AS OwnerName, onlinetimes.RegionLastSeen AS LastSeen, onlinetimes.RegionOnlineUser AS OnlineCount, regions.RegionVersion AS RegionVersion, regions.RegionHostname AS Hostname, regions.RegionPort AS Port FROM regions INNER JOIN onlinetimes ON regions.RegionUUID = onlinetimes.RegionUUID INNER JOIN users ON regions.RegionOwner = users.UserUUID WHERE onlinetimes.RegionLastSeen < ? ORDER BY LastSeen ASC"); + $topRegionStatement->execute(array(time() - 600)); + + while($row = $topRegionStatement->fetch()) + { + if(ping($row['Hostname'], $row['Port'])) + { + RegionManager::setOnlineTime($row['UUID']); + continue; + } + + RegionManager::removeRegion($row['UUID']); + } + +?> \ No newline at end of file diff --git a/cron/04-object_indexer.php b/cron/04-object_indexer.php new file mode 100644 index 0000000..e69de29 diff --git a/cron/05-send_messages.php b/cron/05-send_messages.php new file mode 100644 index 0000000..e69de29 diff --git a/crone.php b/crone.php index 2d4fa82..12208e6 100644 --- a/crone.php +++ b/crone.php @@ -7,11 +7,9 @@ include_once("classen/HTML.php"); include_once("classen/RegionManager.php"); $RUNTIME = array(); -$RUNTIME['OPENSIM'] = new OpenSim(); include_once("config.php"); - if ($handle = opendir('./cron/')) { while (false !== ($entry = readdir($handle))) diff --git a/pages/error.php b/pages/error.php index 4be48ad..94b2260 100644 --- a/pages/error.php +++ b/pages/error.php @@ -1,3 +1,9 @@ setHTMLTitle("Seite nicht gefunden."); + $HTML->importHTML("style/default/404.html"); + $HTML->build(); + echo $HTML->ausgabe(); ?> \ No newline at end of file diff --git a/pages/faq.php b/pages/faq.php new file mode 100644 index 0000000..a58b173 --- /dev/null +++ b/pages/faq.php @@ -0,0 +1,8 @@ +setHTMLTitle("Übersicht"); + $HTML->importHTML("style/default/faq.html"); + + $HTML->build(); + echo $HTML->ausgabe(); +?> \ No newline at end of file diff --git a/style/default/404.html b/style/default/404.html new file mode 100644 index 0000000..0b2a8e0 --- /dev/null +++ b/style/default/404.html @@ -0,0 +1,72 @@ + + + + OpenSimulator Land - %%EchoTitle%% + + + + + + + + + + + +
+ +
+
+
+

Diese Seite wurde nicht gefunden!

+
+
+
+ + + +
+ + + + + + + + + + + + + diff --git a/style/default/faq.html b/style/default/faq.html new file mode 100644 index 0000000..b7235b8 --- /dev/null +++ b/style/default/faq.html @@ -0,0 +1,100 @@ + + + + OpenSimulator Land - %%EchoTitle%% + + + + + + + + + + + +
+ +
+
+
+

FAQ


+ +

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel sed vehicula.

+

Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

+ +
+ +

Welche Regionen werden hier gelistet?

+

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel sed vehicula. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

+ +
+ +

Wie kann ich meine Region hinzufügen?

+

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel sed vehicula. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

+ +
+ +

Wie kann ich Objekte zur Suche hinzufügen?

+

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel sed vehicula. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

+ +
+ +

Kann ich die Suchfunktion für mein Grid benutzen?

+

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel sed vehicula. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

+
+
+
+ + + +
+ + + + + + + + + + + + +