From 194ef5478eb48d870c5d8844f1be6393dcd37ffa Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Fri, 13 Aug 2021 22:57:46 +0200 Subject: [PATCH] :construction: fix server bundle --- api/src/routes/users/@me/devices.ts | 10 ++++++++++ bundle/.vscode/launch.json | 18 +++++++++++++++++ bundle/package-lock.json | Bin 92162 -> 92078 bytes bundle/package.json | 2 +- bundle/src/Server.ts | 13 ++++++++++--- fosscord-server.code-workspace | 29 ++++++++++++++++++++++++++++ gateway/src/Server.ts | 2 ++ gateway/src/listener/listener.ts | 13 +++++++------ util/src/util/Config.ts | 8 ++++---- util/src/util/Event.ts | 7 ++++++- 10 files changed, 87 insertions(+), 15 deletions(-) create mode 100644 api/src/routes/users/@me/devices.ts create mode 100644 bundle/.vscode/launch.json create mode 100644 fosscord-server.code-workspace diff --git a/api/src/routes/users/@me/devices.ts b/api/src/routes/users/@me/devices.ts new file mode 100644 index 00000000..b16ef783 --- /dev/null +++ b/api/src/routes/users/@me/devices.ts @@ -0,0 +1,10 @@ +import { Router, Response, Request } from "express"; + +const router = Router(); + +router.post("/", (req: Request, res: Response) => { + // TODO: + res.sendStatus(204); +}); + +export default router; diff --git a/bundle/.vscode/launch.json b/bundle/.vscode/launch.json new file mode 100644 index 00000000..0b5d2287 --- /dev/null +++ b/bundle/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "sourceMaps": true, + "type": "node", + "request": "launch", + "name": "Launch server bundle", + "program": "${workspaceFolder}/dist/start.js", + "preLaunchTask": "tsc: build - tsconfig.json", + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "envFile": "${workspaceFolder}/.env" + } + ] +} diff --git a/bundle/package-lock.json b/bundle/package-lock.json index 218c1a55ad5892b15bc95752a18590155a012b65..a0c8f4e6f696b9caba266ddfd31f7e5df8b28df0 100644 GIT binary patch delta 86 zcmZp=z`E`{>xA`_<#{zW?h0a>xSo4*C8yiu59iq@TO7C9yq9?jD^P56CFe3`sNCjW n-aSl{r*O+ne#7UrdCjGLjFScQc_;S?b2Tpz+P*-DF)0)PHR~e$ delta 117 zcmZ2?p0()$>xA`_HJQ0LUJqiLxL#v2FR$BVgEQ=tpB%H { + console.log("socket requests upgrade", request.url); + // @ts-ignore this.ws.handleUpgrade(request, socket, head, (socket) => { this.ws.emit("connection", socket, request); }); diff --git a/gateway/src/listener/listener.ts b/gateway/src/listener/listener.ts index 708bfe5c..51082586 100644 --- a/gateway/src/listener/listener.ts +++ b/gateway/src/listener/listener.ts @@ -58,13 +58,14 @@ export async function setupListener(this: WebSocket) { this.permissions[guild] = x; this.listeners; this.events[guild] = await listenEvent(guild, consumer, opts); - for (const channel of guild_channels) { + + for (const channel of guild_channels.filter((c) => c.guild_id === guild)) { if (x.overwriteChannel(channel.permission_overwrites).has("VIEW_CHANNEL")) { this.events[channel.id] = await listenEvent(channel.id, consumer, opts); } } }) - .catch((e) => {}); + .catch((e) => console.log("couldn't get permission for guild " + guild, e)); } this.once("close", () => { @@ -74,14 +75,14 @@ export async function setupListener(this: WebSocket) { } // TODO: only subscribe for events that are in the connection intents -function consume(this: WebSocket, opts: EventOpts) { +async function consume(this: WebSocket, opts: EventOpts) { const { data, event } = opts; const id = data.id as string; const permission = this.permissions[id] || new Permissions("ADMINISTRATOR"); // default permission for dm const consumer = consume.bind(this); const listenOpts = opts as ListenEventOpts; - console.log("event", event); + // console.log("event", event); // subscription managment switch (event) { @@ -94,14 +95,14 @@ function consume(this: WebSocket, opts: EventOpts) { if (!permission.overwriteChannel(data.permission_overwrites).has("VIEW_CHANNEL")) return; // TODO: check if user has permission to channel case "GUILD_CREATE": - listenEvent(id, consumer, listenOpts); + this.events[id] = await listenEvent(id, consumer, listenOpts); break; case "CHANNEL_UPDATE": const exists = this.events[id]; // @ts-ignore if (permission.overwriteChannel(data.permission_overwrites).has("VIEW_CHANNEL")) { if (exists) break; - listenEvent(id, consumer, listenOpts); + this.events[id] = await listenEvent(id, consumer, listenOpts); } else { if (!exists) return; // return -> do not send channel update events for hidden channels opts.cancel(id); diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts index a23d724d..09a42564 100644 --- a/util/src/util/Config.ts +++ b/util/src/util/Config.ts @@ -43,11 +43,11 @@ export interface KafkaBroker { export interface DefaultOptions { gateway: { - endpointClientKeepDefault?: boolean; + endpointClient: string | null; endpoint: string | null; }; cdn: { - endpointClientKeepDefault?: boolean; + endpointClient: string | null; endpoint: string | null; }; general: { @@ -150,11 +150,11 @@ export interface DefaultOptions { export const DefaultOptions: DefaultOptions = { gateway: { - endpointClientKeepDefault: false, + endpointClient: null, endpoint: null, }, cdn: { - endpointClientKeepDefault: false, + endpointClient: null, endpoint: null, }, general: { diff --git a/util/src/util/Event.ts b/util/src/util/Event.ts index 13dd797a..c088e8b3 100644 --- a/util/src/util/Event.ts +++ b/util/src/util/Event.ts @@ -16,6 +16,7 @@ export async function emitEvent(payload: Omit) { const successful = RabbitMQ.channel?.publish(id, "", Buffer.from(`${data}`), { type: payload.event }); if (!successful) throw new Error("failed to send event"); } else { + console.log("emit event", id); events.emit(id, payload); } } @@ -44,7 +45,11 @@ export async function listenEvent(event: string, callback: (event: EventOpts) => // @ts-ignore return rabbitListen(opts?.channel || RabbitMQ.channel, event, callback, { acknowledge: opts?.acknowledge }); } else { - const cancel = () => events.removeListener(event, callback); + const cancel = () => { + console.log("cancel event", event); + events.removeListener(event, callback); + }; + console.log("listen event", event); events.addListener(event, (opts) => callback({ ...opts, cancel })); return cancel;