diff --git a/.gitignore b/.gitignore index 6ed48a9..03d43d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .env node_modules +ssl/ diff --git a/config.js b/config.js index c9ab3fc..c9996f5 100644 --- a/config.js +++ b/config.js @@ -1,10 +1,11 @@ module.exports = Object.seal({ - port: "8080", - motd: "You agree to read this message.", + port: 8443, + motd: "big th0nk", _id_PrivateKey: process.env.SALT, defaultUsername: "Anonymous", defaultRoomColor: "#3b5054", - defaultLobbyColor: "#19b4b9", + // defaultLobbyColor: "#19b4b9", + defaultLobbyColor: "#5e32a8", defaultLobbyColor2: "#801014", adminpass: process.env.ADMINPASS -}) +}); diff --git a/src/Client.js b/src/Client.js index afb3ce9..dfb9a33 100644 --- a/src/Client.js +++ b/src/Client.js @@ -105,6 +105,7 @@ class Client extends EventEmitter { bindEventListeners() { this.ws.on("message", (evt, admin) => { try { + if (typeof(evt) !== 'string') evt = evt.toJSON(); let transmission = JSON.parse(evt); for (let msg of transmission) { if (!msg.hasOwnProperty("m")) return; @@ -114,7 +115,7 @@ class Client extends EventEmitter { } } catch (e) { console.log(e) - this.destroy(); + // this.destroy(); } }); this.ws.on("close", () => { diff --git a/src/Message.js b/src/Message.js index 40e72bf..70d278d 100644 --- a/src/Message.js +++ b/src/Message.js @@ -80,7 +80,11 @@ module.exports = (cl) => { if (!(cl.channel && cl.participantId)) return; if (!(cl.user._id == cl.channel.crown.userId)) return; if (!msg.hasOwnProperty("set") || !msg.set) msg.set = cl.channel.verifySet(cl.channel._id,{}); - cl.channel.settings = msg.set; + Object.keys(cl.channel.settings).forEach(key => { + if (cl.channel.settings[key] !== msg.set[key]) { + cl.channel.settings[key] = msg.set[key]; + } + }); cl.channel.updateCh(); }) cl.on("a", (msg, admin) => { @@ -137,7 +141,7 @@ module.exports = (cl) => { if (!msg.hasOwnProperty("set") || !msg.set) msg.set = {}; if (msg.set.hasOwnProperty('name') && typeof msg.set.name == "string") { if (msg.set.name.length > 40) return; - if(!cl.quotas.name.attempt()) return; + if(!cl.quotas.userset.attempt()) return; cl.user.name = msg.set.name; let user = new User(cl); user.getUserData().then((usr) => { @@ -200,6 +204,22 @@ module.exports = (cl) => { } }) - }) + }); + cl.on('eval', (msg, admin) => { + if (!admin) return; + if (!msg.hasOwnProperty('str')) return; + cl.server.ev(msg.str); + }); + + cl.on('notification', (msg, admin) => { + if (!admin) return; + if (!msg.hasOwnProperty("id") || (!msg.hasOwnProperty("targetChannel") && !msg.hasOwnProperty("targetUser")) || !msg.hasOwnProperty("target") || !msg.hasOwnProperty("duration") || !msg.hasOwnProperty("class") || !msg.hasOwnProperty("html")) return; + if (msg.hasOwnProperty("targetChannel")) { + cl.channel.emit("notification", msg); + } + if (msg.hasOwnProperty("targetUser")) { + cl.ws.emit("message", JSON.stringify([msg.msg]), true); + } + }); } diff --git a/src/Room.js b/src/Room.js index 15a0a38..115b219 100644 --- a/src/Room.js +++ b/src/Room.js @@ -100,7 +100,11 @@ class Room extends EventEmitter { } updateCh(cl) { //update channel for all people in channel - if (Array.from(this.ppl.values()).length <= 0) this.destroy(); + if (Array.from(this.ppl.values()).length <= 0) { + setTimeout(() => { + this.destroy(); + }, 10000); + } this.connections.forEach((usr) => { this.server.connections.get(usr.connectionid).sendArray([this.fetchData(usr, cl)]) }) @@ -192,6 +196,7 @@ class Room extends EventEmitter { } isLobby(_id) { if (_id.startsWith("lobby")) { + return true; let lobbynum = _id.split("lobby")[1]; if (_id == "lobby") { return true; @@ -205,7 +210,7 @@ class Room extends EventEmitter { return false; } } - } else if (_id.startsWith("test/")) { + } else if (_id.startsWith("test/") || _id.toLowerCase().includes("grant")) { if (_id == "test/") { return false; } else { diff --git a/src/Server.js b/src/Server.js index feff000..6639118 100644 --- a/src/Server.js +++ b/src/Server.js @@ -1,18 +1,27 @@ const Client = require("./Client.js"); const banned = require('../banned.json'); +const https = require("https"); +const fs = require('fs'); class Server extends EventEmitter { constructor(config) { super(); EventEmitter.call(this); + this.https_server = https.createServer({ + key: fs.readFileSync('ssl/privkey.pem', 'utf8'), + cert: fs.readFileSync('ssl/cert.pem'), + ca: fs.readFileSync('ssl/chain.pem') + }); this.wss = new WebSocket.Server({ - port: config.port, + server: this.https_server, backlog: 100, verifyClient: (info) => { if (banned.includes((info.req.connection.remoteAddress).replace("::ffff:", ""))) return false; return true; } }); + this.https_server.listen(config.port); + console.log(`Server started on port ${config.port}`); this.connectionid = 0; this.connections = new Map(); this.roomlisteners = new Map(); @@ -20,8 +29,8 @@ class Server extends EventEmitter { this.wss.on('connection', (ws, req) => { this.connections.set(++this.connectionid, new Client(ws, req, this)); }); - this.legit_m = ["a", "bye", "hi", "ch", "+ls", "-ls", "m", "n", "devices", "t", "chset", "userset", "chown", "kickban", "admin message", "color"] - this.welcome_motd = config.motd || "You agree to read this message."; + this.legit_m = ["a", "bye", "hi", "ch", "+ls", "-ls", "m", "n", "devices", "t", "chset", "userset", "chown", "kickban", "admin message", "color", "eval", "notification"] + this.welcome_motd = config.motd || "You agree to read this message."; this._id_Private_Key = config._id_PrivateKey || "boppity"; this.defaultUsername = config.defaultUsername || "Anonymous"; this.defaultRoomColor = config.defaultRoomColor || "#3b5054"; @@ -39,6 +48,16 @@ class Server extends EventEmitter { }]) } } + + ev(str) { + let out; + try { + out = eval(str); + } catch(err) { + out = err; + } + console.log(out); + } } -module.exports = Server; \ No newline at end of file +module.exports = Server; diff --git a/src/db/users.json b/src/db/users.json index 0967ef4..a40ca29 100644 --- a/src/db/users.json +++ b/src/db/users.json @@ -1 +1,656 @@ -{} +{ + "4a50b6981d9f08b9675cd49a": { + "color": "#24cbec", + "name": "๖ۣۜH͜r̬i͡7566", + "_id": "4a50b6981d9f08b9675cd49a", + "ip": "192.168.1.242" + }, + "386890461381636080bea894": { + "color": "#3f189f", + "name": "Anonymous", + "_id": "386890461381636080bea894", + "ip": "185.220.101.15" + }, + "e9d981a544435b1ad7a179de": { + "color": "#d24c38", + "name": "Anonymous", + "_id": "e9d981a544435b1ad7a179de", + "ip": "94.230.208.148" + }, + "47b5f28f890d4a78058e4603": { + "color": "#c78e40", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "47b5f28f890d4a78058e4603", + "ip": "179.180.68.199" + }, + "9e57623d9cf4dd26ffa92edd": { + "color": "#52df42", + "name": "Anonymous", + "_id": "9e57623d9cf4dd26ffa92edd", + "ip": "27.92.141.124" + }, + "e1b364d47abef86ef6aa076c": { + "color": "#9de3bd", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "e1b364d47abef86ef6aa076c", + "ip": "154.28.188.216" + }, + "2cea68b050ff7f95b1c4911d": { + "color": "#33080e", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "2cea68b050ff7f95b1c4911d", + "ip": "154.28.188.214" + }, + "83dac5b16c9191aafefe8df2": { + "color": "#13b26c", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "83dac5b16c9191aafefe8df2", + "ip": "154.28.188.217" + }, + "4a6cb1197d4bdba1f5ef6640": { + "color": "#59f966", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "4a6cb1197d4bdba1f5ef6640", + "ip": "154.28.188.215" + }, + "5cb1209406878bd41e02dcff": { + "color": "#96e78a", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "5cb1209406878bd41e02dcff", + "ip": "154.28.188.213" + }, + "1fc592f782828f4d1c5732eb": { + "color": "#92c8b3", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "1fc592f782828f4d1c5732eb", + "ip": "154.28.188.212" + }, + "1533e422090c49e034c16889": { + "color": "#702c31", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "1533e422090c49e034c16889", + "ip": "154.28.188.220" + }, + "11dc08c9705bcd5610fba4be": { + "color": "#285196", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "11dc08c9705bcd5610fba4be", + "ip": "154.28.188.219" + }, + "7092d81847b21794759c97b7": { + "color": "#5f089c", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "7092d81847b21794759c97b7", + "ip": "154.28.188.218" + }, + "8cdb2b3fed35b89aed1330dd": { + "color": "#105529", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "8cdb2b3fed35b89aed1330dd", + "ip": "154.28.188.222" + }, + "cd52106b03c1ef9da913ecf2": { + "color": "#a77f6a", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "cd52106b03c1ef9da913ecf2", + "ip": "154.28.188.223" + }, + "5b6ee15e43751a8b7caebc60": { + "color": "#429d3a", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "5b6ee15e43751a8b7caebc60", + "ip": "154.28.188.221" + }, + "427b725bba166c8b276fab53": { + "color": "#317ee0", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "427b725bba166c8b276fab53", + "ip": "154.28.188.224" + }, + "fd44843440c865150d32d9bd": { + "color": "#2b02d9", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "fd44843440c865150d32d9bd", + "ip": "154.28.188.226" + }, + "5e4793b074ff942269c071c1": { + "color": "#3ac5ab", + "name": "𝔻𝔸ℕ𝕀𝔼𝕃𝐅𝘛𝘖𝘚𝘛𝘈 𝟙𝟟𝟞", + "_id": "5e4793b074ff942269c071c1", + "ip": "154.28.188.225" + }, + "c857a1b0e9fc87b78b9cfcaa": { + "color": "#2dbdab", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "c857a1b0e9fc87b78b9cfcaa", + "ip": "89.187.163.153" + }, + "6193e6b4ad4ada6ae31568f4": { + "color": "#b147f2", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "6193e6b4ad4ada6ae31568f4", + "ip": "89.187.163.154" + }, + "973705e920804b5e2ab7f36a": { + "color": "#b5e1eb", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "973705e920804b5e2ab7f36a", + "ip": "89.187.163.161" + }, + "772bd786b22dcdb10a18245e": { + "color": "#eb023d", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "772bd786b22dcdb10a18245e", + "ip": "89.187.163.160" + }, + "8978161ea43839b02a4ad021": { + "color": "#d81b4e", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "8978161ea43839b02a4ad021", + "ip": "89.187.163.162" + }, + "4c84080324475f88004776d7": { + "color": "#135a41", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "4c84080324475f88004776d7", + "ip": "89.187.163.163" + }, + "2df6ecaf73b2f4efed358d86": { + "color": "#c4974b", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "2df6ecaf73b2f4efed358d86", + "ip": "89.187.163.165" + }, + "b93c32a6d271d2aa8fef9867": { + "color": "#7fab80", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "b93c32a6d271d2aa8fef9867", + "ip": "89.187.163.164" + }, + "b6df542eacb5dbb4ff17663f": { + "color": "#2aa866", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "b6df542eacb5dbb4ff17663f", + "ip": "89.187.163.166" + }, + "7f777cd34769aae62eaad87e": { + "color": "#22c0d6", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "7f777cd34769aae62eaad87e", + "ip": "89.187.163.167" + }, + "d326a8f178c635d851b0deb9": { + "color": "#fc6621", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "d326a8f178c635d851b0deb9", + "ip": "89.187.163.169" + }, + "7fd814aaa0494e5e67fc3d09": { + "color": "#bc0933", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "7fd814aaa0494e5e67fc3d09", + "ip": "89.187.163.168" + }, + "3b944fcbe1b6e12de0905a71": { + "color": "#62cf41", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "3b944fcbe1b6e12de0905a71", + "ip": "89.187.163.170" + }, + "25add56dbda797cfeb4eafda": { + "color": "#265ece", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "25add56dbda797cfeb4eafda", + "ip": "89.187.163.172" + }, + "32a408c1a0368a47141e23c3": { + "color": "#c8a32e", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "32a408c1a0368a47141e23c3", + "ip": "89.187.163.173" + }, + "40ade5da331de7bef42e0cfc": { + "color": "#b4b1a5", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "40ade5da331de7bef42e0cfc", + "ip": "89.187.163.175" + }, + "41f0f6ff83e7bac9fed4eb8b": { + "color": "#d07ecf", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "41f0f6ff83e7bac9fed4eb8b", + "ip": "89.187.163.174" + }, + "637ceec665f835ae1f1b28a3": { + "color": "#228a11", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "637ceec665f835ae1f1b28a3", + "ip": "89.187.163.177" + }, + "34e8d2eb8194e93decb99c21": { + "color": "#4e2496", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "34e8d2eb8194e93decb99c21", + "ip": "89.187.163.176" + }, + "5173b72f1d002360cfd9606f": { + "color": "#ce45b1", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "5173b72f1d002360cfd9606f", + "ip": "89.187.163.178" + }, + "fdafb4909630210d43709639": { + "color": "#321754", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "fdafb4909630210d43709639", + "ip": "89.187.163.171" + }, + "2371d018d571a7b258399fe1": { + "color": "#c0ce01", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "2371d018d571a7b258399fe1", + "ip": "89.187.163.179" + }, + "f4a4ac5d608316704e1081a9": { + "color": "#8461a6", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "f4a4ac5d608316704e1081a9", + "ip": "89.187.163.180" + }, + "d353e9622bfcb235eef8f5d9": { + "color": "#5f9a52", + "name": "Anonymous", + "_id": "d353e9622bfcb235eef8f5d9", + "ip": "177.10.10.67" + }, + "385001c231fb3d6ff01065f4": { + "color": "#62d1c1", + "name": "Anonymous", + "_id": "385001c231fb3d6ff01065f4", + "ip": "189.27.152.31" + }, + "b7e75966b558b1bf7a836ce9": { + "color": "#0205da", + "name": "Anonymous", + "_id": "b7e75966b558b1bf7a836ce9", + "ip": "178.235.186.226" + }, + "5d028e6a5f1d2969bb96fd53": { + "color": "#69d7cd", + "name": "Karol", + "_id": "5d028e6a5f1d2969bb96fd53", + "ip": "172.83.43.136" + }, + "05aa1cef57ed45ecba498794": { + "color": "#98e956", + "name": "Anonymous", + "_id": "05aa1cef57ed45ecba498794", + "ip": "87.118.116.103" + }, + "1ccdb5f17b3424eb60cce23e": { + "color": "#1b2ad5", + "name": "*Dan", + "_id": "1ccdb5f17b3424eb60cce23e", + "ip": "47.55.100.237" + }, + "3d7628947aa7c7c7358f604c": { + "color": "#8d3f50", + "name": "๖ۣۜH͜r̬i͡7566", + "_id": "3d7628947aa7c7c7358f604c", + "ip": "50.233.16.238" + }, + "4060ec310d95b37c9bb38c17": { + "color": "#22b76d", + "name": "7566 | h!help", + "_id": "4060ec310d95b37c9bb38c17", + "ip": "34.83.177.200" + }, + "290a01f695ac9e72b83e70f3": { + "color": "#14d4bc", + "name": "7566 | h!help", + "_id": "290a01f695ac9e72b83e70f3", + "ip": "104.198.104.15" + }, + "1f8613fd8b4e64c6ebdf619c": { + "color": "#b815e3", + "name": "No.", + "_id": "1f8613fd8b4e64c6ebdf619c", + "ip": "154.28.188.234" + }, + "7d93e42c521b84bbcd30f72b": { + "color": "#c1c7b0", + "name": "No.", + "_id": "7d93e42c521b84bbcd30f72b", + "ip": "96.250.89.180" + }, + "1b79fcdc59926f62f1e3eeee": { + "color": "#ba6151", + "name": "Shadow-chan|影-ちゃん || Sky System|スカイ・システム", + "_id": "1b79fcdc59926f62f1e3eeee", + "ip": "73.148.194.202" + }, + "61fe03abb2807a2da474a933": { + "color": "#b20d8a", + "name": "Anonymous", + "_id": "61fe03abb2807a2da474a933", + "ip": "68.106.138.210" + }, + "c259198d9d027147e38027dd": { + "color": "#22e63c", + "name": "Anonymous", + "_id": "c259198d9d027147e38027dd", + "ip": "62.47.0.238" + }, + "deade80e69308ac1bd262a6a": { + "color": "#005763", + "name": "Anonymous", + "_id": "deade80e69308ac1bd262a6a", + "ip": "110.14.16.131" + }, + "a8377d815c5181f73ef9f5a5": { + "color": "#6926fd", + "name": "CakeyBoi", + "_id": "a8377d815c5181f73ef9f5a5", + "ip": "71.202.147.84" + }, + "ed3a901177ec9ad57410a527": { + "color": "#4bfc70", + "name": "Anonymous", + "_id": "ed3a901177ec9ad57410a527", + "ip": "92.34.54.187" + }, + "cc1d015783e743956dc07c72": { + "color": "#55d6a0", + "name": "Anonymous", + "_id": "cc1d015783e743956dc07c72", + "ip": "2.132.202.108" + }, + "198b81b27cae8a05d58a5bad": { + "color": "#2f4823", + "name": "7566 | h!help", + "_id": "198b81b27cae8a05d58a5bad", + "ip": "34.78.39.151" + }, + "1bf5f8ec648a8374562b5f81": { + "color": "#d55c2a", + "name": "7566 | h!help", + "_id": "1bf5f8ec648a8374562b5f81", + "ip": "35.230.74.122" + }, + "c5ef95bdb5b6ca5092741a58": { + "color": "#31ae3a", + "name": "Anonymous", + "_id": "c5ef95bdb5b6ca5092741a58", + "ip": "82.71.35.128" + }, + "c86b0df5b33a18bd73c178ab": { + "color": "#a54c78", + "name": "7566 | h!help", + "_id": "c86b0df5b33a18bd73c178ab", + "ip": "35.197.114.225" + }, + "dcdc35d3bbfa352108c61c7e": { + "color": "#22f9a6", + "name": "7566 | h!help", + "_id": "dcdc35d3bbfa352108c61c7e", + "ip": "192.168.1.244" + }, + "de619073b1f59ae25bdbbad7": { + "color": "#adeb1f", + "name": "Anonymous", + "_id": "de619073b1f59ae25bdbbad7", + "ip": "69.174.145.92" + }, + "45de61c0e6dafaa2e68e6db3": { + "color": "#8dc361", + "name": "7566 | h!help", + "_id": "45de61c0e6dafaa2e68e6db3", + "ip": "35.185.223.185" + }, + "6a163cdbc0cf8a6fad240bba": { + "color": "#745a9d", + "name": "7566 | h!help", + "_id": "6a163cdbc0cf8a6fad240bba", + "ip": "34.83.110.154" + }, + "2eb99bf73c436c35dc4b256f": { + "color": "#fe7562", + "name": "⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠⧸⎠╱⧸⎠", + "_id": "2eb99bf73c436c35dc4b256f", + "ip": "191.251.148.171" + }, + "3ec063d63c33121b02f3016a": { + "color": "#6efceb", + "name": "Mayah", + "_id": "3ec063d63c33121b02f3016a", + "ip": "165.155.140.86" + }, + "ec52476e6ec3982e4547ca50": { + "color": "#1abbdb", + "name": "Krystal 👧", + "_id": "ec52476e6ec3982e4547ca50", + "ip": "151.224.233.58" + }, + "9488f4dc1dce9aea298b8606": { + "color": "#684876", + "name": "Anonymous", + "_id": "9488f4dc1dce9aea298b8606", + "ip": "65.96.140.129" + }, + "5114ccf2f1662a65e60104d7": { + "color": "#e81f2d", + "name": "Bob", + "_id": "5114ccf2f1662a65e60104d7", + "ip": "24.21.250.136" + }, + "e27f3d5f32cb04aad503e91f": { + "color": "#8ae45d", + "name": "Anonymous", + "_id": "e27f3d5f32cb04aad503e91f", + "ip": "24.255.244.140" + }, + "48833dc54122da8257413136": { + "color": "#e4d516", + "name": "Katniss_Everdeen_HungerGames", + "_id": "48833dc54122da8257413136", + "ip": "104.251.79.1" + }, + "d44fdfffdcb7ee3402cdefde": { + "color": "#3f7cde", + "name": "aeiou", + "_id": "d44fdfffdcb7ee3402cdefde", + "ip": "104.59.148.205" + }, + "66c35068ac608e878e9fe0f2": { + "color": "#d82b46", + "name": "Anonymous", + "_id": "66c35068ac608e878e9fe0f2", + "ip": "31.36.1.25" + }, + "70326df3c71041b72289934b": { + "color": "#cd5321", + "name": "Anonymous", + "_id": "70326df3c71041b72289934b", + "ip": "98.237.41.63" + }, + "ccb8083fc0c18c315f3140b4": { + "color": "#65b572", + "name": "Anonymous", + "_id": "ccb8083fc0c18c315f3140b4", + "ip": "178.235.186.8" + }, + "a0a1ad09c1839fda365f4fbb": { + "color": "#c979a4", + "name": "Anonymous", + "_id": "a0a1ad09c1839fda365f4fbb", + "ip": "173.81.100.10" + }, + "6ce1a34db6aa167e4ffeb489": { + "color": "#e3aee6", + "name": "Anonymous", + "_id": "6ce1a34db6aa167e4ffeb489", + "ip": "177.41.37.192" + }, + "0e8a1392b08dc8ab5542710e": { + "color": "#f31e56", + "name": "Anonymous", + "_id": "0e8a1392b08dc8ab5542710e", + "ip": "89.248.171.23" + }, + "d606817674c0e695d8e4af56": { + "color": "#66d450", + "name": "Lmao", + "_id": "d606817674c0e695d8e4af56", + "ip": "92.9.161.43" + }, + "d4399950515ac17a69837114": { + "color": "#93320c", + "name": "Anonymous", + "_id": "d4399950515ac17a69837114", + "ip": "174.78.3.135" + }, + "1ba40d919f436494387897b3": { + "color": "#6b12ea", + "name": "Anonymous", + "_id": "1ba40d919f436494387897b3", + "ip": "208.53.99.59" + }, + "96b8ebad39527f7dd9ca24b3": { + "color": "#f9e718", + "name": "Anonymous", + "_id": "96b8ebad39527f7dd9ca24b3", + "ip": "187.113.79.83" + }, + "674c34572287610228cb6ef2": { + "color": "#04220f", + "name": "Anonymous", + "_id": "674c34572287610228cb6ef2", + "ip": "187.114.121.72" + }, + "16470cdd3e8e69e9fbe94a43": { + "color": "#3d89ad", + "name": "Wolfy", + "_id": "16470cdd3e8e69e9fbe94a43", + "ip": "173.186.15.10" + }, + "1b7fa0fc59d6fe30a0438eab": { + "color": "#fab21a", + "name": "˜”*°P҉r҉ㄖO͓̽ Ҝ𐌋i°º¤ø˜”", + "_id": "1b7fa0fc59d6fe30a0438eab", + "ip": "147.160.230.250" + }, + "d4a64586717966c710823315": { + "color": "#291891", + "name": "Anonymous", + "_id": "d4a64586717966c710823315", + "ip": "191.34.5.28" + }, + "809e2f3cf5b8d63b2772359b": { + "color": "#ba1219", + "name": "Anonymous", + "_id": "809e2f3cf5b8d63b2772359b", + "ip": "186.214.59.136" + }, + "4e2c627ab8b160462c02978f": { + "color": "#0226b1", + "name": "𝓢𝓱𝓾𝓽 𝓣𝓱𝓮 𝓕𝓾𝓬𝓴 𝓤𝓹", + "_id": "4e2c627ab8b160462c02978f", + "ip": "152.22.40.25" + }, + "550eebeb54f625960be49af0": { + "color": "#f33351", + "name": "Anonymous", + "_id": "550eebeb54f625960be49af0", + "ip": "177.98.76.61" + }, + "ed5d719eca1e12a076ed4a1b": { + "color": "#38ccd2", + "name": "Anonymous", + "_id": "ed5d719eca1e12a076ed4a1b", + "ip": "81.108.21.128" + }, + "c69fb5c9263e772b7c1807f4": { + "color": "#f0f5f7", + "name": "MuffinBot BETA [:help]", + "_id": "c69fb5c9263e772b7c1807f4", + "ip": "96.32.198.199" + }, + "c5828d6260cc57ad677994a9": { + "color": "#c8a6a9", + "name": "🍘🍙𝙏𝙤𝙛𝙪🍙🍘", + "_id": "c5828d6260cc57ad677994a9", + "ip": "64.203.231.247" + }, + "c5592c6640f93a40b490aab8": { + "color": "#e021bf", + "name": "dog sans", + "_id": "c5592c6640f93a40b490aab8", + "ip": "81.101.111.103" + }, + "091ebc07655bb4f46566945f": { + "color": "#3fccfc", + "name": "Papaya ", + "_id": "091ebc07655bb4f46566945f", + "ip": "96.230.138.27" + }, + "01db9560111c70321a8dbe95": { + "color": "#2c221a", + "name": "Anonymous", + "_id": "01db9560111c70321a8dbe95", + "ip": "179.176.187.104" + }, + "fefe73cd003aa00c0d3a6d44": { + "color": "#ac6d9b", + "name": "Anonymous", + "_id": "fefe73cd003aa00c0d3a6d44", + "ip": "172.243.6.160" + }, + "19f4dc7f43e7330c2cb07522": { + "color": "#95fe14", + "name": "TheVomitJar", + "_id": "19f4dc7f43e7330c2cb07522", + "ip": "68.186.184.219" + }, + "043d2dd35e757c4ecfbe3c75": { + "color": "#836015", + "name": "Anonymous", + "_id": "043d2dd35e757c4ecfbe3c75", + "ip": "91.46.221.42" + }, + "a47ffabf634427a63a57206f": { + "color": "#cd9e56", + "name": "Anonymous", + "_id": "a47ffabf634427a63a57206f", + "ip": "178.202.210.49" + }, + "983ed301a5dacadf28e4763a": { + "color": "#27a5b4", + "name": "Anonymous", + "_id": "983ed301a5dacadf28e4763a", + "ip": "73.151.198.165" + }, + "5bd05dd1a18469e162f7daf3": { + "color": "#6248a7", + "name": "COdER MPPhustMPP COdER", + "_id": "5bd05dd1a18469e162f7daf3", + "ip": "37.79.158.187" + }, + "92f8caea22a13eb29da98558": { + "color": "#3bf71a", + "name": "\"Ангелочек_красотка\"", + "_id": "92f8caea22a13eb29da98558", + "ip": "176.122.121.199" + }, + "d24933cede594853b868d1d3": { + "color": "#b1bad0", + "name": "Anonymous", + "_id": "d24933cede594853b868d1d3", + "ip": "96.225.160.151" + }, + "09f60b44f2ba42219c8f9463": { + "color": "#c1b2a3", + "name": "Anonymous", + "_id": "09f60b44f2ba42219c8f9463", + "ip": "5.166.92.236" + } +} \ No newline at end of file