From d491bcd8bed78703331bc6550cf3d52e3647e764 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Thu, 17 Feb 2022 18:54:16 +1100 Subject: [PATCH] Discord.js gateway connection when connecting to voice will close 4002 decode error due to not sending self_video field. temp solution: remove it from server. this commit will probably be reverted later; I'm just trying to see if a proper ( not self signed ) SSL cert on slowcord.maddy.k.vu will fix this SSL error I'm receiving. --- bundle/package-lock.json | Bin 576191 -> 589262 bytes bundle/package.json | 1 + gateway/src/schema/VoiceStateUpdateSchema.ts | 6 +-- webrtc/.vscode/launch.json | 4 +- webrtc/src/Server.ts | 14 ++++-- webrtc/src/opcodes/Identify.ts | 45 ++++++++++++++++--- webrtc/src/opcodes/index.ts | 6 +-- 7 files changed, 59 insertions(+), 17 deletions(-) diff --git a/bundle/package-lock.json b/bundle/package-lock.json index 898c041c76670ef3d9676afe6c64b3b6ac5f60e9..9464d164300482e180a4b3eb3e45b12b157e2b16 100644 GIT binary patch delta 17728 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

y-Wk0EgRfXuG9Oe6-K^w~k2Kd@QvPnwj- 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 a&7Y2tj$h~who5y&U&qgY1RvM82>%1K4BHw2 delta 14236 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 U#|!p9GD5*yQGp(PWGLkS02YkeZU6uP diff --git a/bundle/package.json b/bundle/package.json index 8915665d..4dec60ee 100644 --- a/bundle/package.json +++ b/bundle/package.json @@ -64,6 +64,7 @@ "@fosscord/gateway": "file:../gateway", "@sentry/node": "^6.16.1", "@sentry/tracing": "^6.16.1", + "@yukikaze-bot/erlpack": "^1.0.1", "ajv": "8.6.2", "ajv-formats": "^2.1.1", "amqplib": "^0.8.0", diff --git a/gateway/src/schema/VoiceStateUpdateSchema.ts b/gateway/src/schema/VoiceStateUpdateSchema.ts index 9efa191e..c046600d 100644 --- a/gateway/src/schema/VoiceStateUpdateSchema.ts +++ b/gateway/src/schema/VoiceStateUpdateSchema.ts @@ -3,7 +3,7 @@ export const VoiceStateUpdateSchema = { $channel_id: String, self_mute: Boolean, self_deaf: Boolean, - self_video: Boolean, + $self_video: Boolean, //required in docs but bots don't always send it }; export interface VoiceStateUpdateSchema { @@ -11,5 +11,5 @@ export interface VoiceStateUpdateSchema { channel_id?: string; self_mute: boolean; self_deaf: boolean; - self_video: boolean; -} + self_video?: boolean; +} \ No newline at end of file diff --git a/webrtc/.vscode/launch.json b/webrtc/.vscode/launch.json index 92403164..49584172 100644 --- a/webrtc/.vscode/launch.json +++ b/webrtc/.vscode/launch.json @@ -17,7 +17,9 @@ ], "cwd": "${workspaceRoot}", "protocol": "inspector", - "internalConsoleOptions": "openOnSessionStart" + "internalConsoleOptions": "openOnSessionStart", + "sourceMaps": true, + "resolveSourceMapLocations": null, } ] } \ No newline at end of file diff --git a/webrtc/src/Server.ts b/webrtc/src/Server.ts index dcbf216a..0145a221 100644 --- a/webrtc/src/Server.ts +++ b/webrtc/src/Server.ts @@ -1,7 +1,7 @@ import { Server as WebSocketServer } from "ws"; -import { WebSocket, Payload, CLOSECODES } from "@fosscord/gateway"; +import { WebSocket, CLOSECODES } from "@fosscord/gateway"; import { Config, initDatabase } from "@fosscord/util"; -import OPCodeHandlers from "./opcodes"; +import OPCodeHandlers, { Payload } from "./opcodes"; import { setHeartbeat } from "./util"; import * as mediasoup from "mediasoup"; import { types as MediasoupTypes } from "mediasoup"; @@ -26,8 +26,16 @@ export class Server { socket.on("message", async (message: string) => { const payload: Payload = JSON.parse(message); + console.log(payload); + if (OPCodeHandlers[payload.op]) - await OPCodeHandlers[payload.op].call(this, socket, payload); + try { + await OPCodeHandlers[payload.op].call(this, socket, payload); + } + catch (e) { + console.error(e); + socket.close(CLOSECODES.Unknown_error); + } else { console.error(`Unimplemented`, payload); socket.close(CLOSECODES.Unknown_opcode); diff --git a/webrtc/src/opcodes/Identify.ts b/webrtc/src/opcodes/Identify.ts index 82f327be..e965e3de 100644 --- a/webrtc/src/opcodes/Identify.ts +++ b/webrtc/src/opcodes/Identify.ts @@ -1,9 +1,38 @@ -import { WebSocket } from "@fosscord/gateway"; +import { WebSocket, CLOSECODES } from "@fosscord/gateway"; import { Payload } from "./index"; -import { VoiceOPCodes } from "@fosscord/util"; +import { VoiceOPCodes, Session, User, Guild } from "@fosscord/util"; import { Server } from "../Server"; -export async function onIdentify(this: Server, socket: WebSocket, data: Payload) { +export interface IdentifyPayload extends Payload { + d: { + server_id: string, //guild id + session_id: string, //gateway session + streams: Array<{ + type: string, + rid: string, //number + quality: number, + }>, + token: string, //voice_states token + user_id: string, + video: boolean, + }; +} + +export async function onIdentify(this: Server, socket: WebSocket, data: IdentifyPayload) { + + const session = await Session.findOneOrFail( + { session_id: data.d.session_id, }, + { + where: { user_id: data.d.user_id }, + relations: ["user"] + } + ); + const user = session.user; + const guild = await Guild.findOneOrFail({ id: data.d.server_id }); + + if (!guild.members.find(x => x.id === user.id)) + return socket.close(CLOSECODES.Invalid_intent); + var transport = await this.mediasoupRouters[0].createWebRtcTransport({ listenIps: [{ ip: "0.0.0.0", announcedIp: "127.0.0.1" }], enableUdp: true, @@ -40,15 +69,17 @@ export async function onIdentify(this: Server, socket: WebSocket, data: Payload) socket.send(JSON.stringify({ op: VoiceOPCodes.READY, d: { - streams: [], + streams: [...data.d.streams.map(x => ({ ...x, rtx_ssrc: 1311886, ssrc: 1311885, active: false, }))], ssrc: 1, ip: transport.iceCandidates[0].ip, port: transport.iceCandidates[0].port, modes: [ "aead_aes256_gcm_rtpsize", - // "xsalsa20_poly1305", - // "xsalsa20_poly1305_suffix", - // "xsalsa20_poly1305_lite", + "aead_aes256_gcm", + "xsalsa20_poly1305_lite_rtpsize", + "xsalsa20_poly1305_lite", + "xsalsa20_poly1305_suffix", + "xsalsa20_poly1305" ], heartbeat_interval: 1, experiments: [], diff --git a/webrtc/src/opcodes/index.ts b/webrtc/src/opcodes/index.ts index 36d30e7d..9b1eb270 100644 --- a/webrtc/src/opcodes/index.ts +++ b/webrtc/src/opcodes/index.ts @@ -3,9 +3,9 @@ import { VoiceOPCodes } from "@fosscord/util"; export interface Payload { op: number; - d?: any; - s?: number; - t?: string; + d: any; + s: number; + t: string; } import { onIdentify } from "./Identify";