From fff38aac85eae7205417e302c7a16aeff2f7a1ce Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 24 Mar 2026 16:26:56 -0700 Subject: [PATCH] Add ssh access log --- server/private/routers/ssh/signSshKey.ts | 19 +++++++++++++++++++ src/app/[orgId]/settings/logs/access/page.tsx | 16 ++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/server/private/routers/ssh/signSshKey.ts b/server/private/routers/ssh/signSshKey.ts index 5cffb4a34..c39d2e0ae 100644 --- a/server/private/routers/ssh/signSshKey.ts +++ b/server/private/routers/ssh/signSshKey.ts @@ -24,6 +24,7 @@ import { sites, userOrgs } from "@server/db"; +import { logAccessAudit } from "#private/lib/logAccessAudit"; import { isLicensedOrSubscribed } from "#private/lib/isLicencedOrSubscribed"; import { tierMatrix } from "@server/lib/billing/tierMatrix"; import response from "@server/lib/response"; @@ -463,6 +464,24 @@ export async function signSshKey( }) }); + await logAccessAudit({ + action: true, + type: "ssh", + orgId: orgId, + resourceId: resource.siteResourceId, + user: req.user + ? { username: req.user.username ?? "", userId: req.user.userId } + : undefined, + metadata: { + resourceName: resource.name, + siteId: resource.siteId, + sshUsername: usernameToUse, + sshHost: sshHost + }, + userAgent: req.headers["user-agent"], + requestIp: req.ip + }); + return response(res, { data: { certificate: cert.certificate, diff --git a/src/app/[orgId]/settings/logs/access/page.tsx b/src/app/[orgId]/settings/logs/access/page.tsx index 810022b98..dbb7b6708 100644 --- a/src/app/[orgId]/settings/logs/access/page.tsx +++ b/src/app/[orgId]/settings/logs/access/page.tsx @@ -493,7 +493,8 @@ export default function GeneralPage() { { value: "whitelistedEmail", label: "Whitelisted Email" - } + }, + { value: "ssh", label: "SSH" } ]} selectedValue={filters.type} onValueChange={(value) => @@ -507,13 +508,12 @@ export default function GeneralPage() { ); }, cell: ({ row }) => { - // should be capitalized first letter - return ( - - {row.original.type.charAt(0).toUpperCase() + - row.original.type.slice(1) || "-"} - - ); + const typeLabel = + row.original.type === "ssh" + ? "SSH" + : row.original.type.charAt(0).toUpperCase() + + row.original.type.slice(1); + return {typeLabel || "-"}; } }, {