smnmpp-server/protocol/hi.js

104 lines
4.9 KiB
JavaScript

module.exports.run = async (ws,user,db,msg,fun,users,connections) => {
if (user.connected) return
if (!msg.token) {
try {
var ip = await db.ips.get(ws.ip)
var _id = await db.tokens.get(ip)
var part = await db.users.get(_id)
part = JSON.parse(part)
} catch (error) {
console.log(error)
var token = ""
for (var i = 0; i < 48; i++) token+= ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][Math.floor(Math.random() * 16)]
var _id = ""
for (var i = 0; i < 24; i++) _id+= ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][Math.floor(Math.random() * 16)]
var color = "#"
for (var i = 0; i < 6; i++) color+= ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][Math.floor(Math.random() * 16)]
var part = {rank: 0,p: {name: "Anonymous", _id: _id, id: _id, color: color, m:"p"}}
await db.ips.put(ws.ip, token)
await db.tokens.put(token, _id)
await db.users.put(_id, JSON.stringify(part))
}
} else {
try {
var token = await db.tokens.get(msg.token)
var part = await db.users.get(token)
part = JSON.parse(part)
var token = msg.token
} catch (error) {
try {
//var ip = ws.ip
var _id = await db.tokens.get(await db.ips.get(ws.ip))
var part = JSON.parse(await db.users.get(_id))
var ip = await db.ips.get(ws.ip)
} catch (error) {
var token = ""
for (var i = 0; i < 48; i++) token+= ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][Math.floor(Math.random() * 16)]
var _id = ""
for (var i = 0; i < 24; i++) _id+= ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][Math.floor(Math.random() * 16)]
var color = "#"
for (var i = 0; i < 6; i++) color+= ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"][Math.floor(Math.random() * 16)]
var part = {rank:0,p: {name: "Anonymous", _id: _id, id: _id, color: color, m:"p"}}
await db.ips.put(ws.ip, token)
await db.tokens.put(token, _id)
await db.users.put(_id, JSON.stringify(part))
}
}
}
if (part.siteban && part.siteban.ends > Date.now()) {
// i took this from bouncer bc too lazy lmao
var msToTime = function(args) {
if (args >= 10000000000000) {
return 'forever';
}
if (args >= 31536000000) {
return Math.round((args / 31536000000) * 10) / 10 + ' years';
}
if (args >= 2592000000) {
return Math.round((args / 2592000000) * 10) / 10 + ' months';
}
if (args >= 604800000) {
return Math.round((args / 604800000) * 10) / 10 + ' weeks';
}
if (args >= 86400000) {
return Math.round((args / 86400000) * 10) / 10 + ' days';
}
if (args >= 3600000) {
return Math.round((args / 3600000) * 10) / 10 + ' hours';
}
if (args >= 60000) {
return Math.round((args / 60000) * 10) / 10 + ' minutes';
}
if (args >= 1000) {
return Math.round((args / 1000) * 10) / 10 + ' seconds';
}
return args + ' milliseconds';
}
ws.sendData({"m":"notification","duration":7000,"target":"#room","html":`You are currently banned from the site for ${msToTime(part.siteban.ends - Date.now())}.<br>Reason: ${part.siteban.reason}<br>Your _ID: ${part.p._id}<br>You can request an appeal by DMing someone8448 on discord or joining this <a href="https://discord.gg/jCymdJ6gGe">Discord Server</a> and requesting a ban appeal.`,"title":"Notice"})
ws.close()
return "user sitebanned"
}
delete part.siteban
ws.sendData({m: "hi", u: part.p, t: Date.now(), token: ip || token, permissions: (part.rank >= 1) ? {vanish: true, clearChat: true, chownAnywhere: (part.rank >= 2) ? true : undefined, siteBan: (part.rank >= 2) ? true : undefined, siteBanAnyReason: (part.rank >= 2) ? true : undefined, siteBanAnyDuration: (part.rank >= 2) ? true: undefined,usersetOthers: (part.usersetothers) ? true : undefined} : {usersetOthers: (part.usersetothers) ? true : undefined}, accountInfo: {}})
user.quotas = {chat: fun.quota(4,6000), note: fun.quota(15,2000), custom: fun.quota(30,2000)}
user._id = part.p._id
if (!users[part.p._id]) {users[part.p._id] = part; delete users[part.p._id].userset}
users[part.p._id].p = part.p
if (!users[user._id].userset) users[user._id].userset = fun.quota(8,720000)
if (users[part.p._id].rank < 1 && users[part.p._id].p.vanished) users[part.p._id].p.vanished = false
delete users[part.p._id].p.vanish
user.connected = true
user.channel = undefined
user.sub = {ls: false, custom: false}
}
module.exports.name = "hi"