diff --git a/server.js b/server.js index 3833fc1..c3124e0 100644 --- a/server.js +++ b/server.js @@ -126,10 +126,104 @@ app.get("/lobby/submit/", async (request, response) => { /** Lobby submission documentation */ - response.status(503).json({ - INFORMATION: "THE LOBBY SUBMISSION ENDPOINT IS NOT ACTIVE, TRY AGAIN LATER.", - VERSION: 1.0 - }); + if (typeof request.query.name === 'undefined' || typeof request.query.ip === 'undefined' || typeof request.query.version === 'undefined' || request.query.name === '' || request.query.ip === '' || request.query.version === '') { + response.status(403).json({ + Info : "Forbidden", + Reason : "Missing requirements", + POSTSTATE : false + }); + } else { + if (requestEnable) { + var o_id = new mongodb.ObjectID(); + var ar; + auth.insertOne({ + _id : o_id, + type : 3, + LobbyName : request.query.name, + LobbyIP : request.query.ip, + LobbyVersion : request.query.version, + status : false + }) + await auth.findOne({_id: o_id}, (err, res) => { + const delay = ms => new Promise(resolve => setTimeout(resolve, ms)) + const dec = async i => (await delay(200), --i) + ar = res; + const verifyUser = async () => { + let responseEnabled = true; + let enableLookup = true; + let i = 8; + let timeout = 7; + while(i = await dec(i)) + try { + if (enableLookup) { + timeout = timeout - 1; + if (timeout > 0) { + await auth.findOne({_id: o_id}, (err, res) => { + if (res.status) { + if (responseEnabled) { + timeout = 0; + i = 1; + if (res.type == 4 && res.lobbyPosted == true) { + responseEnabled = false; + enableLookup = false; + response.status(200).json({ + Info: "Good", + LBN : res.lobbyName, + SECRET : res.lobbySecret, + POSTSTATE : res.lobbyPosted + }); + res = null; + } else { + responseEnabled = false; + ar = null; + res = null; + response.status(403).json({ + Info: "Forbidden", + Message: "Something went wrong.", + POSTSTATE : false + }); + } + } + } + }); + } else { + if (responseEnabled) { + response.status(403).json({ + Info: "Forbidden", + Message: "Something went wrong.", + POSTSTATE : false + }); + responseEnabled = false; + ar = null; + res = null; + } + } + } + } catch (err) { + enableLookup = false; + res = null; + if (responseEnabled) { + response.status(503).json({ + Info: "Forbidden", + Message: "Something went wrong...", + POSTSTATE : false + }); + } + responseEnabled = false; + console.log(err); + timeout = 1; + } + } + verifyUser(); + }); + } else { + response.status(503).json({ + Info: "Forbidden", + Message: "The server is starting up, please retry again in a moment.", + POSTSTATE : false + }); + } + } }); app.get("/lobby/remove/", async (request, response) => { /**