public function ReceiveMessage($senderJId, array $arMessage, CXMPPClient $senderClient) { if (strlen($senderJId) <= 0) { return false; } if (!array_key_exists("iq", $arMessage) || !array_key_exists("bind", $arMessage["iq"]) || $arMessage['iq']['bind']['.']['xmlns'] != 'urn:ietf:params:xml:ns:xmpp-bind') { return false; } $type = ""; if (array_key_exists("type", $arMessage["iq"]["."])) { $type = $arMessage["iq"]["."]["type"]; } if ($type == "set") { $resource = $arMessage["iq"]["bind"]["resource"]["#"]; if (strlen($resource) <= 0) { $resource = "bx"; } $senderClient->SetResource($resource); $arMessageTmp = array("iq" => array("." => array("type" => "result", "to" => htmlspecialcharsbx($senderClient->GetClientDomain()) . "/" . $senderClient->GetStreamId(), "id" => $arMessage['iq']['.']['id']), "bind" => array("." => array("xmlns" => "urn:ietf:params:xml:ns:xmpp-bind"), "jid" => array("#" => $senderJId . "/" . $resource)))); $messageTmp = CXMPPParser::ToXml($arMessageTmp); $senderClient->__Send($messageTmp); } else { $arMessageTmp = array("iq" => array("." => array("type" => "result", "from" => $senderClient->GetClientDomain(), "id" => $arMessage['iq']['.']['id']))); $messageTmp = CXMPPParser::ToXml($arMessageTmp); $senderClient->__Send($messageTmp); } return true; }
static function _SendToServer($arMessage, &$errorNo, &$errorStr, $domain = "") { if (empty($domain)) { $domain = CXMPPServer::GetDomain(); } if ($f = @fsockopen(CXMPPServer::GetDomain(), 5222, $errNo, $errStr, 10)) { $arMessage['server'] = array('.' => array('uniid' => CXMPPUtility::GetUniid($domain), "domain" => $domain), '#' => ''); $message = CXMPPParser::ToXml($arMessage); fwrite($f, $message); $responce = ""; while (!feof($f)) { $responce .= trim(fread($f, 8192)); } fclose($f); $arResponce = CXMPPParser::ToArray($responce); return $arResponce; } $errorNo = $errNo; $errorStr = $errStr; return false; }
public function Send($arMessage) { if (!$this->connected) { return false; } if (count($arMessage) <= 0) { return false; } $arMessageKeys = array_keys($arMessage); if (count($arMessageKeys) <= 0) { return false; } $thisJId = $this->jid . (!empty($this->resource) ? "/" . $this->resource : ""); foreach ($arMessageKeys as $key) { if ($arMessage[$key][0]) { $arMessageKeys1 = array_keys($arMessage[$key]); foreach ($arMessageKeys1 as $key1) { $arMessage[$key][$key1]["."]["to"] = $thisJId; if (isset($arMessage[$key][$key1]["."]["from"]) && !isset($arMessage[$key][$key1]["vCard"])) { $arMessage[$key][$key1]["."]["from"] = CXMPPUtility::GetJIdWithResource($arMessage[$key][$key1]["."]["from"], $this->clientDomain); } } } else { $arMessage[$key]["."]["to"] = $thisJId; if (isset($arMessage[$key]["."]["from"]) && !isset($arMessage[$key]["vCard"])) { $arMessage[$key]["."]["from"] = CXMPPUtility::GetJIdWithResource($arMessage[$key]["."]["from"], $this->clientDomain); } } } $message = CXMPPParser::ToXml($arMessage); return $this->__Send($message); }