diff --git a/server/db/names.ts b/server/db/names.ts index 2da38f10..84949576 100644 --- a/server/db/names.ts +++ b/server/db/names.ts @@ -1,6 +1,7 @@ import { join } from "path"; import { readFileSync } from "fs"; import { db, resources, siteResources } from "@server/db"; +import { randomInt } from "crypto"; import { exitNodes, sites } from "@server/db"; import { eq, and } from "drizzle-orm"; import { __DIRNAME } from "@server/lib/consts"; @@ -99,10 +100,10 @@ export async function getUniqueExitNodeEndpointName(): Promise { export function generateName(): string { const name = ( names.descriptors[ - Math.floor(Math.random() * names.descriptors.length) + randomInt(names.descriptors.length) ] + "-" + - names.animals[Math.floor(Math.random() * names.animals.length)] + names.animals[randomInt(names.animals.length)] ) .toLowerCase() .replace(/\s/g, "-"); diff --git a/server/lib/validators.ts b/server/lib/validators.ts index 59776105..880a2ceb 100644 --- a/server/lib/validators.ts +++ b/server/lib/validators.ts @@ -68,7 +68,7 @@ export function isUrlValid(url: string | undefined) { if (!url) return true; // the link is optional in the schema so if it's empty it's valid var pattern = new RegExp( "^(https?:\\/\\/)?" + // protocol - "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // domain name + "(((?:[a-z\\d-]{1,61}[a-z\\d])\\.)+[a-z]{2,}|" + // domain name "((\\d{1,3}\\.){3}\\d{1,3}))" + // OR ip (v4) address "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // port and path "(\\?[;&a-z\\d%_.~+=-]*)?" + // query string diff --git a/src/components/LoginForm.tsx b/src/components/LoginForm.tsx index 8149989e..dcb7480a 100644 --- a/src/components/LoginForm.tsx +++ b/src/components/LoginForm.tsx @@ -410,7 +410,7 @@ export default function LoginForm({
{t("passwordForgot")}