private function processRequest($m) { $dom = $m->dom; $this->originalSourceId = $m->sourceId; $originalSourceId = $m->sourceId; $this->originalMsgId = $m->msgId; $originalMsgId = $m->msgId; $headerNode = $m->headerNode; $this->headerNode = $headerNode; $validSourceId = Agent::checkSourceId($originalSourceId); if (!$validSourceId) { RegisterError::invalidSourceId($agent->sourceId, $originalMsgId); exit; } else { $agent = new Agent($originalSourceId); if (!$agent->isRegistered()) { RegisterError::notRegisteredError($originalSourceId, $originalMsgId); exit; } else { $sentBufferSize = $dom->getElementsByTagName('SIF_MaxBufferSize')->item(0)->nodeValue; if (!Agent::bufferSizeAllowed($sentBufferSize, $agent->agentId)) { $timestamp = Utility::createTimestamp(); $msgId = Utility::createMessageId(); XmlHelper::buildSuccessMessage($msgId, $timestamp, $this->originalSourceId, $this->originalMsgId, 0, $originalMsg = null, $desc = null); } else { $messageNode = $dom->getElementsByTagName('SIF_Message'); $len = $messageNode->item(0)->childNodes->item(0)->childNodes->length - 1; $Mode = $messageNode->item(0)->childNodes->item(0)->childNodes->item($len)->nodeName; if ($Mode == 'SIF_Query') { $sifObjectNode = $dom->getElementsByTagName('SIF_QueryObject')->item(0); $objectName = $sifObjectNode->getAttribute('ObjectName'); } else { $sifObjectNode = $dom->getElementsByTagName('SIF_From')->item(0); $objectName = $sifObjectNode->getAttribute('ObjectName'); } if (!DataObject::objectExists($objectName)) { RequestError::invalidObject($originalSourceId, $originalMsgId, $objectName); exit; } else { if (!DataObject::allowedToRequest($agent->agentId, $objectName)) { ProvisionError::invalidPermissionToRequest($originalSourceId, $originalMsgId, $objectName); exit; } else { $sifDestinationId = $dom->getElementsByTagName('SIF_DestinationId'); if ($sifDestinationId->length != 0) { $sourceId = $sifDestinationId->item(0)->nodeValue; if (!DataObject::validResponder($objectName, $sourceId)) { RequestError::invalidProvider($originalSourceId, $originalMsgId); } else { $this->setupRequest($objectName, $sourceId, $agent); } //check if destination id is valid } else { $this->setupRequest($objectName, $sourceId = null, $agent); } //check if there is a destination id } //check if allowed to request } //check if allowed to request } //check object exist } //check if registered } //check sourceId }
private function processRequest($m) { try { $dom = $m->dom; $this->originalSourceId = $m->sourceId; $originalSourceId = $m->sourceId; $this->originalMsgId = $m->msgId; $originalMsgId = $m->msgId; $headerNode = $m->headerNode; $this->headerNode = $headerNode; $validSourceId = Agent::checkSourceId($originalSourceId); if (!$validSourceId) { RegisterError::invalidSourceId($agent->sourceId, $originalMsgId); exit; } else { $agent = new Agent($originalSourceId); if (!$agent->isRegistered()) { RegisterError::notRegisteredError($originalSourceId, $originalMsgId); exit; } else { $sentBufferSize = $dom->getElementsByTagName('SIF_MaxBufferSize')->item(0)->nodeValue; if (!Agent::bufferSizeAllowed($sentBufferSize, $agent->agentId)) { $timestamp = Utility::createTimestamp(); $msgId = Utility::createMessageId(); XmlHelper::buildSuccessMessage($msgId, $timestamp, $this->originalSourceId, $this->originalMsgId, 0, $originalMsg = null, $desc = null); } else { $messageNode = $dom->getElementsByTagName('SIF_Message'); $len = $messageNode->item(0)->childNodes->item(0)->childNodes->length - 1; $Mode = $messageNode->item(0)->childNodes->item(0)->childNodes->item($len)->nodeName; if ($Mode == 'SIF_Query') { $sifObjectNode = $dom->getElementsByTagName('SIF_QueryObject')->item(0); $objectName = $sifObjectNode->getAttribute('ObjectName'); } else { $sifObjectNode = $dom->getElementsByTagName('SIF_From')->item(0); $objectName = $sifObjectNode->getAttribute('ObjectName'); } if (!DataObject::objectExists($objectName)) { /* This is a temporary fix that needs to be evaluated for correctness. */ if ($objectName == 'SIF_ZoneStatus') { require_once 'main_lib/systemcontrol/SystemControl.php'; $systemControl = new SystemControl($m, false, true); exit; } RequestError::invalidObject($originalSourceId, $originalMsgId, $objectName); exit; } else { if (!DataObject::allowedToRequest($agent->agentId, $objectName)) { ProvisionError::invalidPermissionToRequest($originalSourceId, $originalMsgId, $objectName); exit; } else { $sifDestinationId = $dom->getElementsByTagName('SIF_DestinationId'); if ($sifDestinationId->length != 0) { $sourceId = $sifDestinationId->item(0)->nodeValue; if (!DataObject::validResponder($objectName, $sourceId)) { RequestError::invalidProvider($originalSourceId, $originalMsgId); } else { $this->setupRequest($objectName, $sourceId, $agent); } //check if destination id is valid } else { $this->setupRequest($objectName, $sourceId = null, $agent); } //check if there is a destination id } //check if allowed to request } //check if allowed to request } //check object exist } //check if registered } //check sourceId } catch (Exception $e) { ZitLog::writeToErrorLog("[processRequest]", "Errors:{$e->getTraceAsString}()", "Main Loop", $_SESSION['ZONE_ID']); } }