From d8c8fbc1c7fc4c86fee904dcfbda7900f30cb786 Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Thu, 15 Oct 2026 16:04:10 -0400 Subject: [PATCH] add hybrid route for remote nodes --- server/private/routers/hybrid.ts | 46 ++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/server/private/routers/hybrid.ts b/server/private/routers/hybrid.ts index caad19732..7000f5aa3 100644 --- a/server/private/routers/hybrid.ts +++ b/server/private/routers/hybrid.ts @@ -96,12 +96,20 @@ import semver from "semver"; import { maxmindAsnLookup } from "@server/db/maxmindAsn"; import { checkOrgAccessPolicy } from "@server/lib/checkOrgAccessPolicy"; import { sanitizeString } from "@server/lib/sanitize"; +import { + getRedirectsByHost, + type RedirectByHost +} from "@server/db/queries/verifySessionQueries"; // Zod schemas for request validation const getResourceByDomainParamsSchema = z.strictObject({ domain: z.string().min(1, "Domain is required") }); +const getRedirectsByHostParamsSchema = z.strictObject({ + host: z.string().min(1, "Host is required") +}); + const getUserSessionParamsSchema = z.strictObject({ userSessionId: z.string().min(1, "User session ID is required") }); @@ -818,6 +826,44 @@ hybridRouter.get( } ); +hybridRouter.get( + "/redirects/host/:host", + async (req: Request, res: Response, next: NextFunction) => { + try { + const parsedParams = getRedirectsByHostParamsSchema.safeParse( + req.params + ); + if (!parsedParams.success) { + return next( + createHttpError( + HttpCode.BAD_REQUEST, + fromError(parsedParams.error).toString() + ) + ); + } + + const { host } = parsedParams.data; + const redirects = await getRedirectsByHost(host); + + return response(res, { + data: redirects, + success: true, + error: false, + message: "Redirects retrieved successfully", + status: HttpCode.OK + }); + } catch (error) { + logger.error(error); + return next( + createHttpError( + HttpCode.INTERNAL_SERVER_ERROR, + "Failed to get redirects by host" + ) + ); + } + } +); + const getOrgLoginPageParamsSchema = z.strictObject({ orgId: z.string().min(1) });