diff options
Diffstat (limited to 'library/Director/Filter/FilterEnrichment.php')
-rw-r--r-- | library/Director/Filter/FilterEnrichment.php | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/library/Director/Filter/FilterEnrichment.php b/library/Director/Filter/FilterEnrichment.php new file mode 100644 index 0000000..c726f76 --- /dev/null +++ b/library/Director/Filter/FilterEnrichment.php @@ -0,0 +1,29 @@ +<?php + +namespace Icinga\Module\Director\Filter; + +use Icinga\Data\Filter\Filter; +use Icinga\Data\Filter\FilterChain; +use Icinga\Data\Filter\FilterExpression; + +class FilterEnrichment +{ + public static function enrichFilter(Filter $filter): Filter + { + if ($filter instanceof FilterExpression) { + if (CidrExpression::isCidrFormat($filter->getExpression())) { + return CidrExpression::fromExpression($filter); + } + } elseif ($filter instanceof FilterChain) { + foreach ($filter->filters() as $subFilter) { + if ($subFilter instanceof FilterExpression + && CidrExpression::isCidrFormat($subFilter->getExpression()) + ) { + $filter->replaceById($subFilter->getId(), CidrExpression::fromExpression($subFilter)); + } + } + } + + return $filter; + } +} |