Ejemplo n.º 1
0
function findConnectorOrDie($object)
{
    if (isset($object->connector)) {
        return $object->connector;
    }
    if (!isset($object->owner)) {
        derr("cannot find API connector");
    }
    if (is_null($object->owner)) {
        derr("cannot find API connector");
    }
    return findConnector($object->owner);
}
Ejemplo n.º 2
0
    }
    if (strtolower($value) == strtolower($owner->name())) {
        return true;
    }
    return false;
}, 'arg' => true);
RQuery::$defaultFilters['rule']['rule']['operators']['is.unused.fast'] = array('eval' => function ($object, &$nestedQueries, $value) {
    /** @var $object Rule|SecurityRule|NatRule|DecryptionRule */
    if (!$object->isSecurityRule()) {
        derr("unsupported filter : this is not a security rule." . $object->toString());
    }
    $vsys = $object->owner->owner;
    if (!$vsys->isVirtualSystem()) {
        derr("this is filter is only supported on firewall/vsys based, Panorama is not allowed." . $object->toString());
    }
    $connector = findConnector($vsys);
    if ($connector === null) {
        derr("this filter is available only from API enabled PANConf objects");
    }
    if (!isset($vsys->apiCache)) {
        $vsys->apiCache = array();
    }
    // caching results for speed improvements
    if (!isset($vsys->apiCache['unusedSecurity'])) {
        $vsys->apiCache['unusedSecurity'] = array();
        $apiCmd = '<show><running><rule-use><rule-base>security</rule-base><type>unused</type><vsys>' . $vsys->name() . '</vsys></rule-use></running></show>';
        $apiResult = $connector->sendCmdRequest($apiCmd);
        DH::dom_to_xml($apiResult);
        $rulesXml = DH::findXPath('/result/rules/entry', $apiResult);
        for ($i = 0; $i < $rulesXml->length; $i++) {
            $ruleName = $rulesXml->item($i)->textContent;