Ejemplo n.º 1
0
 function myClone()
 {
     $tmparr = cloneArray($this->xmlroot);
     //$tmparr = $this->xmlroot;
     $new = new NatRule();
     $new->owner = $this->owner;
     $new->load_from_xml($tmparr);
     //$new->setName($new->name.'-tmpcloned');
     //$new->setName('LOL');
     return $new;
 }
Ejemplo n.º 2
0
 /**
  * @param SecurityRule|NatRule $rule
  * @param string $newName
  * @return SecurityRule|NatRule
  */
 public function cloneRule($rule, $newName = null, $inPostRuleBase = null)
 {
     if ($newName !== null) {
         if (!$this->isRuleNameAvailable($newName)) {
             derr('this rule name is not available: ' . $newName);
         }
     }
     if ($inPostRuleBase === null) {
         $inPostRuleBase = $rule->isPostRule();
     }
     /** @var SecurityRule|NatRule|DecryptionRule $newRule */
     $newRule = new $this->type($this);
     $xml = $rule->xmlroot->cloneNode(true);
     $newRule->load_from_domxml($xml);
     //trick to avoid name change propagation and errors
     $newRule->owner = null;
     // if no name was provided then we need to look for one
     if ($newName === null || !$this->isRuleNameAvailable($newRule->name())) {
         $newName = $this->findAvailableName($newRule->name(), '');
         $newRule->setName($newName);
     }
     // finally add it to the store
     $this->addRule($newRule, $inPostRuleBase);
     return $newRule;
 }