Nicknames and XMPP Domain fix

This commit is contained in:
Lawin0129
2023-06-16 19:16:21 +01:00
parent 3874873467
commit 9481eae896
3 changed files with 55 additions and 55 deletions
+42 -42
View File
@@ -20,6 +20,48 @@ app.get("/friends/api/public/list/fortnite/*/recentPlayers", (req, res) => {
res.json([]);
});
app.all("/friends/api/v1/*/friends/:friendId/alias", verifyToken, getRawBody, async (req, res) => {
let friends = await Friends.findOne({ accountId: req.user.accountId });
let validationFail = () => error.createError(
"errors.com.epicgames.validation.validation_failed",
"Validation Failed. Invalid fields were [alias]",
["[alias]"], 1040, undefined, 404, res
);
const allowedCharacters = (" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~").split("");
for (let character of req.rawBody) {
if (!allowedCharacters.includes(character)) return validationFail();
}
if (!friends.list.accepted.find(i => i.accountId == req.params.friendId)) return error.createError(
"errors.com.epicgames.friends.friendship_not_found",
`Friendship between ${req.user.accountId} and ${req.params.friendId} does not exist`,
[req.user.accountId,req.params.friendId], 14004, undefined, 404, res
);
const friendIndex = friends.list.accepted.findIndex(i => i.accountId == req.params.friendId);
switch (req.method) {
case "PUT":
if ((req.rawBody < 3) || (req.rawBody > 16)) return validationFail();
friends.list.accepted[friendIndex].alias = req.rawBody;
await friends.updateOne({ $set: { list: friends.list } });
break;
case "DELETE":
friends.list.accepted[friendIndex].alias = "";
await friends.updateOne({ $set: { list: friends.list } });
break;
}
res.status(204).end();
});
app.get("/friends/api/public/friends/:accountId", verifyToken, async (req, res) => {
let response = [];
@@ -170,48 +212,6 @@ app.get("/friends/api/public/blocklist/*", verifyToken, async (req, res) => {
});
});
app.all("/friends/api/v1/*/friends/:friendId/alias", verifyToken, getRawBody, async (req, res) => {
let friends = await Friends.findOne({ accountId: req.user.accountId }).lean();
let validationFail = () => error.createError(
"errors.com.epicgames.validation.validation_failed",
"Validation Failed. Invalid fields were [alias]",
["[alias]"], 1040, undefined, 404, res
);
const allowedCharacters = (" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~").split("");
for (let character of req.rawBody) {
if (!allowedCharacters.includes(character)) return validationFail();
}
if (!friends.list.accepted.find(i => i.accountId == req.params.friendId)) return error.createError(
"errors.com.epicgames.friends.friendship_not_found",
`Friendship between ${req.user.accountId} and ${req.params.friendId} does not exist`,
[req.user.accountId,req.params.friendId], 14004, undefined, 404, res
);
const friendIndex = friends.list.accepted.findIndex(i => i.accountId == req.params.friendId);
switch (req.method) {
case "PUT":
if ((req.rawBody < 3) || (req.rawBody > 16)) return validationFail();
friends.list.accepted[friendIndex].alias = req.rawBody;
await friends.updateOne({ $set: { list: friends.list } });
break;
case "DELETE":
friends.list.accepted[friendIndex].alias = "";
await friends.updateOne({ $set: { list: friends.list } });
break;
}
res.status(204).end();
});
function getRawBody(req, res, next) {
if (req.headers["content-length"]) {
if (Number(req.headers["content-length"]) > 16) return res.status(403).json({ "error": "File size must be 16 bytes or less." });
+2 -2
View File
@@ -222,7 +222,7 @@ function sendXmppMessageToAll(body) {
global.Clients.forEach(ClientData => {
ClientData.client.send(XMLBuilder.create("message")
.attribute("from", "xmpp-admin@prod.ol.epicgames.com")
.attribute("from", `xmpp-admin@${global.xmppDomain}`)
.attribute("xmlns", "jabber:client")
.attribute("to", ClientData.jid)
.element("body", `${body}`).up().toString());
@@ -237,7 +237,7 @@ function sendXmppMessageToId(body, toAccountId) {
if (!receiver) return;
receiver.client.send(XMLBuilder.create("message")
.attribute("from", "xmpp-admin@prod.ol.epicgames.com")
.attribute("from", `xmpp-admin@${global.xmppDomain}`)
.attribute("to", receiver.jid)
.attribute("xmlns", "jabber:client")
.element("body", `${body}`).up().toString());
+11 -11
View File
@@ -14,7 +14,7 @@ const port = 80;
const wss = new WebSocket({ server: app.listen(port) });
const matchmaker = require("../matchmaker/matchmaker.js");
let domain = "prod.ol.epicgames.com";
global.xmppDomain = "prod.ol.epicgames.com";
global.Clients = [];
@@ -78,7 +78,7 @@ wss.on('connection', async (ws) => {
ws.send(XMLBuilder.create("open")
.attribute("xmlns", "urn:ietf:params:xml:ns:xmpp-framing")
.attribute("from", domain)
.attribute("from", global.xmppDomain)
.attribute("id", ID)
.attribute("version", "1.0")
.attribute("xml:lang", "en").toString());
@@ -147,7 +147,7 @@ wss.on('connection', async (ws) => {
if (!findResource.content) return;
resource = findResource.content;
jid = `${accountId}@${domain}/${resource}`;
jid = `${accountId}@${global.xmppDomain}/${resource}`;
ws.send(XMLBuilder.create("iq")
.attribute("to", jid)
@@ -164,7 +164,7 @@ wss.on('connection', async (ws) => {
ws.send(XMLBuilder.create("iq")
.attribute("to", jid)
.attribute("from", domain)
.attribute("from", global.xmppDomain)
.attribute("id", "_xmpp_session1")
.attribute("xmlns", "jabber:client")
.attribute("type", "result").toString());
@@ -177,7 +177,7 @@ wss.on('connection', async (ws) => {
ws.send(XMLBuilder.create("iq")
.attribute("to", jid)
.attribute("from", domain)
.attribute("from", global.xmppDomain)
.attribute("id", msg.root.attributes.id)
.attribute("xmlns", "jabber:client")
.attribute("type", "result").toString());
@@ -255,7 +255,7 @@ wss.on('connection', async (ws) => {
case "unavailable":
if (!msg.root.attributes.to) return;
if (msg.root.attributes.to.endsWith(`@muc.${domain}`) || msg.root.attributes.to.split("/")[0].endsWith(`@muc.${domain}`)) {
if (msg.root.attributes.to.endsWith(`@muc.${global.xmppDomain}`) || msg.root.attributes.to.split("/")[0].endsWith(`@muc.${global.xmppDomain}`)) {
if (!msg.root.attributes.to.toLowerCase().startsWith("party-")) return;
let roomName = msg.root.attributes.to.split("@")[0];
@@ -275,7 +275,7 @@ wss.on('connection', async (ws) => {
.attribute("type", "unavailable")
.element("x").attribute("xmlns", "http://jabber.org/protocol/muc#user")
.element("item")
.attribute("nick", getMUCmember(roomName, displayName, accountId, resource).replace(`${roomName}@muc.${domain}/`, ""))
.attribute("nick", getMUCmember(roomName, displayName, accountId, resource).replace(`${roomName}@muc.${global.xmppDomain}/`, ""))
.attribute("jid", jid)
.attribute("role", "none").up()
.element("status").attribute("code", "110").up()
@@ -305,7 +305,7 @@ wss.on('connection', async (ws) => {
.attribute("xmlns", "jabber:client")
.element("x").attribute("xmlns", "http://jabber.org/protocol/muc#user")
.element("item")
.attribute("nick", getMUCmember(roomName, displayName, accountId, resource).replace(`${roomName}@muc.${domain}/`, ""))
.attribute("nick", getMUCmember(roomName, displayName, accountId, resource).replace(`${roomName}@muc.${global.xmppDomain}/`, ""))
.attribute("jid", jid)
.attribute("role", "participant")
.attribute("affiliation", "none").up()
@@ -325,7 +325,7 @@ wss.on('connection', async (ws) => {
.element("x")
.attribute("xmlns", "http://jabber.org/protocol/muc#user")
.element("item")
.attribute("nick", getMUCmember(roomName, ClientData.displayName, ClientData.accountId, ClientData.resource).replace(`${roomName}@muc.${domain}/`, ""))
.attribute("nick", getMUCmember(roomName, ClientData.displayName, ClientData.accountId, ClientData.resource).replace(`${roomName}@muc.${global.xmppDomain}/`, ""))
.attribute("jid", ClientData.jid)
.attribute("role", "participant")
.attribute("affiliation", "none").up().up().toString());
@@ -339,7 +339,7 @@ wss.on('connection', async (ws) => {
.element("x")
.attribute("xmlns", "http://jabber.org/protocol/muc#user")
.element("item")
.attribute("nick", getMUCmember(roomName, displayName, accountId, resource).replace(`${roomName}@muc.${domain}/`, ""))
.attribute("nick", getMUCmember(roomName, displayName, accountId, resource).replace(`${roomName}@muc.${global.xmppDomain}/`, ""))
.attribute("jid", jid)
.attribute("role", "participant")
.attribute("affiliation", "none").up().up().toString());
@@ -516,7 +516,7 @@ function sendXmppMessageToClient(senderJid, msg, body) {
}
function getMUCmember(roomName, displayName, accountId, resource) {
return `${roomName}@muc.${domain}/${encodeURI(displayName)}:${accountId}:${resource}`;
return `${roomName}@muc.${global.xmppDomain}/${encodeURI(displayName)}:${accountId}:${resource}`;
}
function isObject(value) {