diff --git a/lib/hawat/blueprints/filters/__init__.py b/lib/hawat/blueprints/filters/__init__.py index aeb633462be8551ac9cc65b9ffa65c632610f596..70cd87cff2730054f82ef68fb5899cf7d9083cda 100644 --- a/lib/hawat/blueprints/filters/__init__.py +++ b/lib/hawat/blueprints/filters/__init__.py @@ -81,6 +81,7 @@ def process_rule(item): if item.ips: ip4s = [] ip6s = [] + rule_ip4 = rule_ip6 = None for ipa in item.ips: ipobj = ipranges.from_str(ipa) if isinstance(ipobj, (ipranges.IP4, ipranges.IP4Range, ipranges.IP4Net)): @@ -88,9 +89,13 @@ def process_rule(item): else: ip6s.append(ipa) if ip4s: - rules.append('Source.IP4 IN ["{}"]'.format('","'.join(ip4s))) + rule_ip4 = 'Source.IP4 IN ["{}"]'.format('","'.join(ip4s)) if ip6s: - rules.append('Source.IP6 IN ["{}"]'.format('","'.join(ip6s))) + rule_ip6 = 'Source.IP6 IN ["{}"]'.format('","'.join(ip6s)) + if rule_ip4 and rule_ip6: + rules.append('({} OR {})'.format(rule_ip4, rule_ip6)) + elif rule_ip4 or rule_ip6: + rules.append(rule_ip4 if rule_ip4 else rule_ip6) item.filter = ' AND '.join(rules)