From ae660b3ce7d7e2b1f34cb9f1b52eb4ce21e17c42 Mon Sep 17 00:00:00 2001 From: Evgeny Yurchenko Date: Sun, 3 Jul 2011 03:18:23 -0400 Subject: Feature#1603. URL table aliases should be usable within network type aliases. --- etc/inc/filter.inc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'etc/inc/filter.inc') diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index 81b3080..d4a1391 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -452,6 +452,15 @@ function filter_generate_scrubing() { return $scrubrules; } +function get_alias_type($name) { + global $config; + + foreach ($config['aliases']['alias'] as $alias) + if ($name == $alias['name']) + return $alias['type']; + return ""; +} + function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddrnesting) { global $aliastable, $filterdns; @@ -465,8 +474,18 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr $linelength = strlen($builtlist); $tmpline = ""; if(is_alias($address)) { + if (get_alias_type($address) == 'urltable'){ + // Feature#1603. For this type of alias we do not need to recursively call filter_generate_nested_alias. Just load IPs from the file. + $urlfn = alias_expand_urltable($address); + if ($file_as_arr=file($urlfn)){ + foreach($file_as_arr as $line){ + $address= rtrim($line); + $tmpline .= " $address"; + } + } + } /* We already expanded this alias so there is no neccessity to do it again. */ - if(!isset($aliasnesting[$address])) + else if(!isset($aliasnesting[$address])) $tmpline = filter_generate_nested_alias($address, $aliastable[$address], $aliasnesting, $aliasaddrnesting); } else if(!isset($aliasaddrnesting[$address])) { if(!is_ipaddr($address) && !is_subnet($address) && !is_port($address)) { -- cgit v1.1