Initial commit

This commit is contained in:
2026-08-24 22:20:36 +02:00
commit 62f7b1278a
251 changed files with 16670 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
const crypto = require("crypto");
const redis = require("../Miscellaneous/redis");
const Game = require("../Game/Game");
const HTTP_BAD_REQUEST = "403";
function badRequest(res) {
res.cork(() => res.isAborted ? null : res
.writeStatus(HTTP_BAD_REQUEST)
.end());
};
module.exports = async function (res, req, context) {
const cookieHeader = req.getHeader("cookie");
const cookie = cookieHeader.split("ps=")[1];
res.onAborted(() => {
res.isAborted = true;
console.info("ABORTED!!!");
});
if (!cookie) {
console.info("upgrade 1")
return badRequest(res);
};
const secWebSocketKey = req.getHeader("sec-websocket-key");
const secWebSocketProtocol = req.getHeader("sec-websocket-protocol");
const secWebSocketExtensions = req.getHeader("sec-websocket-extensions");
const userAgent = req.getHeader("user-agent");
const ip = req.getHeader("x-forwarded-for");
const formattedCookie = cookie.split(".")[0].slice(4);
const cookieInDB = await redis.get(`sess:${formattedCookie}`);
if (!cookieInDB) {
console.info("upgrade 2")
return badRequest(res);
};
const parsedCookie = JSON.parse(cookieInDB);
if (!parsedCookie.accountID) {
console.info("upgrade 3")
return badRequest(res);
};
const hash = crypto.createHash("md5")
.update(userAgent)
.update(ip)
.digest("hex");
// if (hash !== parsedCookie.fingerprint) return badRequest(res);
const { accountID, username, isAdmin } = parsedCookie;
console.info("Before upgrading connection for", username);
res.cork(() => res.upgrade({ accountID, username, cookie, isAdmin },
secWebSocketKey,
secWebSocketProtocol,
secWebSocketExtensions,
context));
};