From 92f4099b82f9b56972aff99b74dba4c3892272cb Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 16 Jun 2026 02:39:15 +0200 Subject: Move random string to Random class in extensions --- src/api/util/handlers/Message.ts | 6 +-- src/api/util/index.ts | 1 - src/api/util/utility/RandomInviteID.ts | 68 ---------------------------------- 3 files changed, 3 insertions(+), 72 deletions(-) delete mode 100644 src/api/util/utility/RandomInviteID.ts (limited to 'src/api/util') diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts index 53de9b25..e2fc798d 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts @@ -18,9 +18,9 @@ import { HTTPError } from "lambert-server/HTTPError"; import { Equal, In, Or } from "typeorm"; -import { fillMessageUrlEmbeds, randomString } from "@spacebar/api"; +import { fillMessageUrlEmbeds } from "@spacebar/api"; import { getDatabase, Application, Attachment, Channel, CloudAttachment, Guild, Member, Message, ReadState, Role, Session, Sticker, User, Webhook } from "@spacebar/database"; -import { mathLogBase, arrayDistributeSequentially, Stopwatch } from "@spacebar/extensions"; +import { mathLogBase, arrayDistributeSequentially, Stopwatch, Random } from "@spacebar/extensions"; import { Config, DiscordApiErrors, @@ -280,7 +280,7 @@ export function handleComps(components: BaseMessageComponents[], flags: number) throw FieldErrors(errors); } return async (messageId: string, user: User, channel: Channel) => { - const batchId = `CLOUD_compUploads_${randomString(128)}`; + const batchId = `CLOUD_compUploads_${Random.getString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 128)}`; (await Promise.all(medias.map((m, index) => processMedia(m, messageId, batchId, user, channel, index + "")))).forEach((_) => _?.()); }; } diff --git a/src/api/util/index.ts b/src/api/util/index.ts index c7cbc535..1741179c 100644 --- a/src/api/util/index.ts +++ b/src/api/util/index.ts @@ -20,7 +20,6 @@ export * from "./utility/Base64"; export * from "./utility/ipAddress"; export * from "./handlers/Message"; export * from "./utility/passwordStrength"; -export * from "./utility/RandomInviteID"; export * from "./handlers/route"; export * from "./handlers/Voice"; export * from "./utility/captcha"; diff --git a/src/api/util/utility/RandomInviteID.ts b/src/api/util/utility/RandomInviteID.ts deleted file mode 100644 index ec54a9fc..00000000 --- a/src/api/util/utility/RandomInviteID.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* - Spacebar: A FOSS re-implementation and extension of the Discord.com backend. - Copyright (C) 2023 Spacebar and Spacebar Contributors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -import { Snowflake } from "@spacebar/util"; -import crypto from "node:crypto"; - -// TODO: 'random'? seriously? who named this? -// And why is this even here? Just use cryto.randomBytes? - -export function randomString(length = 6) { - // Declare all characters - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - // Pick characers randomly - let str = ""; - for (let i = 0; i < length; i++) { - str += chars.charAt(Math.floor(crypto.randomInt(chars.length))); - } - - return str; -} - -export function snowflakeBasedInvite() { - // Declare all characters - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - const base = BigInt(chars.length); - let snowflake = Snowflake.generateWorkerProcess(); - - // snowflakes hold ~10.75 characters worth of entropy; - // safe to generate a 8-char invite out of them - const str = ""; - for (let i = 0; i < 10; i++) { - str.concat(chars.charAt(Number(snowflake % base))); - snowflake = snowflake / base; - } - - return str - .slice(3, 3 + 8) - .split("") - .reverse() - .join(""); -} - -export function randomUpperString(length: number = 10) { - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - let result = ""; - for (let i = 0; i < length; i++) { - result += chars.charAt(Math.floor(Math.random() * chars.length)); - } - - return result; -} -- cgit 1.5.1