Files
tyx_AI_xhs/apps/api/src/network-boundary.ts
T

28 lines
862 B
TypeScript

export const DADA_LOOPBACK_HOST = "127.0.0.1";
export const DADA_LOOPBACK_PORT = 43121;
export interface NetworkBoundaryOptions {
allowTestPort?: boolean;
}
interface NetworkRequest {
host: string | undefined;
method: string;
origin: string | undefined;
}
export function isAllowedNetworkRequest(
request: NetworkRequest,
options: NetworkBoundaryOptions = {},
) {
if (request.method === "OPTIONS" || !request.host) return false;
const allowedHost = options.allowTestPort
? /^127\.0\.0\.1:[1-9][0-9]{0,4}$/.test(request.host)
: request.host === `${DADA_LOOPBACK_HOST}:${DADA_LOOPBACK_PORT}`;
if (!allowedHost) return false;
if (request.origin !== undefined && request.origin !== `http://${request.host}`) return false;
if (!["GET", "HEAD"].includes(request.method) && request.origin === undefined) return false;
return true;
}