From ce7103e80fdb888caa8892dbe358175ac6b346b6 Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 23 Oct 2025 14:18:44 +0200 Subject: [PATCH] Use EnvConfig for more logging options --- src/gateway/events/Connection.ts | 4 ++-- src/util/Signing.ts | 26 +++++++++++++------------- src/util/util/Token.ts | 4 ++-- src/webrtc/events/Connection.ts | 3 ++- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/gateway/events/Connection.ts b/src/gateway/events/Connection.ts index bd17628f3..6933ceb14 100644 --- a/src/gateway/events/Connection.ts +++ b/src/gateway/events/Connection.ts @@ -27,7 +27,7 @@ import { Close } from "./Close"; import { Message } from "./Message"; import { Deflate, Inflate } from "fast-zlib"; import { URL } from "node:url"; -import { Config } from "@spacebar/util"; +import { Config, EnvConfig } from "@spacebar/util"; import { Decoder, Encoder } from "@toondepauw/node-zstd"; import { ProcessLifecycle } from "@spacebar/util/util/ProcessLifecycle"; import { Monitoring } from "../../util/monitoring/Monitoring"; @@ -113,7 +113,7 @@ export async function Connection(this: WS.Server, rawSocket: WS, request: Incomi console.log(`[Gateway] New connection from ${ipAddress}, total ${this.clients.size}`); - if (process.env.WS_LOGEVENTS) + if (EnvConfig.logging.logGatewayEvents) [ "close", "error", diff --git a/src/util/Signing.ts b/src/util/Signing.ts index 4aa29a24d..0756eacee 100644 --- a/src/util/Signing.ts +++ b/src/util/Signing.ts @@ -16,7 +16,7 @@ along with this program. If not, see . */ -import { Config } from "@spacebar/util"; +import { Config, EnvConfig } from "@spacebar/util"; import { createHmac, timingSafeEqual } from "node:crypto"; import ms, { StringValue } from "ms"; import { TextDecoder } from "node:util"; @@ -45,7 +45,7 @@ export class NewUrlSignatureData extends NewUrlUserSignatureData { throw new Error("Either path or url must be provided for URL signing"); } if (this.path && this.url) { - if (process.env["LOG_CDN_SIGNATURES"]) console.warn("[Signing] Both path and url are provided, using path for signing", this, new Error().stack); + if (EnvConfig.logging.logCdnSignatures) console.warn("[Signing] Both path and url are provided, using path for signing", this, new Error().stack); } if (this.url) { try { @@ -94,10 +94,10 @@ export class UrlSignResult { static fromUrl(url: URL | string): UrlSignResult { if (typeof url === "string") { - if (process.env["LOG_CDN_SIGNATURES"]) console.debug("[Signing] Parsing URL from string:", url); + if (EnvConfig.logging.logCdnSignatures) console.debug("[Signing] Parsing URL from string:", url); url = new URL(url); } - if (process.env["LOG_CDN_SIGNATURES"]) console.debug("[Signing] Parsing URL from URL object:", url.toString()); + if (EnvConfig.logging.logCdnSignatures) console.debug("[Signing] Parsing URL from URL object:", url.toString()); const ex = url.searchParams.get("ex"); const is = url.searchParams.get("is"); const hm = url.searchParams.get("hm"); @@ -149,7 +149,7 @@ function calculateHash(request: UrlSignatureData): UrlSignResult { "[Signing] CDN Signature IP is enabled but we couldn't find the IP field in the request. This may cause issues with signature validation. Please report this to the Spacebar team!", ); else { - if (process.env["LOG_CDN_SIGNATURES"]) console.log("[Signing] CDN Signature IP is enabled, adding IP to hash:", request.ip); + if (EnvConfig.logging.logCdnSignatures) console.log("[Signing] CDN Signature IP is enabled, adding IP to hash:", request.ip); data.update(request.ip!); ipData = new Int8Array(new TextEncoder().encode(request.ip!)); } @@ -162,7 +162,7 @@ function calculateHash(request: UrlSignatureData): UrlSignResult { "[Signing] CDN Signature User-Agent is enabled but we couldn't find the user-agent header in the request. This may cause issues with signature validation. Please report this to the Spacebar team!", ); else { - if (process.env["LOG_CDN_SIGNATURES"]) console.log("[Signing] CDN Signature User-Agent is enabled, adding User-Agent to hash:", request.userAgent); + if (EnvConfig.logging.logCdnSignatures) console.log("[Signing] CDN Signature User-Agent is enabled, adding User-Agent to hash:", request.userAgent); data.update(request.userAgent!); userAgentData = new Int8Array(new TextEncoder().encode(request.userAgent!)); } @@ -193,7 +193,7 @@ function calculateHash(request: UrlSignatureData): UrlSignResult { expiresAt: request.expiresAt, hash, }); - if (process.env["LOG_CDN_SIGNATURES"]) + if (EnvConfig.logging.logCdnSignatures) console.log( "[Signing]", { @@ -214,7 +214,7 @@ export const isExpired = (data: UrlSignResult | UrlSignatureData) => { const expiresAt = parseInt(data.expiresAt, 16); if (Number.isNaN(issuedAt) || Number.isNaN(expiresAt)) { - if (process.env["LOG_CDN_SIGNATURES"]) console.debug("[Signing] Invalid timestamps in query"); + if (EnvConfig.logging.logCdnSignatures) console.debug("[Signing] Invalid timestamps in query"); return true; } @@ -222,13 +222,13 @@ export const isExpired = (data: UrlSignResult | UrlSignatureData) => { const isExpired = expiresAt < currentTime; if (isExpired) { - if (process.env["LOG_CDN_SIGNATURES"]) console.debug("[Signing] Signature expired"); + if (EnvConfig.logging.logCdnSignatures) console.debug("[Signing] Signature expired"); return true; } const isValidIssuedAt = issuedAt < currentTime; if (!isValidIssuedAt) { - if (process.env["LOG_CDN_SIGNATURES"]) console.debug("[Signing] Signature issued in the future"); + if (EnvConfig.logging.logCdnSignatures) console.debug("[Signing] Signature issued in the future"); return true; } @@ -238,13 +238,13 @@ export const isExpired = (data: UrlSignResult | UrlSignatureData) => { export const hasValidSignature = (req: NewUrlUserSignatureData, sig: UrlSignResult) => { // if the required query parameters are not present, return false if (!sig.expiresAt || !sig.issuedAt || !sig.hash) { - if (process.env["LOG_CDN_SIGNATURES"]) console.warn("[Signing] Missing required query parameters for signature validation"); + if (EnvConfig.logging.logCdnSignatures) console.warn("[Signing] Missing required query parameters for signature validation"); return false; } // check if the signature is expired if (isExpired(sig)) { - if (process.env["LOG_CDN_SIGNATURES"]) console.warn("[Signing] Signature is expired"); + if (EnvConfig.logging.logCdnSignatures) console.warn("[Signing] Signature is expired"); return false; } @@ -279,7 +279,7 @@ export const hasValidSignature = (req: NewUrlUserSignatureData, sig: UrlSignResu const isHashValid = calculated.length === received.length && timingSafeEqual(calculated, received); if (!isHashValid) - if (process.env["LOG_CDN_SIGNATURES"]) + if (EnvConfig.logging.logCdnSignatures) console.warn(`Signature validation for ${sig.path} (is=${sig.issuedAt}, ex=${sig.expiresAt}) failed: calculated: ${calcd}, received: ${sig.hash}`); return isHashValid; diff --git a/src/util/util/Token.ts b/src/util/util/Token.ts index a20ae8ee2..a1a249606 100644 --- a/src/util/util/Token.ts +++ b/src/util/util/Token.ts @@ -25,7 +25,7 @@ import { HTTPError } from "lambert-server/HTTPError"; import { InstanceBan, Session, User } from "@spacebar/database"; import { Random, sleep, Stopwatch, TimeSpan } from "@spacebar/extensions"; import { Config } from "./Config"; -import { OrmUtils } from "@spacebar/util"; +import { OrmUtils, EnvConfig } from "@spacebar/util"; import { clearInterval, setInterval } from "node:timers"; import { ProcessLifecycle } from "@spacebar/util/util/ProcessLifecycle"; @@ -52,7 +52,7 @@ export type UserTokenData = { }; function logAuth(text: string) { - if (process.env.LOG_AUTH !== "true") return; + if (!EnvConfig.logging.logAuthentication) return; console.log(`[AUTH] ${text}`); } diff --git a/src/webrtc/events/Connection.ts b/src/webrtc/events/Connection.ts index 11fa2b657..997b59bdc 100644 --- a/src/webrtc/events/Connection.ts +++ b/src/webrtc/events/Connection.ts @@ -23,6 +23,7 @@ import WS from "ws"; import { VoiceOPCodes, WebRtcWebSocket, Send } from "../util"; import { onClose } from "./Close"; import { onMessage } from "./Message"; +import { EnvConfig } from "@spacebar/util"; // TODO: check rate limit // TODO: specify rate limit in config @@ -35,7 +36,7 @@ export async function Connection(this: WS.Server, rawSocket: WS, request: Incomi socket.rawSocket.on("message", (data, isBinary) => onMessage(socket, data as Buffer)); console.log("[WebRTC] new connection", request.url); - if (process.env.WS_LOGEVENTS) { + if (EnvConfig.logging.logGatewayEvents) { [ "close", "error",