feat(firewall): add operational status reads
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -7,8 +7,10 @@ namespace KTXC\Controllers;
|
||||
use KTXC\Http\Response\JsonResponse;
|
||||
use KTXC\Service\SystemFirewallLogService;
|
||||
use KTXC\Service\SystemFirewallRuleService;
|
||||
use KTXC\Service\SystemFirewallStatusService;
|
||||
use KTXC\Service\TenantFirewallLogService;
|
||||
use KTXC\Service\TenantFirewallRuleService;
|
||||
use KTXC\Service\TenantFirewallStatusService;
|
||||
use KTXF\Controller\ControllerAbstract;
|
||||
use KTXF\Routing\Attributes\AuthenticatedRoute;
|
||||
|
||||
@@ -19,6 +21,8 @@ final class FirewallController extends ControllerAbstract
|
||||
private readonly SystemFirewallRuleService $systemRules,
|
||||
private readonly TenantFirewallLogService $tenantLogs,
|
||||
private readonly SystemFirewallLogService $systemLogs,
|
||||
private readonly TenantFirewallStatusService $tenantStatus,
|
||||
private readonly SystemFirewallStatusService $systemStatus,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -158,6 +162,46 @@ final class FirewallController extends ControllerAbstract
|
||||
);
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/metrics',
|
||||
name: 'firewall.tenant.metrics.read',
|
||||
permissions: [TenantFirewallLogService::PERMISSION_READ],
|
||||
)]
|
||||
public function tenantMetrics(?string $since = null): JsonResponse
|
||||
{
|
||||
return $this->readResponse(fn(): array => $this->tenantStatus->metrics($since));
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/configuration',
|
||||
name: 'firewall.tenant.configuration.read',
|
||||
permissions: [TenantFirewallStatusService::PERMISSION_SETTINGS_READ],
|
||||
)]
|
||||
public function tenantConfiguration(): JsonResponse
|
||||
{
|
||||
return new JsonResponse($this->tenantStatus->configuration());
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/system/metrics',
|
||||
name: 'firewall.system.metrics.read',
|
||||
permissions: [SystemFirewallLogService::PERMISSION_READ],
|
||||
)]
|
||||
public function systemMetrics(?string $tenantId = null, ?string $since = null): JsonResponse
|
||||
{
|
||||
return $this->readResponse(fn(): array => $this->systemStatus->metrics($tenantId, $since));
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/system/maintenance',
|
||||
name: 'firewall.system.maintenance.read',
|
||||
permissions: [SystemFirewallStatusService::PERMISSION_MAINTENANCE_READ],
|
||||
)]
|
||||
public function maintenanceStatus(): JsonResponse
|
||||
{
|
||||
return new JsonResponse($this->systemStatus->maintenanceStatus());
|
||||
}
|
||||
|
||||
private function queryResponse(callable $query, string $limit, string $offset): JsonResponse
|
||||
{
|
||||
try {
|
||||
@@ -178,4 +222,13 @@ final class FirewallController extends ControllerAbstract
|
||||
|
||||
return new JsonResponse($rule);
|
||||
}
|
||||
|
||||
private function readResponse(callable $read): JsonResponse
|
||||
{
|
||||
try {
|
||||
return new JsonResponse($read());
|
||||
} catch (\InvalidArgumentException $error) {
|
||||
return new JsonResponse(['error' => $error->getMessage()], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user