summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--api/src/routes/gateway.ts8
-rw-r--r--api/src/util/cdn.ts53
-rw-r--r--bundle/src/Server.ts16
-rw-r--r--bundle/src/stats.ts10
-rw-r--r--cdn/src/routes/avatars.ts3
-rw-r--r--util/src/util/cdn.ts4
6 files changed, 27 insertions, 67 deletions
diff --git a/api/src/routes/gateway.ts b/api/src/routes/gateway.ts
index 88d9dfda..4b3a0ea6 100644
--- a/api/src/routes/gateway.ts
+++ b/api/src/routes/gateway.ts
@@ -5,14 +5,14 @@ import { route } from "@fosscord/api";
 const router = Router();
 
 router.get("/", route({}), (req: Request, res: Response) => {
-	const { endpoint } = Config.get().gateway;
-	res.json({ url: endpoint || process.env.GATEWAY || "ws://localhost:3002" });
+	const { endpointPublic } = Config.get().gateway;
+	res.json({ url: endpointPublic || process.env.GATEWAY || "ws://localhost:3002" });
 });
 
 router.get("/bot", route({}), (req: Request, res: Response) => {
-	const { endpoint } = Config.get().gateway;
+	const { endpointPublic } = Config.get().gateway;
 	res.json({
-		url: endpoint || process.env.GATEWAY || "ws://localhost:3002",
+		url: endpointPublic || process.env.GATEWAY || "ws://localhost:3002",
 		shards: 1,
 		session_start_limit: {
 			total: 1000,
diff --git a/api/src/util/cdn.ts b/api/src/util/cdn.ts
deleted file mode 100644
index 8c6e9ac9..00000000
--- a/api/src/util/cdn.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { Config } from "@fosscord/util";
-import FormData from "form-data";
-import { HTTPError } from "lambert-server";
-import fetch from "node-fetch";
-
-export async function uploadFile(path: string, file: Express.Multer.File) {
-	const form = new FormData();
-	form.append("file", file.buffer, {
-		contentType: file.mimetype,
-		filename: file.originalname
-	});
-
-	const response = await fetch(`${Config.get().cdn.endpoint || "http://localhost:3003"}${path}`, {
-		headers: {
-			signature: Config.get().security.requestSignature,
-			...form.getHeaders()
-		},
-		method: "POST",
-		body: form
-	});
-	const result = await response.json();
-
-	if (response.status !== 200) throw result;
-	return result;
-}
-
-export async function handleFile(path: string, body?: string): Promise<string | undefined> {
-	if (!body || !body.startsWith("data:")) return body;
-	try {
-		const mimetype = body.split(":")[1].split(";")[0];
-		const buffer = Buffer.from(body.split(",")[1], "base64");
-
-		// @ts-ignore
-		const { id } = await uploadFile(path, { buffer, mimetype, originalname: "banner" });
-		return id;
-	} catch (error) {
-		console.error(error);
-		throw new HTTPError("Invalid " + path);
-	}
-}
-
-export async function deleteFile(path: string) {
-	const response = await fetch(`${Config.get().cdn.endpoint || "http://localhost:3003"}${path}`, {
-		headers: {
-			signature: Config.get().security.requestSignature
-		},
-		method: "DELETE"
-	});
-	const result = await response.json();
-
-	if (response.status !== 200) throw result;
-	return result;
-}
diff --git a/bundle/src/Server.ts b/bundle/src/Server.ts
index 56c82cd1..62764e8e 100644
--- a/bundle/src/Server.ts
+++ b/bundle/src/Server.ts
@@ -24,16 +24,24 @@ const gateway = new GatewayServer({ server, port, production });
 async function main() {
 	await initDatabase();
 	await Config.init();
+	// only set endpointPublic, if not already set
 	await Config.set({
 		cdn: {
 			endpointClient: "${location.host}",
-			endpoint: `http://localhost:${port}`,
+			endpointPrivate: `http://localhost:${port}`,
+			...(!Config.get().cdn.endpointPublic && {
+				endpointPublic: `http://localhost:${port}`,
+			}),
 		},
 		gateway: {
-			endpointClient: '${location.protocol === "https:" ? "wss://" : "ws://"}${location.host}',
-			endpoint: `ws://localhost:${port}`,
+			endpointClient:
+				'${location.protocol === "https:" ? "wss://" : "ws://"}${location.host}',
+			endpointPrivate: `ws://localhost:${port}`,
+			...(!Config.get().gateway.endpointPublic && {
+				endpointPublic: `http://localhost:${port}`,
+			}),
 		},
-	});
+	} as any);
 
 	await Promise.all([api.start(), cdn.start(), gateway.start()]);
 	console.log(`[Server] listening on port ${port}`);
diff --git a/bundle/src/stats.ts b/bundle/src/stats.ts
index 37ddb4e2..e6941db2 100644
--- a/bundle/src/stats.ts
+++ b/bundle/src/stats.ts
@@ -9,16 +9,20 @@ export function initStats() {
 	console.log(`[Process] running with pid: ${process.pid}`);
 
 	setInterval(async () => {
-		const [cpuUsed, memory, network] = await Promise.all([osu.cpu.usage(), osu.mem.info(), osu.netstat.inOut()]);
+		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.toFixed(2)}% | [Memory] ${Math.round(
+			`[CPU] ${cpuUsed.toPrecision(3)}% | [Memory] ${Math.round(
 				process.memoryUsage().rss / 1024 / 1024
 			)}mb/${memory.totalMemMb.toFixed(0)}mb ${networkUsage}`
 		);
-	}, 1000 * 30);
+	}, 1000 * 5);
 }
diff --git a/cdn/src/routes/avatars.ts b/cdn/src/routes/avatars.ts
index 3d745f90..93045925 100644
--- a/cdn/src/routes/avatars.ts
+++ b/cdn/src/routes/avatars.ts
@@ -44,7 +44,8 @@ router.post(
 		if (ANIMATED_MIME_TYPES.includes(type.mime)) hash = `a_${hash}`; // animated icons have a_ infront of the hash
 
 		const path = `avatars/${user_id}/${hash}`;
-		const endpoint = Config.get().cdn.endpoint || "http://localhost:3003";
+		const endpoint =
+			Config.get().cdn.endpointPublic || "http://localhost:3003";
 
 		await storage.set(path, buffer);
 
diff --git a/util/src/util/cdn.ts b/util/src/util/cdn.ts
index 754d6244..2de23f5d 100644
--- a/util/src/util/cdn.ts
+++ b/util/src/util/cdn.ts
@@ -11,7 +11,7 @@ export async function uploadFile(path: string, file: Express.Multer.File) {
 		filename: file.originalname,
 	});
 
-	const response = await fetch(`${Config.get().cdn.endpoint || "http://localhost:3003"}${path}`, {
+	const response = await fetch(`${Config.get().cdn.endpointPrivate || "http://localhost:3003"}${path}`, {
 		headers: {
 			signature: Config.get().security.requestSignature,
 			...form.getHeaders(),
@@ -41,7 +41,7 @@ export async function handleFile(path: string, body?: string): Promise<string |
 }
 
 export async function deleteFile(path: string) {
-	const response = await fetch(`${Config.get().cdn.endpoint || "http://localhost:3003"}${path}`, {
+	const response = await fetch(`${Config.get().cdn.endpointPrivate || "http://localhost:3003"}${path}`, {
 		headers: {
 			signature: Config.get().security.requestSignature,
 		},