summaryrefslogtreecommitdiffstats
path: root/etc/inc/filter.inc
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2011-07-06 18:50:55 +0000
committerErmal <eri@pfsense.org>2011-07-06 18:59:24 +0000
commit3a26fb7f03a0336ed8dd642c46c6e513fca794da (patch)
treea225ddee7362b84564308e1f03132f04e091e2b1 /etc/inc/filter.inc
parentb4a7f7f230f55baa18a8eca7a0100db84ccd2171 (diff)
downloadpfsense-3a26fb7f03a0336ed8dd642c46c6e513fca794da.zip
pfsense-3a26fb7f03a0336ed8dd642c46c6e513fca794da.tar.gz
Feature #1603. Correct nested urltable alias code to be more fullproof to errors and does not break the ruleset on large lists of urltables. Though this needs a revisit to work properly since it breaks urltable alias property of reloading contents.
Diffstat (limited to 'etc/inc/filter.inc')
-rw-r--r--etc/inc/filter.inc27
1 files changed, 12 insertions, 15 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 646aea6..dc6b95f 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -452,21 +452,13 @@ 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;
$addresses = split(" ", $alias);
$finallist = "";
$builtlist = "";
+ $urltable_nesting = "";
$aliasnesting[$name] = $name;
foreach ($addresses as $address) {
if (empty($address))
@@ -474,13 +466,18 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
$linelength = strlen($builtlist);
$tmpline = "";
if(is_alias($address)) {
- if (get_alias_type($address) == 'urltable'){
+ if (alias_get_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){
+ $urltable_netsting = alias_expand_urltable($address);
+ if (!empty($urltable_nesting)) {
+ $urlfile_as_arr = file($urltable_nesting);
+ foreach($urlfile_as_arr as $line) {
$address= rtrim($line);
- $tmpline .= " $address";
+ if ((strlen($tmpline) + $linelength) > 4036) {
+ $finallist .= "{$tmpline} \\\n";
+ $tmpline = "";
+ }
+ $tmpline .= " {$address}";
}
}
}
@@ -493,7 +490,7 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
continue;
}
$aliasaddrnesting[$address] = $address;
- $tmpline = " $address";
+ $tmpline = " {$address}";
}
if ((strlen($tmpline)+ $linelength) > 4036) {
$finallist .= "{$builtlist} \\\n";
OpenPOWER on IntegriCloud