diff options
author | Ermal <eri@pfsense.org> | 2011-07-06 18:50:55 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2011-07-06 18:52:47 +0000 |
commit | 5ffa33896f3e6173a6c7d2025487b0f85d9b73af (patch) | |
tree | 4a891b64f1d1f22668f02556adeedd0f9b0c2fee /etc/inc/util.inc | |
parent | b34b2b7da2b525389e9d42a7474d892fd77565fa (diff) | |
download | pfsense-5ffa33896f3e6173a6c7d2025487b0f85d9b73af.zip pfsense-5ffa33896f3e6173a6c7d2025487b0f85d9b73af.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/util.inc')
-rw-r--r-- | etc/inc/util.inc | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/etc/inc/util.inc b/etc/inc/util.inc index 683a1d8..bcb7845 100644 --- a/etc/inc/util.inc +++ b/etc/inc/util.inc @@ -883,6 +883,7 @@ function alias_make_table($config) { } } } + /* check if an alias exists */ function is_alias($name) { global $aliastable; @@ -890,6 +891,19 @@ function is_alias($name) { return isset($aliastable[$name]); } +function alias_get_type($name) { + global $config; + + if (is_array($config['aliases']['alias'])) { + foreach ($config['aliases']['alias'] as $alias) { + if ($name == $alias['name']) + return $alias['type']; + } + } + + return ""; +} + /* expand a host or network alias, if necessary */ function alias_expand($name) { global $aliastable; @@ -907,12 +921,14 @@ function alias_expand_urltable($name) { $urltable_prefix = "/var/db/aliastables/"; $urltable_filename = $urltable_prefix . $name . ".txt"; - foreach ($config['aliases']['alias'] as $alias) { - if (($alias['type'] == 'urltable') && ($alias['name'] == $name)) { - if (is_URL($alias["url"]) && file_exists($urltable_filename) && filesize($urltable_filename)) - return $urltable_filename; - else if (process_alias_urltable($name, $alias["url"], 0, true)) - return $urltable_filename; + if (is_array($config['aliases']['alias'])) { + foreach ($config['aliases']['alias'] as $alias) { + if (($alias['type'] == 'urltable') && ($alias['name'] == $name)) { + if (is_URL($alias["url"]) && file_exists($urltable_filename) && filesize($urltable_filename)) + return $urltable_filename; + else if (process_alias_urltable($name, $alias["url"], 0, true)) + return $urltable_filename; + } } } return null; |