diff options
author | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-09-02 20:10:25 +0200 |
---|---|---|
committer | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-09-02 20:10:25 +0200 |
commit | 2ba4c21f6b62c0ee8c2db06d36d489c6b6b20155 (patch) | |
tree | e50f93f1aa3148cd51a5e56bc45c7560e8f3c11d /gateway/src | |
parent | VOICE_STATE_UPDATE implementation, fix #210 (diff) | |
download | server-2ba4c21f6b62c0ee8c2db06d36d489c6b6b20155.tar.xz |
:art: reformat files
Diffstat (limited to 'gateway/src')
-rw-r--r-- | gateway/src/events/Close.ts | 4 | ||||
-rw-r--r-- | gateway/src/events/Connection.ts | 6 | ||||
-rw-r--r-- | gateway/src/opcodes/Identify.ts | 7 | ||||
-rw-r--r-- | gateway/src/opcodes/VoiceStateUpdate.ts | 43 | ||||
-rw-r--r-- | gateway/src/util/SessionUtils.ts | 8 |
5 files changed, 40 insertions, 28 deletions
diff --git a/gateway/src/events/Close.ts b/gateway/src/events/Close.ts index 26f4e7df..d68fc751 100644 --- a/gateway/src/events/Close.ts +++ b/gateway/src/events/Close.ts @@ -1,9 +1,9 @@ import WebSocket from "../util/WebSocket"; import { Message } from "./Message"; -import {Session} from "@fosscord/util"; +import { Session } from "@fosscord/util"; export async function Close(this: WebSocket, code: number, reason: string) { - await Session.delete({session_id: this.session_id}) + await Session.delete({ session_id: this.session_id }); // @ts-ignore this.off("message", Message); } diff --git a/gateway/src/events/Connection.ts b/gateway/src/events/Connection.ts index 1af484eb..b3c94eaf 100644 --- a/gateway/src/events/Connection.ts +++ b/gateway/src/events/Connection.ts @@ -7,7 +7,7 @@ import { Send } from "../util/Send"; import { CLOSECODES, OPCODES } from "../util/Constants"; import { createDeflate } from "zlib"; import { URL } from "url"; -import {Session} from "@fosscord/util"; +import { Session } from "@fosscord/util"; var erlpack: any; try { erlpack = require("erlpack"); @@ -57,12 +57,12 @@ export async function Connection(this: Server, socket: WebSocket, request: Incom }); socket.readyTimeout = setTimeout(() => { - Session.delete({session_id: socket.session_id}) //should we await? + Session.delete({ session_id: socket.session_id }); //should we await? return socket.close(CLOSECODES.Session_timed_out); }, 1000 * 30); } catch (error) { console.error(error); - Session.delete({session_id: socket.session_id}) //should we await? + Session.delete({ session_id: socket.session_id }); //should we await? return socket.close(CLOSECODES.Unknown_error); } } diff --git a/gateway/src/opcodes/Identify.ts b/gateway/src/opcodes/Identify.ts index 3984be73..f1d96959 100644 --- a/gateway/src/opcodes/Identify.ts +++ b/gateway/src/opcodes/Identify.ts @@ -80,11 +80,12 @@ export async function onIdentify(this: WebSocket, data: Payload) { user_id: this.user_id, session_id: session_id, status: "online", //does the session always start as online? - client_info: { //TODO read from identity + client_info: { + //TODO read from identity client: "desktop", os: "linux", - version: 0 - } + version: 0, + }, }); //We save the session and we delete it when the websocket is closed diff --git a/gateway/src/opcodes/VoiceStateUpdate.ts b/gateway/src/opcodes/VoiceStateUpdate.ts index 4719949c..04392b62 100644 --- a/gateway/src/opcodes/VoiceStateUpdate.ts +++ b/gateway/src/opcodes/VoiceStateUpdate.ts @@ -11,16 +11,20 @@ export async function onVoiceStateUpdate(this: WebSocket, data: Payload) { check.call(this, VoiceStateUpdateSchema, data.d); const body = data.d as VoiceStateUpdateSchema; - let voiceState + let voiceState; try { - voiceState = await VoiceState.findOneOrFail({where:{ user_id: this.user_id },relations: ["member", "member.user", "member.roles"]}); - if(voiceState.session_id !== this.session_id && body.channel_id === null) { //Should we also check guild_id === null? + voiceState = await VoiceState.findOneOrFail({ + where: { user_id: this.user_id }, + relations: ["member", "member.user", "member.roles"], + }); + if (voiceState.session_id !== this.session_id && body.channel_id === null) { + //Should we also check guild_id === null? //changing deaf or mute on a client that's not the one with the same session of the voicestate in the database should be ignored - return + return; } //The event send by Discord's client on channel leave has both guild_id and channel_id as null - if(body.guild_id === null) body.guild_id = voiceState.guild_id; + if (body.guild_id === null) body.guild_id = voiceState.guild_id; voiceState.assign(body); } catch (error) { voiceState = new VoiceState({ @@ -28,32 +32,39 @@ export async function onVoiceStateUpdate(this: WebSocket, data: Payload) { user_id: this.user_id, deaf: false, mute: false, - suppress: false - }) + suppress: false, + }); } //If the session changed we generate a new token - if(voiceState.session_id !== this.session_id) - voiceState.token = genVoiceToken() - voiceState.session_id = this.session_id + if (voiceState.session_id !== this.session_id) voiceState.token = genVoiceToken(); + voiceState.session_id = this.session_id; //TODO the member should only have these properties: hoisted_role, deaf, joined_at, mute, roles, user //TODO the member.user should only have these properties: avatar, discriminator, id, username - const {id, ...newObj} = voiceState; + const { id, ...newObj } = voiceState; await Promise.all([ voiceState.save(), - emitEvent({ event: "VOICE_STATE_UPDATE", data: newObj, guild_id: voiceState.guild_id} as VoiceStateUpdateEvent), + emitEvent({ + event: "VOICE_STATE_UPDATE", + data: newObj, + guild_id: voiceState.guild_id, + } as VoiceStateUpdateEvent), ]); //If it's null it means that we are leaving the channel and this event is not needed - if(voiceState.channel_id !== null) { + if (voiceState.channel_id !== null) { const regions = Config.get().regions; - await emitEvent({ event: "VOICE_SERVER_UPDATE", data: { + await emitEvent({ + event: "VOICE_SERVER_UPDATE", + data: { token: voiceState.token, guild_id: voiceState.guild_id, endpoint: regions.available[0].endpoint, //TODO return best endpoint or default - }, guild_id: voiceState.guild_id } as VoiceServerUpdateEvent) + }, + guild_id: voiceState.guild_id, + } as VoiceServerUpdateEvent); } -} \ No newline at end of file +} diff --git a/gateway/src/util/SessionUtils.ts b/gateway/src/util/SessionUtils.ts index 1ca23316..c66c7e76 100644 --- a/gateway/src/util/SessionUtils.ts +++ b/gateway/src/util/SessionUtils.ts @@ -1,11 +1,11 @@ export function genSessionId() { - return genRanHex(32) + return genRanHex(32); } export function genVoiceToken() { - return genRanHex(16) + return genRanHex(16); } function genRanHex(size: number) { - return [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join(''); -} \ No newline at end of file + return [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join(""); +} |