示例#1
0
 private function processRequestObjects($objectNode)
 {
     $objects = $objectNode->getElementsByTagName('SIF_Object');
     foreach ($objects as $object) {
         $objectName = $object->getAttribute('ObjectName');
         $contexts = $object->getElementsByTagName('SIF_Context');
         if (!DataObject::objectExists($objectName)) {
             ProvisionError::invalidObject($this->originalSourceId, $this->originalMsgId, $objectName);
             if (CODELEVEL != 3) {
                 exit;
             } else {
                 return false;
             }
         } else {
             if ($contexts->length != 0) {
                 foreach ($contexts as $context) {
                     $contextId = Context::getContextId($context->nodeValue);
                     if (!DataObject::allowedToRequest($this->agent->agentId, $objectName, $contextId)) {
                         ProvisionError::invalidPermissionToRequest($this->originalSourceId, $this->originalMsgId, $objectName);
                         if (CODELEVEL != 3) {
                             exit;
                         } else {
                             return false;
                         }
                     } else {
                         $dataObject = new DataObject($objectName);
                         $dataObject->contextId = $contextId;
                         array_push($this->requestObjects, $dataObject);
                     }
                     //check if allowed to request
                 }
             } else {
                 if (!DataObject::allowedToRequest($this->agent->agentId, $objectName)) {
                     ProvisionError::invalidPermissionToRequest($this->originalSourceId, $this->originalMsgId, $objectName);
                     if (CODELEVEL != 3) {
                         exit;
                     } else {
                         return false;
                     }
                 } else {
                     $dataObject = new DataObject($objectName);
                     array_push($this->requestObjects, $dataObject);
                 }
                 //check if allowed to request
             }
             //check if there are contexts
         }
         //check if object exist
     }
     //loop through objects
 }
示例#2
0
 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
 }
示例#3
0
 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']);
     }
 }