예제 #1
0
 /**
  * @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);
     }
 }
예제 #4
0
 /**
  * !! 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);
     }
 }