} catch (Exception $ex) { http_response_code("500"); LogToFile("Failed to connect to database. See log for details.", $ex->getMessage()); die; } $servers = $db->GetServers(); foreach ($servers as $server) { if (!$server['enabled']) { continue; } $serverResponse = @file_get_contents($server['address'] . "/population"); if ($serverResponse === false) { // TODO: GHETTO. if (strstr($http_response_header[0], "404 Not Found")) { $db->SetServerStatus($server['uuid'], false); LogToFile("Server '" . $server['name'] . "' returned status 404. Disabling server"); } else { LogToFile("Failed to query server '" . $server['name'] . "' at: " . $server['address'] . ""); } continue; } try { $agentCountHistory = UnpackAgentData($serverResponse); } catch (Exception $ex) { LogToFile("Server '" . $server['name'] . "' sent bad data: " . $serverResponse . ""); } foreach ($agentCountHistory as $historyItem) { $db->CreateStats($server['id'], $historyItem['Date'], $historyItem['Count']); echo date(DateTime::RFC1036, $historyItem["Date"]) . " Server '" . $server['name'] . "' population = " . $historyItem['Count'] . "\r\n"; } }
function CheckHash($Dictionary = array(), $HashAlgo, $Hash, $LogFile = false) { if ($LogFile) { LogToFile(Log_Start($Hash), $LogFile); } foreach ($Dictionary as $Value) { if ($LogFile) { LogToFile(Log_Dictionary($Value), $LogFile); } $Count = 0; $NrPasswords = 0; print_r("\n-----------------------------------------------------------------------------\n\t\tUsing {$Value} as dictionary\n-----------------------------------------------------------------------------\r\n"); $NrPasswords = CountLines($Value); $Count = 1; $Dict = fopen($Value, "rb"); while (!feof($Dict)) { $Password = fgets($Dict); $Password = str_replace(array("\r", "\n"), '', $Password); if (($Result = hash($HashAlgo, $Password)) === $Hash) { show_status($NrPasswords, $NrPasswords); // Finish the progressbar if ($LogFile) { LogToFile(Log_End("[+] MATCH FOUND! for " . $Hash . " -> " . $Password), $LogFile); } return array($Result, $Password); } show_status($Count, $NrPasswords); // Show a progress bar for each password -> dictionary is empty. $Count++; } fclose($Dict); } return false; }
LogToFile("No queryUrl sent"); die; } $queryUrl = $_GET["queryUrl"]; $slHeader = new SecondlifeHeader($_SERVER); try { $db = new SimStatsDatabase(); $db->ConnectToDatabase(); } catch (Exception $ex) { http_response_code("500"); LogToFile("Failed to connect to database. See log for details.", $ex->getMessage()); die; } try { $shardId = $db->GetOrCreateShardId($slHeader->shard); $ownerId = $db->GetOrCreateUserId($slHeader->ownerKey, $slHeader->ownerName, $shardId); $db->CreateOrUpdateServer($slHeader->objectName, $shardId, $ownerId, $queryUrl, $slHeader->objectKey); } catch (Exception $ex) { http_response_code("500"); LogToFile("Failed to register server. See log for details.", $ex->getMessage()); die; } echo "OK"; LogToFile("New or updated query server."); LogToFile(" shard = " . $slHeader->shard . " [id = " . $shardId . "]"); LogToFile(" region = " . $slHeader->region); LogToFile(" name = " . $slHeader->objectName); LogToFile(" owner = " . $slHeader->ownerName . " (" . $slHeader->ownerKey . ")"); LogToFile(" url = " . $queryUrl); LogToFile("");
LogToFile('Отсутствует подпись', $moduleName); exit; } $signature = $_REQUEST['Signature']; // проверка наличия параметра Статуса операции if (!isset($_REQUEST['Status'])) { LogToFile('Отсутствует статус оплаты', $moduleName); exit; } $status0 = $_REQUEST['Status']; LogToFile('Статус оплаты заказа ' . $status0, $moduleName); // $status0 может быть // authorized - средства успешно заблокированы (выполнена авторизационная // транзакция) // not authorized - средства не заблокированы (авторизационная транзакция не // выполнена) по ряду причин // paid - оплачен (выполнена финансовая транзакция или заказ оплачен в // электронной платёжной системе) // canceled - отменён (выполнена транзакция разблокировки средств или выполнена // операция по возврату платежа после списания средств) // waiting - ожидается оплата выставленного счёта. Статус используется только // для оплат электронными валютами, при которых процесс оплаты может содержать // этап выставления черех систему Uniteller счёта на оплату и этап фактической // оплаты этого счета покупателем, которые существенно разнесены по времени // проверка достоверности подписи if (!Uniteller::IsSignatureCorrect($order_id, $status0, $signature)) { LogToFile('Подпись неверна', $moduleName); exit; } Uniteller::OrderPaymentCallback($order_id); exit;
<?php include_once dirname(__FILE__) . "/../lib/SimStatsDatabase.php"; include_once dirname(__FILE__) . "/../lib/Utils.php"; if (!isset($_GET['serverId'])) { die("Missing serverId"); } $uuid = $_GET['serverId']; try { $db = new SimStatsDatabase(); $db->ConnectToDatabase(); } catch (Exception $ex) { http_response_code("500"); LogAndEchoJson("Failed to connect to database. See log for details.", $ex->getMessage()); die; } $mapUrl = $db->GetServerAddress($uuid); if ($mapUrl == null || $mapUrl == "") { LogToFile("Failed to get map address. Try again."); echo "null"; return; } $contents = @file_get_contents($mapUrl . "/agents"); if ($contents == "") { LogToFile("Failed to contact map server. Try again."); echo "null"; return; } // TEMP: Replace 'Players' with 'data' echo substr_replace($contents, "data", 2, 7);
function LogAndEcho($message, $messagePrivate = null) { echo $message . "\r\n"; LogToFile($message, $messagePrivate); }