summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--package.json4
-rw-r--r--src/events/Connection.ts9
-rw-r--r--src/events/Message.ts5
-rw-r--r--src/util/Send.ts7
4 files changed, 18 insertions, 7 deletions
diff --git a/package.json b/package.json

index 20dcdecd..8bb9ccaf 100644 --- a/package.json +++ b/package.json
@@ -15,7 +15,6 @@ "dependencies": { "@fosscord/server-util": "^1.0.7", "dotenv": "^8.2.0", - "erlpack": "^0.1.3", "jsonwebtoken": "^8.5.1", "lambert-server": "^1.1.7", "missing-native-js-functions": "^1.2.3", @@ -29,6 +28,7 @@ "@types/jsonwebtoken": "^8.5.0", "@types/mongoose-autopopulate": "^0.10.1", "@types/uuid": "^8.3.0", - "@types/ws": "^7.4.0" + "@types/ws": "^7.4.0", + "erlpack": "^0.1.3" } } diff --git a/src/events/Connection.ts b/src/events/Connection.ts
index 96c7c441..473c992c 100644 --- a/src/events/Connection.ts +++ b/src/events/Connection.ts
@@ -6,6 +6,10 @@ import { setHeartbeat } from "../util/setHeartbeat"; import { Send } from "../util/Send"; import { CLOSECODES, OPCODES } from "../util/Constants"; import { createDeflate } from "zlib"; +var erlpack: any; +try { + erlpack = require("erlpack"); +} catch (error) {} // TODO: check rate limit // TODO: specify rate limit in config @@ -19,7 +23,10 @@ export async function Connection(this: Server, socket: WebSocket, request: Incom const { searchParams } = new URL(`http://localhost${request.url}`); // @ts-ignore socket.encoding = searchParams.get("encoding") || "json"; - if (!["json", "etf"].includes(socket.encoding)) return socket.close(CLOSECODES.Decode_error); + if (!["json", "etf"].includes(socket.encoding)) { + if (socket.encoding === "etf" && erlpack) throw new Error("Erlpack is not installed: 'npm i -D erlpack'"); + return socket.close(CLOSECODES.Decode_error); + } // @ts-ignore socket.version = Number(searchParams.get("version")) || 8; diff --git a/src/events/Message.ts b/src/events/Message.ts
index 2d461e1d..37328b07 100644 --- a/src/events/Message.ts +++ b/src/events/Message.ts
@@ -1,5 +1,8 @@ import WebSocket, { Data } from "../util/WebSocket"; -import erlpack from "erlpack"; +var erlpack: any; +try { + erlpack = require("erlpack"); +} catch (error) {} import OPCodeHandlers from "../opcodes"; import { Payload, CLOSECODES } from "../util/Constants"; import { instanceOf, Tuple } from "lambert-server"; diff --git a/src/util/Send.ts b/src/util/Send.ts
index b691b525..09e947a5 100644 --- a/src/util/Send.ts +++ b/src/util/Send.ts
@@ -1,7 +1,8 @@ -import erlpack from "erlpack"; -import { promisify } from "util"; +var erlpack: any; +try { + erlpack = require("erlpack"); +} catch (error) {} import { Payload } from "../util/Constants"; -import { deflateSync } from "zlib"; import WebSocket from "./WebSocket";