Firewall/Alias, performance regression in get_alias_description, take 1: move to our static firewall class

This commit is contained in:
Ad Schellevis 2018-12-03 17:47:01 +01:00
parent ebbc086f11
commit e639924c9b
2 changed files with 28 additions and 16 deletions

View File

@ -144,20 +144,5 @@ function legacy_move_config_list_items($source, $id, $items) {
*/
function get_alias_description($name)
{
// MVC defined aliases
foreach ((new \OPNsense\Firewall\Alias())->aliasIterator() as $alias) {
if ($alias['name'] == $name) {
if (!empty($alias['descr'])) {
return $alias['descr'];
} elseif (!empty($alias['description'])) {
return $alias['description'];
} elseif (!empty($alias['content'])) {
$tmp = array_slice(explode("\n", $alias['content']), 0, 10);
asort($tmp);
return implode("<br/>", $tmp);
}
}
}
return null;
return OPNsense\Firewall\Util::aliasDescription($name);
}

View File

@ -113,6 +113,33 @@ class Util
return false;
}
/**
* return alias descriptions
* @param string $name name
* @return string
*/
public static function aliasDescription($name)
{
if (self::$aliasObject == null) {
// Cache the alias object to avoid object creation overhead.
self::$aliasObject = new Alias();
}
foreach (self::$aliasObject->aliasIterator() as $alias) {
if ($alias['name'] == $name) {
if (!empty($alias['descr'])) {
return $alias['descr'];
} elseif (!empty($alias['description'])) {
return $alias['description'];
} elseif (!empty($alias['content'])) {
$tmp = array_slice(explode("\n", $alias['content']), 0, 10);
asort($tmp);
return implode("<br/>", $tmp);
}
}
}
return null;
}
/**
* Fetch port alias contents, other alias types are handled using tables so there usually no need
* to know the contents within any of the scripts.