summary refs log tree commit diff
path: root/src/gateway/events/Message.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/gateway/events/Message.ts')
-rw-r--r--src/gateway/events/Message.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gateway/events/Message.ts b/src/gateway/events/Message.ts
index 6645dd22..97bbba83 100644
--- a/src/gateway/events/Message.ts
+++ b/src/gateway/events/Message.ts
@@ -5,6 +5,8 @@ import WS from "ws";
 import { PayloadSchema } from "@fosscord/util";
 import * as Sentry from "@sentry/node";
 import BigIntJson from "json-bigint";
+import path from "path";
+import fs from "fs/promises";
 const bigIntJson = BigIntJson({ storeAsString: true });
 
 var erlpack: any;
@@ -41,6 +43,21 @@ export async function Message(this: WebSocket, buffer: WS.Data) {
 	if (process.env.WS_VERBOSE)
 		console.log(`[Websocket] Incomming message: ${JSON.stringify(data)}`);
 
+	if (process.env.WS_DUMP) {
+		const id = this.session_id || "unknown";
+
+		await fs.mkdir(path.join("dump", this.session_id), { recursive: true });
+		await fs.writeFile(
+			path.join("dump", this.session_id, `${Date.now()}.in.json`),
+			JSON.stringify(data, null, 2),
+		);
+
+		if (!this.session_id)
+			console.log(
+				"[Gateway] Unknown session id, dumping to unknown folder",
+			);
+	}
+
 	check.call(this, PayloadSchema, data);
 
 	// @ts-ignore