chore: add exclude[domain|site|ip4|ip6|cidr4|cidr6] and group get filtering parameters

This commit is contained in:
Rekryt
2024-12-11 22:48:50 +03:00
parent 2ac2b8143f
commit 2513b0df17

View File

@@ -54,17 +54,32 @@ abstract class AbstractIPListController extends AbstractController {
'ip6' => $this->request->getQueryParameterArray('exclude[ip6]') ?? [], 'ip6' => $this->request->getQueryParameterArray('exclude[ip6]') ?? [],
'cidr6' => $this->request->getQueryParameterArray('exclude[cidr6]') ?? [], 'cidr6' => $this->request->getQueryParameterArray('exclude[cidr6]') ?? [],
]; ];
$group = $this->request->getQueryParameterArray('group') ?? [];
return array_map(static function (Site $siteEntity) use ($wildcard, $exclude) { return array_map(static function (Site $siteEntity) use ($wildcard, $exclude) {
$site = clone $siteEntity; $site = clone $siteEntity;
$site->domains = array_values(array_filter($siteEntity->getDomains($wildcard), fn(string $domain) => !in_array($domain, $exclude['domain']))); $site->domains = array_values(
array_filter(
$siteEntity->getDomains($wildcard),
fn(string $domain) => !in_array($domain, $exclude['domain'])
)
);
$site->ip4 = array_values(array_filter($site->ip4, fn(string $ip) => !in_array($ip, $exclude['ip4']))); $site->ip4 = array_values(array_filter($site->ip4, fn(string $ip) => !in_array($ip, $exclude['ip4'])));
$site->cidr4 = array_values(array_filter($site->cidr4, fn(string $ip) => !in_array($ip, $exclude['cidr4']))); $site->cidr4 = array_values(
array_filter($site->cidr4, fn(string $ip) => !in_array($ip, $exclude['cidr4']))
);
$site->ip6 = array_values(array_filter($site->ip6, fn(string $ip) => !in_array($ip, $exclude['ip6']))); $site->ip6 = array_values(array_filter($site->ip6, fn(string $ip) => !in_array($ip, $exclude['ip6'])));
$site->cidr6 = array_values(array_filter($site->cidr6, fn(string $ip) => !in_array($ip, $exclude['cidr6']))); $site->cidr6 = array_values(
array_filter($site->cidr6, fn(string $ip) => !in_array($ip, $exclude['cidr6']))
);
return $site; return $site;
}, array_filter($this->service->sites, fn (Site $siteEntity) => }, array_filter(
!in_array($siteEntity->name, $exclude['site']) && !in_array($siteEntity->group, $exclude['group']) array_filter(
$this->service->sites,
fn(Site $siteEntity) => !in_array($siteEntity->name, $exclude['site']) &&
!in_array($siteEntity->group, $exclude['group'])
),
fn(Site $siteEntity) => count($group) === 0 || in_array($siteEntity->group, $group)
)); ));
} }