From f86c401820d8418dda63ac9e4e5fc9608335ba56 Mon Sep 17 00:00:00 2001 From: Tal Borenstein Date: Mon, 18 Nov 2024 12:38:05 +0200 Subject: [PATCH 1/3] feat(ui): topology service icon based on category --- keep-ui/app/topology/model/models.ts | 1 + keep-ui/app/topology/ui/map/service-node.tsx | 13 +++++++++++++ keep-ui/public/icons/go-icon.png | Bin 0 -> 15475 bytes keep-ui/public/icons/nextjs-icon.png | Bin 0 -> 10884 bytes 4 files changed, 14 insertions(+) create mode 100644 keep-ui/public/icons/go-icon.png create mode 100644 keep-ui/public/icons/nextjs-icon.png diff --git a/keep-ui/app/topology/model/models.ts b/keep-ui/app/topology/model/models.ts index 23308640c..2d4c75a32 100644 --- a/keep-ui/app/topology/model/models.ts +++ b/keep-ui/app/topology/model/models.ts @@ -22,6 +22,7 @@ export interface TopologyService { ip_address?: string; mac_address?: string; manufacturer?: string; + category?: string; application_ids: string[]; // Added on client to optimize rendering applications: TopologyApplicationMinimal[]; diff --git a/keep-ui/app/topology/ui/map/service-node.tsx b/keep-ui/app/topology/ui/map/service-node.tsx index a15c7e3c7..ca441775e 100644 --- a/keep-ui/app/topology/ui/map/service-node.tsx +++ b/keep-ui/app/topology/ui/map/service-node.tsx @@ -7,6 +7,7 @@ import { ServiceNodeType, TopologyService } from "../../model/models"; import { Badge } from "@tremor/react"; import { getColorForUUID } from "@/app/topology/lib/badge-colors"; import { clsx } from "clsx"; +import Image from "next/image"; const THRESHOLD = 5; @@ -107,6 +108,18 @@ export function ServiceNode({ data, selected }: NodeProps) { onMouseEnter={() => setShowDetails(true)} onMouseLeave={() => setShowDetails(false)} > + {data.category && ( +
+ {data.category} +
+ )} {data.display_name || data.service} {alertCount > 0 && ( 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 literal 0 HcmV?d00001 diff --git a/keep-ui/public/icons/nextjs-icon.png b/keep-ui/public/icons/nextjs-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..285982a0c706708e22530ad9a2f40f287cc4344b GIT binary patch literal 10884 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 Date: Mon, 18 Nov 2024 12:48:57 +0200 Subject: [PATCH 2/3] fix: size position --- keep-ui/app/topology/ui/map/service-node.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keep-ui/app/topology/ui/map/service-node.tsx b/keep-ui/app/topology/ui/map/service-node.tsx index ca441775e..b4e43b54a 100644 --- a/keep-ui/app/topology/ui/map/service-node.tsx +++ b/keep-ui/app/topology/ui/map/service-node.tsx @@ -109,12 +109,12 @@ export function ServiceNode({ data, selected }: NodeProps) { onMouseLeave={() => setShowDetails(false)} > {data.category && ( -
+
{data.category} From f05a0e30fe8f37ea3946709dc49acfc418756ffa Mon Sep 17 00:00:00 2001 From: Tal Borenstein Date: Mon, 18 Nov 2024 14:54:08 +0200 Subject: [PATCH 3/3] fix: bypass key --- keep/api/utils/tenant_utils.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/keep/api/utils/tenant_utils.py b/keep/api/utils/tenant_utils.py index 32c869139..851f28f88 100644 --- a/keep/api/utils/tenant_utils.py +++ b/keep/api/utils/tenant_utils.py @@ -5,6 +5,7 @@ from sqlmodel import Session, select +from keep.api.core.config import config from keep.api.models.db.tenant import TenantApiKey from keep.contextmanager.contextmanager import ContextManager from keep.identitymanager.rbac import Admin as AdminRole @@ -218,6 +219,11 @@ def get_api_keys_secret( f"{api_key.tenant_id}-{api_key.reference_id}" ) + read_only_bypass_key = config("KEEP_READ_ONLY_BYPASS_KEY", default="") + if read_only_bypass_key and read_only_bypass_key == secret: + # Do not return the bypass key if set. + continue + api_keys_with_secret.append( { "reference_id": api_key.reference_id,