summary refs log tree commit diff
path: root/src/util
diff options
context:
space:
mode:
authorMathium05 <73901602+MathMan05@users.noreply.github.com>2025-11-26 15:56:10 -0600
committerGitHub <noreply@github.com>2025-11-26 15:56:10 -0600
commit49653e27c23ba2afb93244b77e55e5ce89d20df5 (patch)
treebac224ba28737daa69be0aa3b82f4ee95eeb0a85 /src/util
parentfix distinct (diff)
parentMaybe? (diff)
downloadserver-ts-49653e27c23ba2afb93244b77e55e5ce89d20df5.tar.xz
Merge branch 'spacebarchat:master' into removeStupidPolies
Diffstat (limited to 'src/util')
-rw-r--r--src/util/entities/Member.ts6
-rw-r--r--src/util/util/Token.ts26
2 files changed, 31 insertions, 1 deletions
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({ 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 }; }