From 0a649a0de2cd88d11e16f2c4668b91709957f3a5 Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 25 Nov 2025 23:04:25 +0100 Subject: Expose mor emember keys --- src/util/entities/Member.ts | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/util') diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 2cabd858..404d2ce7 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -44,6 +44,12 @@ export const MemberPrivateProjection: (keyof Member)[] = [ "roles", "settings", "user", + "avatar", + "banner", + "bio", + "theme_colors", + "pronouns", + "communication_disabled_until", ]; @Entity({ -- cgit 1.5.1 From f818781b27e5bc8619b0c5761f25d0037ef849f8 Mon Sep 17 00:00:00 2001 From: Rory& Date: Wed, 26 Nov 2025 16:03:54 +0100 Subject: Cache access token key in memory and write it back to disk if deleted --- src/util/util/Token.ts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/util') diff --git a/src/util/util/Token.ts b/src/util/util/Token.ts index 3de05aa2..57634953 100644 --- a/src/util/util/Token.ts +++ b/src/util/util/Token.ts @@ -147,8 +147,31 @@ export async function generateToken(id: string) { }); } +let lastFsCheck: number; +let cachedKeypair: { + privateKey: crypto.KeyObject; + publicKey: crypto.KeyObject; + fingerprint: string; +} + // Get ECDSA keypair from file or generate it export async function loadOrGenerateKeypair() { + if (cachedKeypair) { + // check for file deletion every minute + if (Date.now() - lastFsCheck > 60000) { + if (!existsSync("jwt.key") || !existsSync("jwt.key.pub")) { + console.log("[JWT] Keypair files disappeared... Saving them again."); + await Promise.all([ + fs.writeFile("jwt.key", cachedKeypair.privateKey.export({ format: "pem", type: "sec1" })), + fs.writeFile("jwt.key.pub", cachedKeypair.publicKey.export({ format: "pem", type: "spki" })), + ]); + } + lastFsCheck = Date.now(); + } + + return cachedKeypair; + } + let privateKey: crypto.KeyObject; let publicKey: crypto.KeyObject; @@ -185,5 +208,6 @@ export async function loadOrGenerateKeypair() { .update(publicKey.export({ format: "pem", type: "spki" })) .digest("hex"); - return { privateKey, publicKey, fingerprint }; + lastFsCheck = Date.now(); + return cachedKeypair = { privateKey, publicKey, fingerprint }; } -- cgit 1.5.1