private function processRegistration() { $dom = $this->xmlDom; $headerNode = $dom->getElementsByTagName('SIF_Header')->item(0); $authenticationLevel = $originalMsgId = $headerNode->getElementsByTagName('SIF_MsgId')->item(0)->nodeValue; $originalSourceId = $headerNode->getElementsByTagName('SIF_SourceId')->item(0)->nodeValue; if ($headerNode->getElementsByTagName('SIF_Timestamp')->item(0)) { $originalTimestamp = $headerNode->getElementsByTagName('SIF_Timestamp')->item(0)->nodeValue; } else { $originalTimestamp = Utility::createTimestamp(); } $version = $_SESSION['ZONE_VERSION']; $buffer = $dom->getElementsByTagName('SIF_MaxBufferSize')->item(0)->nodeValue; $mode = $dom->getElementsByTagName('SIF_Mode')->item(0)->nodeValue; if ($dom->getElementsByTagName('SIF_Protocol')->item(0)) { $protocolType = $dom->getElementsByTagName('SIF_Protocol')->item(0)->attributes->item(0)->nodeValue; $protocolSecure = $dom->getElementsByTagName('SIF_Protocol')->item(0)->attributes->item(1)->nodeValue; } if ($dom->getElementsByTagName('SIF_URL')->item(0)) { $callBackUrl = $dom->getElementsByTagName('SIF_URL')->item(0)->nodeValue; } $validSourceId = Agent::checkSourceId($originalSourceId); if (!$validSourceId) { RegisterError::invalidSourceId($agent->sourceId, $originalMsgId); } else { //create agent object $agent = new Agent($originalSourceId); if (!Agent::allowedToRegister($agent->agentId)) { RegisterError::genericError($agent->sourceId, $originalMsgId); } else { /* if($version != ZIT::checkVersion($version)){ RegisterError::invalidVersion($agent->sourceId, $originalMsgId); } else{ */ if ($buffer < ZIT::getMinBuffer()) { RegisterError::invalidMaxBuffer($agent->sourceId, $originalMsgId); } else { $empty = null; $agent->authenticationLevel = $this->getSecurityLevel(); $agent->maxBuffersize = $buffer; $agent->protocol = isset($protocolType) ? $protocolType : $empty; $agent->callBackUrl = isset($callBackUrl) ? urlencode($callBackUrl) : $empty; $agent->agentMode = Agent::convertAgentMode(isset($mode) ? $mode : $empty); $agent->secure = Agent::convertSecure(isset($protocolSecure) ? $protocolSecure : $empty); $agent->version = $version; if ($agent->isRegistered()) { if ($agent->updateRegistration()) { $this->createAclAckMessage($agent->sourceId, $originalMsgId); } else { RegisterError::genericError($agent->sourceId, $originalMsgId, 'Error Registering Agent at agent->updateRegistration()'); } //try to update registration } else { if ($agent->register()) { $this->createAclAckMessage($agent->sourceId, $originalMsgId); } else { RegisterError::genericError($agent->sourceId, $originalMsgId, 'Error Registering Agent at agent->register()'); } //try to register } //check if agent is registered } //check if buffer size is valid // }//check if version is valid } //check if agent allowed to register } //check if sourceId is valid }
private function processZoneStatus() { $dom = $this->xmlDom; $headerNode = $dom->getElementsByTagName('SIF_Header')->item(0); $originalSourceId = $headerNode->getElementsByTagName('SIF_SourceId')->item(0)->nodeValue; $originalMsgId = $headerNode->getElementsByTagName('SIF_MsgId')->item(0)->nodeValue; $validSourceId = Agent::checkSourceId($originalSourceId); if (!$validSourceId) { RegisterError::invalidSourceId($originalSourceId, $originalMsgId); } else { $dom = new DOMDocument('1.0', 'iso-8859-1'); $zoneStatusNode = $dom->createElement('SIF_ZoneStatus'); $zoneStatusNode->setAttribute('ZoneId', $_SESSION['ZONE_NAME']); $dom->appendChild($zoneStatusNode); $zoneNameNode = $dom->createElement('SIF_Name'); $zoneNameNode->appendChild($dom->createTextNode($_SESSION['ZONE_DESC'])); $zoneStatusNode->appendChild($zoneNameNode); $sifVendorNode = $dom->createElement('SIF_Vendor'); $sifVendorName = $dom->createElement('SIF_Name'); $sifVendorName->appendChild($dom->createTextNode(VENDOR_NAME)); $sifVendorNode->appendChild($sifVendorName); $sifVendorProduct = $dom->createElement('SIF_Product'); $sifVendorProduct->appendChild($dom->createTextNode(VENDOR_PRODUCT)); $sifVendorNode->appendChild($sifVendorProduct); $sifVendorVersion = $dom->createElement('SIF_Version'); $sifVendorVersion->appendChild($dom->createTextNode(VENDOR_VERSION)); $sifVendorNode->appendChild($sifVendorVersion); $zoneStatusNode->appendChild($sifVendorNode); $sifProvidersNode = $dom->createElement('SIF_Providers'); $sifProvidersNode = $this->buildProviders($sifProvidersNode, $dom); $zoneStatusNode->appendChild($sifProvidersNode); $sifSubscribersNode = $dom->createElement('SIF_Subscribers'); $sifSubscribersNode = $this->buildSubscribers($sifSubscribersNode, $dom); $zoneStatusNode->appendChild($sifSubscribersNode); $sifNodes = $dom->createElement('SIF_SIFNodes'); $sifSubscribersNode = $this->buildNodeList($sifNodes, $dom); $zoneStatusNode->appendChild($sifNodes); /*$sifSupportedAuth = $dom->createElement('SIF_SupportedAuthentication'); $sifProtocolName = $dom->createElement('SIF_ProtocolName'); $sifSupportedAuth->appendChild($sifProtocolName); $zoneStatusNode->appendChild($sifSupportedAuth);*/ $sifSupportedProtocols = $dom->createElement('SIF_SupportedProtocols'); $sifProtocol = $dom->createElement('SIF_Protocol'); $sifProtocol->setAttribute('Type', 'HTTP'); $sifProtocol->setAttribute('Secure', 'No'); $sifUrl = $dom->createElement('SIF_URL'); $sifUrl->appendChild($dom->createTextNode(ZIT::getZitUrl())); $sifProtocol->appendChild($sifUrl); $sifSupportedProtocols->appendChild($sifProtocol); $zoneStatusNode->appendChild($sifSupportedProtocols); $sifSupportedVersions = $dom->createElement('SIF_SupportedVersions'); $versions = ZIT::getVersions(); foreach ($versions as $version) { $sifVersion = $dom->createElement('SIF_Version'); $sifVersion->appendChild($dom->createTextNode($version['VERSION'])); $sifSupportedVersions->appendChild($sifVersion); } $zoneStatusNode->appendChild($sifSupportedVersions); $sifAdminUrl = $dom->createElement('SIF_AdministrationURL'); $sifAdminUrl->appendChild($dom->createTextNode(ZIT::getAdminUrl())); $zoneStatusNode->appendChild($sifAdminUrl); $sifContexts = $dom->createElement('SIF_Contexts'); $sifContexts = $this->buildContexts($sifContexts, $dom); $zoneStatusNode->appendChild($sifContexts); $xml = $dom->saveXML($dom->documentElement); $msgId = Utility::createMessageId(); $timestamp = Utility::createTimestamp(); XmlHelper::buildSuccessMessage($msgId, $timestamp, $originalSourceId, $originalMsgId, 0, $originalMsg = $xml, $desc = null); } }