When an alias contain hosts, add IPs and networks to filterdns too, otherwise you end up with a pre-defined and non-persistent table. Fixes #3939

This commit is contained in:
Renato Botelho 2014-11-05 15:31:31 -02:00
parent 87d4456cf4
commit d9b05eb490
1 changed files with 15 additions and 1 deletions

View File

@ -476,6 +476,7 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
global $aliastable, $filterdns;
$addresses = explode(" ", $alias);
$use_filterdns = false;
$finallist = "";
$builtlist = "";
$urltable_nesting = "";
@ -506,8 +507,10 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
$tmpline = filter_generate_nested_alias($name, $aliastable[$address], $aliasnesting, $aliasaddrnesting);
} else if(!isset($aliasaddrnesting[$address])) {
if (!is_ipaddr($address) && !is_subnet($address) && !is_port($address) && !is_portrange($address) && is_hostname($address)) {
if (!isset($filterdns["{$address}{$name}"]))
if (!isset($filterdns["{$address}{$name}"])) {
$use_filterdns = true;
$filterdns["{$address}{$name}"] = "pf {$address} {$name}\n";
}
continue;
}
$aliasaddrnesting[$address] = $address;
@ -521,6 +524,17 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
$builtlist .= " {$tmpline}";
}
$finallist .= $builtlist;
if ($use_filterdns === true && !empty($finallist)) {
foreach (explode(" ", $finallist) as $address) {
if (empty($address))
continue;
if ((is_ipaddr($address) || is_subnet($address)) && !isset($filterdns["{$address}{$name}"]))
$filterdns["{$address}{$name}"] = "pf {$address} {$name}\n";
}
$finallist = '';
}
return $finallist;
}