From 686e99126604d6dccc22cb9b2a2795d72ae8f8e3 Mon Sep 17 00:00:00 2001 From: Anonymous Contributor Date: Tue, 5 Sep 2023 01:09:01 +0200 Subject: [PATCH] Adapt existing classes to new structure and PSR-12 --- app/FormValidator.php | 4 + app/OpenSim.php | 498 ++++++++++------------ app/{discord.php => util/DiscordUtil.php} | 9 +- app/util/SmtpClient.php | 62 +++ app/util/Util.php | 59 +++ app/utils.php | 101 ----- 6 files changed, 363 insertions(+), 370 deletions(-) rename app/{discord.php => util/DiscordUtil.php} (78%) create mode 100644 app/util/SmtpClient.php create mode 100644 app/util/Util.php delete mode 100644 app/utils.php diff --git a/app/FormValidator.php b/app/FormValidator.php index 00745ee..78a9c3c 100644 --- a/app/FormValidator.php +++ b/app/FormValidator.php @@ -1,4 +1,8 @@ pdo = $pdo; + } - $nameParts = explode(" ", trim($name)); - if(count($nameParts) != 2) { - return false; - } + private function getUserNameFromGridData($userID, $table, $row): ?string + { + $statementGridUser = $this->pdo->prepare('SELECT '.$row.' FROM '.$table.' WHERE '.$row.' LIKE ?'); + $statementGridUser->execute(array($userID.';%')); - $statementUser = $RUNTIME['PDO']->prepare("SELECT PrincipalID FROM UserAccounts WHERE FirstName = ? AND LastName = ? LIMIT 1"); - $statementUser->execute($nameParts); + while ($rowGridUser = $statementGridUser->fetch()) { + $userData = explode(";", $rowGridUser[$row]); - while($rowUser = $statementUser->fetch()) { - $statementAuth = $RUNTIME['PDO']->prepare("SELECT passwordHash,passwordSalt FROM auth WHERE UUID = ? LIMIT 1"); - $statementAuth->execute(array($rowUser['PrincipalID'])); + if (count($userData) >= 3) { + $dbUserID = $userData[0]; + $dbUserName = $userData[2]; - if ($rowAuth = $statementAuth->fetch()) { - return md5(md5($_POST['password']).":".$rowAuth['passwordSalt']) == $rowAuth['passwordHash']; + $this->cache['USERNAME'][$userID] = $dbUserName; + + if ($dbUserID == $userID) { + return $dbUserName; } } - - return false; } - public function getUserName($userID) - { - global $RUNTIME; - - if ($userID == "00000000-0000-0000-0000-000000000000") { - return "Unknown User"; - } - - if (isset($RUNTIME['CACHE']['USERNAME'][$userID])) { - return $RUNTIME['CACHE']['USERNAME'][$userID]; - } - - $statementUser = $RUNTIME['PDO']->prepare("SELECT FirstName,LastName FROM UserAccounts WHERE PrincipalID = ?"); - $statementUser->execute(array($userID)); - - if ($rowUser = $statementUser->fetch()) { - $RUNTIME['CACHE']['USERNAME'][$userID] = $rowUser['FirstName']." ".$rowUser['LastName']; - return $rowUser['FirstName']." ".$rowUser['LastName']; - } - - $statementGridUser = $RUNTIME['PDO']->prepare("SELECT UserID FROM GridUser"); - $statementGridUser->execute(); - - while ($rowGridUser = $statementGridUser->fetch()) { - $userData = explode(";", $rowGridUser['UserID']); - - if (count($userData) >= 3) { - $dbUserID = $userData[0]; - $dbUserName = $userData[2]; - - $RUNTIME['CACHE']['USERNAME'][$userID] = $dbUserName; - - if ($dbUserID == $userID) { - return $dbUserName; - } - } - } - - $statementFriends = $RUNTIME['PDO']->prepare("SELECT PrincipalID FROM Friends"); - $statementFriends->execute(); - - while ($rowFriends = $statementFriends->fetch()) { - $userData = explode(";", $rowFriends['PrincipalID']); - - if (count($userData) == 4) { - $dbUserID = $userData[0]; - $dbUserName = $userData[2]; - - $RUNTIME['CACHE']['USERNAME'][$userID] = $dbUserName; - - if ($dbUserID == $userID) { - return $dbUserName; - } - } - } + return null; + } + public function getUserName($userID): string + { + if ($userID == "00000000-0000-0000-0000-000000000000") { return "Unknown User"; } - public function getUserUUID($userName) - { - global $RUNTIME; - - $statementUser = $RUNTIME['PDO']->prepare("SELECT PrincipalID,FirstName,LastName FROM UserAccounts"); - $statementUser->execute(); - - while ($rowUser = $statementUser->fetch()) { - $sqlUserName = $rowUser['FirstName']." ".$rowUser['LastName']; - - if ($sqlUserName == $userName) { - return $rowUser['PrincipalID']; - } - } - - return null; + if (isset($this->cache['USERNAME'][$userID])) { + return $this->cache['USERNAME'][$userID]; } - public function getRegionName($regionID) - { - global $RUNTIME; - - $statementRegion = $RUNTIME['PDO']->prepare("SELECT regionName FROM regions WHERE uuid = ?"); - $statementRegion->execute(array($regionID)); + $statementUser = $this->pdo->prepare('SELECT FirstName,LastName FROM UserAccounts WHERE PrincipalID = ?'); + $statementUser->execute(array($userID)); - if ($rowRegion = $statementRegion->fetch()) { - return $rowRegion['regionName']; - } - - return "Unknown Region"; + if ($rowUser = $statementUser->fetch()) { + $this->cache['USERNAME'][$userID] = $rowUser['FirstName'].' '.$rowUser['LastName']; + return $this->cache['USERNAME'][$userID]; } - public function getPartner($userID) - { - global $RUNTIME; - - $statement = $RUNTIME['PDO']->prepare("SELECT profilePartner FROM userprofile WHERE useruuid = ?"); - $statement->execute(array($userID)); - - while ($row = $statement->fetch()) { - if ($row['profilePartner'] != "00000000-0000-0000-0000-000000000000") { - return $row['profilePartner']; - } - } - - return null; + $res = $this->getUserNameFromGridData($this->pdo, $userID, 'GridUser', 'UserID'); + if ($res == null) { + $res = $this->getUserNameFromGridData($this->pdo, $userID, 'Friends', 'PrincipalID'); } - public function allowOfflineIM($userID) - { - global $RUNTIME; - - $statement = $RUNTIME['PDO']->prepare("SELECT imviaemail FROM usersettings WHERE useruuid = ?"); - $statement->execute(array($userID)); + return $res == null ? "Unknown User" : $res; + } - if ($row = $statement->fetch()) { - return strtoupper($row['imviaemail']); - } + public function getUserUUID($userName): ?string + { + $statementUser = $this->pdo->prepare('SELECT PrincipalID,FirstName,LastName FROM UserAccounts WHERE FirstName = ? AND LastName = ?'); + $statementUser->execute(explode(' ', $userName)); - return "FALSE"; + if ($rowUser = $statementUser->fetch()) { + return $rowUser['PrincipalID']; } - public function getUserMail($userID) - { - global $RUNTIME; - - $statement = $RUNTIME['PDO']->prepare("SELECT Email FROM UserAccounts WHERE PrincipalID = ?"); - $statement->execute(array($userID)); + return null; + } - if ($row = $statement->fetch()) { - return $row['Email']; - } + public function getRegionName($regionID): string + { + $statementRegion = $this->pdo->prepare("SELECT regionName FROM regions WHERE uuid = ?"); + $statementRegion->execute(array($regionID)); - return ""; + if ($rowRegion = $statementRegion->fetch()) { + return $rowRegion['regionName']; } - public function getUserCount() - { - global $RUNTIME; - - $statementUser = $RUNTIME['PDO']->prepare("SELECT COUNT(*) FROM UserAccounts"); - $statementUser->execute(); - return $statementUser->fetchColumn(); - } + return "Unknown Region"; + } - public function getRegionCount() - { - global $RUNTIME; - - $statementUser = $RUNTIME['PDO']->prepare("SELECT COUNT(*) FROM regions"); - $statementUser->execute(); - return $statementUser->fetchColumn(); - } + public function getPartner($userID): string + { + $statement = $this->pdo->prepare("SELECT profilePartner FROM userprofile WHERE useruuid = ?"); + $statement->execute(array($userID)); - public function getOnlineCount() - { - global $RUNTIME; - - $statementUser = $RUNTIME['PDO']->prepare("SELECT COUNT(*) FROM Presence"); - $statementUser->execute(); - return $statementUser->fetchColumn(); - } - - public function deleteUser($uuid): bool - { - global $RUNTIME; - - try { - $RUNTIME['PDO']->beginTransaction(); - - $statementAuth = $RUNTIME['PDO']->prepare('DELETE FROM auth WHERE UUID = ?'); - $statementAuth->execute([$uuid]); - - $statementAgentPrefs = $RUNTIME['PDO']->prepare('DELETE FROM AgentPrefs WHERE PrincipalID = ?'); - $statementAgentPrefs->execute([$uuid]); - - $statementAvatars = $RUNTIME['PDO']->prepare('DELETE FROM Avatars WHERE PrincipalID = ?'); - $statementAvatars->execute([$uuid]); - - $statementGridUser = $RUNTIME['PDO']->prepare('DELETE FROM GridUser WHERE UserID = ?'); - $statementGridUser->execute([$uuid]); - - $statementEstateUser = $RUNTIME['PDO']->prepare('DELETE FROM estate_users WHERE uuid = ?'); - $statementEstateUser->execute([$uuid]); - - $statementEstateBan = $RUNTIME['PDO']->prepare('DELETE FROM estateban WHERE bannedUUID = ?'); - $statementEstateBan->execute([$uuid]); - - $statementHgTraveling = $RUNTIME['PDO']->prepare('DELETE FROM hg_traveling_data WHERE UserID = ?'); - $statementHgTraveling->execute([$uuid]); - - $statementUserIdentitys = $RUNTIME['PDO']->prepare('DELETE FROM UserIdentitys WHERE PrincipalID = ?'); - $statementUserIdentitys->execute([$uuid]); - - $statementFriends = $RUNTIME['PDO']->prepare('DELETE FROM Friends WHERE PrincipalID = ? OR Friend = ?'); - $statementFriends->execute([$uuid, $uuid]); - - $statementImOffline = $RUNTIME['PDO']->prepare('DELETE FROM im_offline WHERE PrincipalID = ?'); - $statementImOffline->execute([$uuid]); - - $statementInventoryFolders = $RUNTIME['PDO']->prepare('DELETE FROM inventoryfolders WHERE agentID = ?'); - $statementInventoryFolders->execute([$uuid]); - - $statementInventoryItems = $RUNTIME['PDO']->prepare('DELETE FROM inventoryitems WHERE avatarID = ?'); - $statementInventoryItems->execute([$uuid]); - - $statementGroupMembership = $RUNTIME['PDO']->prepare('DELETE FROM os_groups_membership WHERE PrincipalID = ?'); - $statementGroupMembership->execute([$uuid]); - - $statementGroupRoles = $RUNTIME['PDO']->prepare('DELETE FROM os_groups_rolemembership WHERE PrincipalID = ?'); - $statementGroupRoles->execute([$uuid]); - - $statementGroupRoles = $RUNTIME['PDO']->prepare('DELETE FROM Presence WHERE UserID = ?'); - $statementGroupRoles->execute([$uuid]); - - $statementMute = $RUNTIME['PDO']->prepare('DELETE FROM MuteList WHERE AgentID = ? OR MuteID = ?'); - $statementMute->execute([$uuid, $uuid]); - - $statementUserAccounts = $RUNTIME['PDO']->prepare('DELETE FROM UserAccounts WHERE PrincipalID = ?'); - $statementUserAccounts->execute([$uuid]); - - $statementUserData = $RUNTIME['PDO']->prepare('DELETE FROM userdata WHERE UserId = ?'); - $statementUserData->execute([$uuid]); - - $statementUserNotes = $RUNTIME['PDO']->prepare('DELETE FROM usernotes WHERE targetuuid = ?'); - $statementUserNotes->execute([$uuid]); - - $statementUserProfile = $RUNTIME['PDO']->prepare('DELETE FROM userprofile WHERE useruuid = ?'); - $statementUserProfile->execute([$uuid]); - - $statementUserSettings = $RUNTIME['PDO']->prepare('DELETE FROM usersettings WHERE useruuid = ?'); - $statementUserSettings->execute([$uuid]); - - $RUNTIME['PDO']->commit(); - - return true; - } catch (Exception $pdoException) { - $RUNTIME['PDO']->rollBack(); - error_log('Could not delete account '.$uuid.': '.$pdoException->getMessage()); - return false; + while ($row = $statement->fetch()) { + if ($row['profilePartner'] != "00000000-0000-0000-0000-000000000000") { + return $row['profilePartner']; } } - public function deleteIdentity($uuid, $identId): bool - { - global $RUNTIME; + return ''; + } - $statementValidate = $RUNTIME['PDO']->prepare('SELECT 1 FROM UserIdentitys WHERE PrincipalID = ? AND IdentityID = ?'); - $statementValidate->execute([$uuid, $identId]); + public function allowOfflineIM($userID): string + { + $statement = $this->pdo->prepare("SELECT imviaemail FROM usersettings WHERE useruuid = ?"); + $statement->execute(array($userID)); - if($statementValidate->fetch()) { - $statementDelete = $RUNTIME['PDO']->prepare('DELETE FROM UserAccounts WHERE PrincipalID = ?'); - $statementDelete->execute([$identId]); + if ($row = $statement->fetch()) { + return strtoupper($row['imviaemail']); + } - return true; - } + return "FALSE"; + } + public function getUserMail($userID): string + { + $statement = $this->pdo->prepare("SELECT Email FROM UserAccounts WHERE PrincipalID = ?"); + $statement->execute(array($userID)); + + if ($row = $statement->fetch()) { + return $row['Email']; + } + + return ""; + } + + private function getEntryCount($table): int + { + $statementCount = $this->pdo->prepare('SELECT COUNT(*) AS Count FROM '.$table); + $statementCount->execute(); + if ($row = $statementCount->fetch()) { + return $row['Count']; + } + return 0; + } + + public function getUserCount(): int + { + return $this->getEntryCount('UserAccounts'); + } + + public function getRegionCount(): int + { + return $this->getEntryCount('regions'); + } + + public function getOnlineCount(): int + { + return $this->getEntryCount('Presence'); + } + + public function deleteUser($uuid): bool + { + try { + $this->pdo->beginTransaction(); + + $statementAuth = $this->pdo->prepare('DELETE FROM auth WHERE UUID = ?'); + $statementAuth->execute([$uuid]); + + $statementAgentPrefs = $this->pdo->prepare('DELETE FROM AgentPrefs WHERE PrincipalID = ?'); + $statementAgentPrefs->execute([$uuid]); + + $statementAvatars = $this->pdo->prepare('DELETE FROM Avatars WHERE PrincipalID = ?'); + $statementAvatars->execute([$uuid]); + + $statementGridUser = $this->pdo->prepare('DELETE FROM GridUser WHERE UserID = ?'); + $statementGridUser->execute([$uuid]); + + $statementEstateUser = $this->pdo->prepare('DELETE FROM estate_users WHERE uuid = ?'); + $statementEstateUser->execute([$uuid]); + + $statementEstateBan = $this->pdo->prepare('DELETE FROM estateban WHERE bannedUUID = ?'); + $statementEstateBan->execute([$uuid]); + + $statementHgTraveling = $this->pdo->prepare('DELETE FROM hg_traveling_data WHERE UserID = ?'); + $statementHgTraveling->execute([$uuid]); + + $statementUserIdentitys = $this->pdo->prepare('DELETE FROM UserIdentitys WHERE PrincipalID = ?'); + $statementUserIdentitys->execute([$uuid]); + + $statementFriends = $this->pdo->prepare('DELETE FROM Friends WHERE PrincipalID = ? OR Friend = ?'); + $statementFriends->execute([$uuid, $uuid]); + + $statementImOffline = $this->pdo->prepare('DELETE FROM im_offline WHERE PrincipalID = ?'); + $statementImOffline->execute([$uuid]); + + $statementInventoryFolders = $this->pdo->prepare('DELETE FROM inventoryfolders WHERE agentID = ?'); + $statementInventoryFolders->execute([$uuid]); + + $statementInventoryItems = $this->pdo->prepare('DELETE FROM inventoryitems WHERE avatarID = ?'); + $statementInventoryItems->execute([$uuid]); + + $statementGroupMembership = $this->pdo->prepare('DELETE FROM os_groups_membership WHERE PrincipalID = ?'); + $statementGroupMembership->execute([$uuid]); + + $statementGroupRoles = $this->pdo->prepare('DELETE FROM os_groups_rolemembership WHERE PrincipalID = ?'); + $statementGroupRoles->execute([$uuid]); + + $statementGroupRoles = $this->pdo->prepare('DELETE FROM Presence WHERE UserID = ?'); + $statementGroupRoles->execute([$uuid]); + + $statementMute = $this->pdo->prepare('DELETE FROM MuteList WHERE AgentID = ? OR MuteID = ?'); + $statementMute->execute([$uuid, $uuid]); + + $statementUserAccounts = $this->pdo->prepare('DELETE FROM UserAccounts WHERE PrincipalID = ?'); + $statementUserAccounts->execute([$uuid]); + + $statementUserData = $this->pdo->prepare('DELETE FROM userdata WHERE UserId = ?'); + $statementUserData->execute([$uuid]); + + $statementUserNotes = $this->pdo->prepare('DELETE FROM usernotes WHERE targetuuid = ?'); + $statementUserNotes->execute([$uuid]); + + $statementUserProfile = $this->pdo->prepare('DELETE FROM userprofile WHERE useruuid = ?'); + $statementUserProfile->execute([$uuid]); + + $statementUserSettings = $this->pdo->prepare('DELETE FROM usersettings WHERE useruuid = ?'); + $statementUserSettings->execute([$uuid]); + + $this->pdo->commit(); + + return true; + } catch (Exception $pdoException) { + $this->pdo->rollBack(); + error_log('Could not delete account '.$uuid.': '.$pdoException->getMessage()); return false; } - - public function gen_uuid() - { - return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', - // 32 bits for "time_low" - mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), - - // 16 bits for "time_mid" - mt_rand( 0, 0xffff ), - - // 16 bits for "time_hi_and_version", - // four most significant bits holds version number 4 - mt_rand( 0, 0x0fff ) | 0x4000, - - // 16 bits, 8 bits for "clk_seq_hi_res", - // 8 bits for "clk_seq_low", - // two most significant bits holds zero and one for variant DCE1.1 - mt_rand( 0, 0x3fff ) | 0x8000, - - // 48 bits for "node" - mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) - ); - } } + + public function deleteIdentity($uuid, $identId): bool + { + $statementValidate = $this->pdo->prepare('SELECT 1 FROM UserIdentitys WHERE PrincipalID = ? AND IdentityID = ?'); + $statementValidate->execute([$uuid, $identId]); + + if($statementValidate->fetch()) { + $statementDelete = $this->pdo->prepare('DELETE FROM UserAccounts WHERE PrincipalID = ?'); + $statementDelete->execute([$identId]); + + return true; + } + + return false; + } + + public function generateUuid(): string + { + return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', + // 32 bits for "time_low" + mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), + + // 16 bits for "time_mid" + mt_rand( 0, 0xffff ), + + // 16 bits for "time_hi_and_version", + // four most significant bits holds version number 4 + mt_rand( 0, 0x0fff ) | 0x4000, + + // 16 bits, 8 bits for "clk_seq_hi_res", + // 8 bits for "clk_seq_low", + // two most significant bits holds zero and one for variant DCE1.1 + mt_rand( 0, 0x3fff ) | 0x8000, + + // 48 bits for "node" + mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) + ); + } +} diff --git a/app/discord.php b/app/util/DiscordUtil.php similarity index 78% rename from app/discord.php rename to app/util/DiscordUtil.php index 9c60af9..85c6d5a 100644 --- a/app/discord.php +++ b/app/util/DiscordUtil.php @@ -1,5 +1,11 @@ isSMTP(); + $mailer->Host = $host; + $mailer->Port = $port; + $mailer->Username = $username; + $mailer->Password = $password; + $mailer->SMTPAuth = true; + $mailer->SMTPSecure = $port == 465 ? PHPMailer::ENCRYPTION_SMTPS : PHPMailer::ENCRYPTION_STARTTLS; + $this->mailer = $mailer; + } + + public function sendHtml(string $fromAddr, string $fromName, string $to, string $subject, TemplateBuilder $tpl): bool + { + try { + $this->mailer->setFrom($fromAddr, $fromName); + $this->mailer->addAddress($to); + } catch (Exception $e) { + error_log('Failed to prepare mail client (from: '.$fromAddr.', to: '.$to.')'); + return false; + } + + $this->mailer->isHTML(true); + $this->mailer->Subject = $subject; + ob_start(); + $tpl->render(); + $tplOut = ob_end_clean(); + $this->mailer->Body = $tplOut; + $this->mailer->AltBody = $this::htmlToPlain($tplOut); + + try { + $this->mailer->send(); + return true; + } catch (Exception $e) { + error_log('Could not send email: '.$this->mailer->ErrorInfo); + return false; + } + } + + private static function htmlToPlain($message): string + { + $messageNew = str_replace('
', "\n", $message); + $messageNew = preg_replace('/(.*)<\\/a>/', "$2: $1", $messageNew); + return $messageNew; + } + +} diff --git a/app/util/Util.php b/app/util/Util.php new file mode 100644 index 0000000..9e46c3e --- /dev/null +++ b/app/util/Util.php @@ -0,0 +1,59 @@ + array('header' => 'Content-type: '.$requestTyp, 'method' => 'POST', 'timeout' => 0.5, 'content' => $content)))); + } else { + return file_get_contents($url); + } + } catch (Exception $e) { + echo "(HTTP REQUEST) error while conntect to remote server. : ".$url; + } + } + + public static function sendInworldIM($fromUUID, $toUUID, $fromName, $targetURL, $text) + { + $rawXML = "grid_instant_messageposition_x0position_y0position_z0to_agent_id".$toUUID."from_agent_session00000000-0000-0000-0000-000000000000im_session_id".$fromUUID."from_agent_name".$fromName."from_agent_id".$fromUUID."binary_bucketAA==region_handle0region_id00000000-0000-0000-0000-000000000000parent_estate_id1timestamp".time()."dialogAA==offlineAA==from_groupFALSEmessage".$text.""; + Util::getDataFromHTTP($targetURL, $rawXML, "text/xml"); + } +} diff --git a/app/utils.php b/app/utils.php deleted file mode 100644 index c0bf3dd..0000000 --- a/app/utils.php +++ /dev/null @@ -1,101 +0,0 @@ -', "\n", $message); - $messageNew = preg_replace('/(.*)<\\/a>/', "$2: $1", $messageNew); - return $messageNew; -} - -function sendMail($email, $message, $subject, $title, $preheader): bool -{ - include_once 'lib/phpmailer/Exception.php'; - include_once 'lib/phpmailer/PHPMailer.php'; - include_once 'lib/phpmailer/SMTP.php'; - include_once 'app/HTML.php'; - global $RUNTIME; - - $mailer = new PHPMailer(true); - - try { - $mailer->isSMTP(); - $mailer->Host = $RUNTIME['SMTP']['SERVER']; - $mailer->Port = $RUNTIME['SMTP']['PORT']; - $mailer->Username = $RUNTIME['SMTP']['ADDRESS']; - $mailer->Password = $RUNTIME['SMTP']['PASS']; - $mailer->SMTPAuth = true; - $mailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; - - $mailer->setFrom($RUNTIME['SMTP']['ADDRESS'], $RUNTIME['SMTP']['NAME']); - $mailer->addAddress($email); - - $mailer->isHTML(true); - $mailer->Subject = $subject; - $mailHtml = new HTML(); - $mailHtml->importHTML("mail.html"); - $mailHtml->setHTMLTitle($title); - $mailHtml->ReplaceLayoutInhalt('%%MESSAGE%%', $message); - $mailHtml->ReplaceLayoutInhalt('%%PREHEADER%%', $preheader); - $mailHtml->build(); - $mailer->Body = $mailHtml->ausgabe(); - $mailer->AltBody = htmlToPlain($message); - - $mailer->send(); - return true; - } catch(Exception $e) { - error_log('Could not send email: '.$mailer->ErrorInfo); - return false; - } -} - -function getDataFromHTTP($url, $content = "", $requestTyp = "application/text") -{ - try { - if ($content != "") { - return file_get_contents($url, true, stream_context_create(array('http' => array('header' => 'Content-type: '.$requestTyp, 'method' => 'POST', 'timeout' => 0.5, 'content' => $content)))); - } else { - return file_get_contents($url); - } - } catch (Exception $e) { - echo "(HTTP REQUEST) error while conntect to remote server. : ".$url; - } -} - -function sendInworldIM($fromUUID, $toUUID, $fromName, $targetURL, $text) -{ - $rawXML = "grid_instant_messageposition_x0position_y0position_z0to_agent_id".$toUUID."from_agent_session00000000-0000-0000-0000-000000000000im_session_id".$fromUUID."from_agent_name".$fromName."from_agent_id".$fromUUID."binary_bucketAA==region_handle0region_id00000000-0000-0000-0000-000000000000parent_estate_id1timestamp".time()."dialogAA==offlineAA==from_groupFALSEmessage".$text.""; - getDataFromHTTP($targetURL, $rawXML, "text/xml"); -}