summary refs log tree commit diff
path: root/src/bundle/stats.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/bundle/stats.ts')
-rw-r--r--src/bundle/stats.ts43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/bundle/stats.ts b/src/bundle/stats.ts
new file mode 100644
index 00000000..0234e0b4
--- /dev/null
+++ b/src/bundle/stats.ts
@@ -0,0 +1,43 @@
+import os from "os";
+import osu from "node-os-utils";
+import { red } from "picocolors";
+
+export function initStats() {
+	console.log(`[Path] running in ${__dirname}`);
+	try {
+		console.log(`[CPU] ${osu.cpu.model()} Cores x${osu.cpu.count()}`);
+	}
+	catch {
+		console.log('[CPU] Failed to get cpu model!')
+	}
+	
+	console.log(`[System] ${os.platform()} ${os.arch()}`);
+	console.log(`[Process] running with PID: ${process.pid}`);
+	if (process.getuid && process.getuid() === 0) {
+		console.warn(
+			red(
+				`[Process] Warning fosscord is running as root, this highly discouraged and might expose your system vulnerable to attackers. Please run fosscord as a user without root privileges.`
+			)
+		);
+	}
+
+	// TODO: node-os-utils might have a memory leak, more investigation needed
+	// TODO: doesn't work if spawned with multiple threads
+	// setInterval(async () => {
+	// 	const [cpuUsed, memory, network] = await Promise.all([
+	// 		osu.cpu.usage(),
+	// 		osu.mem.info(),
+	// 		osu.netstat.inOut(),
+	// 	]);
+	// 	var networkUsage = "";
+	// 	if (typeof network === "object") {
+	// 		networkUsage = `| [Network]: in ${network.total.inputMb}mb | out ${network.total.outputMb}mb`;
+	// 	}
+
+	// 	console.log(
+	// 		`[CPU] ${cpuUsed.toPrecision(3)}% | [Memory] ${Math.round(
+	// 			process.memoryUsage().rss / 1024 / 1024
+	// 		)}mb/${memory.totalMemMb.toFixed(0)}mb ${networkUsage}`
+	// 	);
+	// }, 1000 * 60 * 5);
+}