28 lines
862 B
TypeScript
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;
|
|
}
|