filter: pass object in filter_core_get_port_alias to allow large sets of aliases

This commit is contained in:
Ad Schellevis 2020-02-13 10:18:11 +01:00
parent d5e7ad8792
commit 8691618bdd
2 changed files with 7 additions and 5 deletions

View File

@ -617,7 +617,8 @@ function filter_generate_aliases()
}
$aliases .= "\n# User Aliases\n";
foreach ((new \OPNsense\Firewall\Alias())->aliasIterator() as $aliased) {
$aliasObject = new \OPNsense\Firewall\Alias();
foreach ($aliasObject->aliasIterator() as $aliased) {
switch ($aliased['type']) {
case "urltable_ports":
case "url_ports":
@ -627,7 +628,7 @@ function filter_generate_aliases()
file_notice(sprintf(gettext('URL port aliases types not supported [%s]'), $aliased['name']));
break;
case "port":
$tmp_ports = implode(" ", filter_core_get_port_alias($aliased['name']));
$tmp_ports = implode(" ", filter_core_get_port_alias($aliased['name'], array(), $aliasObject));
$aliases .= "{$aliased['name']} = \"{ {$tmp_ports} }\"\n";
break;
default:

View File

@ -150,16 +150,17 @@ function filter_core_get_antilockout()
* @return array containing ports
* @throws \OPNsense\Base\ModelException
*/
function filter_core_get_port_alias($aliasname, $aliases = array())
function filter_core_get_port_alias($aliasname, $aliases = array(), $aliasObject=null)
{
$response = array();
$aliases[] = $aliasname;
foreach ((new \OPNsense\Firewall\Alias())->aliasIterator() as $aliased) {
$aliasObject = $aliasObject == null ? (new \OPNsense\Firewall\Alias()) : $aliasObject;
foreach ($aliasObject->aliasIterator() as $aliased) {
if ($aliasname == $aliased['name'] && $aliased['type'] == 'port') {
foreach (explode("\n", $aliased['content']) as $address) {
if (is_alias($address)) {
if (!in_array($address, $aliases)) {
foreach (filter_core_get_port_alias($address, $aliases) as $port) {
foreach (filter_core_get_port_alias($address, $aliases, $aliasObject) as $port) {
if (!in_array($port, $response)) {
$response[] = $port;
}