diff --git a/apps/web/src/app/api/checker/test/route.ts b/apps/web/src/app/api/checker/test/route.ts index cde1df7b..035e1c29 100644 --- a/apps/web/src/app/api/checker/test/route.ts +++ b/apps/web/src/app/api/checker/test/route.ts @@ -5,6 +5,7 @@ import { monitorFlyRegionSchema } from "@openstatus/db/src/schema"; import { checkRegion } from "@/app/play/checker/[id]/utils"; // TODO: move into a shared package import { payloadSchema } from "../schema"; +import { isAnInvalidTestUrl } from "../utils"; export const runtime = "edge"; export const preferredRegion = "auto"; @@ -28,7 +29,7 @@ export async function POST(request: Request) { const { url, region, method, headers, body } = _valid.data; // 🧑‍💻 for the smart one who want to create a loop hole - if (url === "https://www.openstatus.dev/api/checker/test") { + if (isAnInvalidTestUrl(url)) { return NextResponse.json({ success: true }, { status: 200 }); } diff --git a/apps/web/src/app/api/checker/utils.ts b/apps/web/src/app/api/checker/utils.ts new file mode 100644 index 00000000..c11bd969 --- /dev/null +++ b/apps/web/src/app/api/checker/utils.ts @@ -0,0 +1,10 @@ +export const isAnInvalidTestUrl = (rawUrl: string) => { + const url = new URL(rawUrl); + const isSelfHostName = url.hostname + .split(".") + .slice(-2) // ex: any.sub.openstatus.dev + .join(".") + .includes("openstatus.dev"); // ex: openstatus.dev:80 + + return isSelfHostName && url.pathname.startsWith("/api/checker/"); +};