/** * @ignore * */ public function load_from_domxml(DOMElement $xml) { $this->xmlroot = $xml; $this->name = DH::findAttribute('name', $xml); if ($this->name === FALSE) { derr("address name not found\n"); } $this->_load_description_from_domxml(); //print "object named '".$this->name."' found\n"; $typeFound = false; foreach ($xml->childNodes as $node) { if ($node->nodeType != 1) { continue; } $lsearch = array_search($node->nodeName, self::$AddressTypes); if ($lsearch !== FALSE) { $typeFound = true; $this->type = $lsearch; $this->value = $node->textContent; } } if (!$typeFound) { derr('object type not found or not supported'); } if ($this->owner->owner->version >= 60) { $tagRoot = DH::findFirstElement('tag', $xml); if ($tagRoot !== false) { $this->tags->load_from_domxml($tagRoot); } } }
/** * @ignore * */ public function load_from_domxml($xml) { $this->xmlroot = $xml; $this->name = DH::findAttribute('name', $xml); if ($this->name === FALSE) { derr("name not found\n"); } if ($this->owner->owner->version >= 60) { $tagRoot = DH::findFirstElement('tag', $this->xmlroot); if ($tagRoot !== false) { $this->tags->load_from_domxml($tagRoot); } $this->membersRoot = DH::findFirstElement('static', $xml); if ($this->membersRoot === false) { $this->isDynamic = true; } else { foreach ($this->membersRoot->childNodes as $node) { if ($node->nodeType != 1) { continue; } $memberName = $node->textContent; if (strlen($memberName) < 1) { derr('found a member with empty name !', $node); } $f = $this->owner->findOrCreate($memberName, $this, true); $this->members[] = $f; } } } else { foreach ($xml->childNodes as $node) { if ($node->nodeType != 1) { continue; } $memberName = $node->textContent; if (strlen($memberName) < 1) { derr('found a member with empty name !', $node); } $f = $this->owner->findOrCreate($memberName, $this, true); $this->members[] = $f; } } }
/** * !! Should not be used outside of a PANConf constructor. !! * */ public function load_from_domxml($xml) { $this->xmlroot = $xml; // this VSYS has a name ? $this->name = DH::findAttribute('name', $xml); if ($this->name === FALSE) { derr("VirtualSystem name not found\n", $xml); } //print "VSYS '".$this->name."' found\n"; // this VSYS has a display-name ? $displayNameNode = DH::findFirstElement('display-name', $xml); if ($displayNameNode !== FALSE) { $this->_alternativeName = $displayNameNode->textContent; } // // loading the imported objects list // $this->importroot = DH::findFirstElementOrCreate('import', $xml); $networkRoot = DH::findFirstElementOrCreate('network', $this->importroot); $tmp = DH::findFirstElementOrCreate('interface', $networkRoot); $this->importedInterfaces->load_from_domxml($tmp); // $this->rulebaseroot = DH::findFirstElementOrCreate('rulebase', $xml); if ($this->owner->owner === null) { // // Extract Tag objects // if ($this->owner->version >= 60) { $tmp = DH::findFirstElementOrCreate('tag', $xml); $this->tagStore->load_from_domxml($tmp); } // End of Tag objects extraction // // Extract address objects // $tmp = DH::findFirstElementOrCreate('address', $xml); $this->addressStore->load_addresses_from_domxml($tmp); //print "VSYS '".$this->name."' address objectsloaded\n" ; // End of address objects extraction // // Extract address groups in this DV // $tmp = DH::findFirstElementOrCreate('address-group', $xml); $this->addressStore->load_addressgroups_from_domxml($tmp); //print "VSYS '".$this->name."' address groups loaded\n" ; // End of address groups extraction // // // Extract service objects in this VSYS // // // $tmp = DH::findFirstElementOrCreate('service', $xml); $this->serviceStore->load_services_from_domxml($tmp); //print "VSYS '".$this->name."' service objects\n" ; // End of <service> extraction // // // Extract service groups in this VSYS // // // $tmp = DH::findFirstElementOrCreate('service-group', $xml); $this->serviceStore->load_servicegroups_from_domxml($tmp); //print "VSYS '".$this->name."' service groups loaded\n" ; // End of <service-group> extraction } // // Extract Zone objects // $tmp = DH::findFirstElementOrCreate('zone', $xml); $this->zoneStore->load_from_domxml($tmp); // End of Zone objects extraction if ($this->owner->owner === null) { // // Security Rules extraction // $tmproot = DH::findFirstElementOrCreate('security', $this->rulebaseroot); $tmprulesroot = DH::findFirstElementOrCreate('rules', $tmproot); $this->securityRules->load_from_domxml($tmprulesroot); // // Nat Rules extraction // $tmproot = DH::findFirstElementOrCreate('nat', $this->rulebaseroot); $tmprulesroot = DH::findFirstElementOrCreate('rules', $tmproot); $this->natRules->load_from_domxml($tmprulesroot); // // Decryption Rules extraction // $tmproot = DH::findFirstElementOrCreate('decryption', $this->rulebaseroot); $tmprulesroot = DH::findFirstElementOrCreate('rules', $tmproot); $this->decryptionRules->load_from_domxml($tmprulesroot); // // Decryption Rules extraction // $tmproot = DH::findFirstElementOrCreate('application-override', $this->rulebaseroot); $tmprulesroot = DH::findFirstElementOrCreate('rules', $tmproot); $this->appOverrideRules->load_from_domxml($tmprulesroot); } }
/** * !! Should not be used outside of a PanoramaConf constructor. !! * */ public function load_from_domxml($xml) { $this->xmlroot = $xml; // this VirtualSystem has a name ? $this->name = DH::findAttribute('name', $xml); if ($this->name === FALSE) { derr("VirtualSystem name not found\n"); } // // Extract Tag objects // if ($this->owner->version >= 60) { $tmp = DH::findFirstElementOrCreate('tag', $xml); $this->tagStore->load_from_domxml($tmp); } // End of Tag objects extraction // // Extract address objects // $tmp = DH::findFirstElementOrCreate('address', $xml); $this->addressStore->load_addresses_from_domxml($tmp); //print "VirtualSystem '".$this->name."' address objectsloaded\n" ; // End of address objects extraction // // Extract address groups in this DV // $tmp = DH::findFirstElementOrCreate('address-group', $xml); $this->addressStore->load_addressgroups_from_domxml($tmp); //print "VirtualSystem '".$this->name."' address groups loaded\n" ; // End of address groups extraction // // // Extract service objects in this VirtualSystem // // // $tmp = DH::findFirstElementOrCreate('service', $xml); $this->serviceStore->load_services_from_domxml($tmp); //print "VirtualSystem '".$this->name."' service objects\n" ; // End of <service> extraction // // // Extract service groups in this VirtualSystem // // // $tmp = DH::findFirstElementOrCreate('service-group', $xml); $this->serviceStore->load_servicegroups_from_domxml($tmp); //print "VirtualSystem '".$this->name."' service groups loaded\n" ; // End of <service-group> extraction $prerulebase = DH::findFirstElementOrCreate('pre-rulebase', $xml); $postrulebase = DH::findFirstElementOrCreate('post-rulebase', $xml); $tmp = DH::findFirstElementOrCreate('security', $prerulebase); $tmp = DH::findFirstElementOrCreate('rules', $tmp); $tmpPost = DH::findFirstElementOrCreate('security', $postrulebase); $tmpPost = DH::findFirstElementOrCreate('rules', $tmpPost); $this->securityRules->load_from_domxml($tmp, $tmpPost); $tmp = DH::findFirstElementOrCreate('nat', $prerulebase); $tmp = DH::findFirstElementOrCreate('rules', $tmp); $tmpPost = DH::findFirstElementOrCreate('nat', $postrulebase); $tmpPost = DH::findFirstElementOrCreate('rules', $tmpPost); $this->natRules->load_from_domxml($tmp, $tmpPost); $tmp = DH::findFirstElementOrCreate('decryption', $prerulebase); $tmp = DH::findFirstElementOrCreate('rules', $tmp); $tmpPost = DH::findFirstElementOrCreate('decryption', $postrulebase); $tmpPost = DH::findFirstElementOrCreate('rules', $tmpPost); $this->decryptionRules->load_from_domxml($tmp, $tmpPost); $tmp = DH::findFirstElementOrCreate('application-override', $prerulebase); $tmp = DH::findFirstElementOrCreate('rules', $tmp); $tmpPost = DH::findFirstElementOrCreate('application-override', $postrulebase); $tmpPost = DH::findFirstElementOrCreate('rules', $tmpPost); $this->appOverrideRules->load_from_domxml($tmp, $tmpPost); // Devices extraction $this->devicesRoot = DH::findFirstElementOrCreate('devices', $xml); foreach ($this->devicesRoot->childNodes as $device) { if ($device->nodeType != 1) { continue; } $devname = DH::findAttribute('name', $device); $vsyslist = array(); $vsysChild = DH::firstChildElement($device); if ($vsysChild !== FALSE) { foreach ($vsysChild->childNodes as $vsysentry) { if ($vsysentry->nodeType != 1) { continue; } $vname = DH::findAttribute('name', $vsysentry); $vsyslist[] = $vname; } } else { //print "No vsys for device '$devname'\n"; $vsyslist[] = 'vsys1'; } $this->devices[] = array('serial' => $devname, 'vsyslist' => $vsyslist); } }