2020-04-07 09:55:16 +02:00
|
|
|
const Client = require("./Client.js");
|
|
|
|
const banned = require('../banned.json');
|
|
|
|
|
|
|
|
class Server extends EventEmitter {
|
|
|
|
constructor(config) {
|
|
|
|
super();
|
|
|
|
EventEmitter.call(this);
|
|
|
|
this.wss = new WebSocket.Server({
|
|
|
|
port: config.port,
|
|
|
|
backlog: 100,
|
|
|
|
verifyClient: (info) => {
|
|
|
|
if (banned.includes((info.req.connection.remoteAddress).replace("::ffff:", ""))) return false;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
this.connectionid = 0;
|
|
|
|
this.connections = new Map();
|
|
|
|
this.roomlisteners = new Map();
|
|
|
|
this.rooms = new Map();
|
|
|
|
this.wss.on('connection', (ws, req) => {
|
|
|
|
this.connections.set(++this.connectionid, new Client(ws, req, this));
|
|
|
|
});
|
2020-04-07 20:38:57 +02:00
|
|
|
this.legit_m = [
|
|
|
|
"a",
|
|
|
|
"bye",
|
|
|
|
"hi",
|
|
|
|
"ch",
|
|
|
|
"+ls",
|
|
|
|
"-ls",
|
|
|
|
"m",
|
|
|
|
"n",
|
|
|
|
"devices",
|
|
|
|
"t",
|
|
|
|
"chset",
|
|
|
|
"userset",
|
|
|
|
"chown",
|
|
|
|
"kickban",
|
|
|
|
|
|
|
|
"admin message",
|
|
|
|
"admin_color",
|
|
|
|
"admin_noteColor",
|
|
|
|
"admin_chset",
|
|
|
|
"admin_chown",
|
|
|
|
"admin_kickban",
|
|
|
|
"admin_notification"
|
|
|
|
];
|
2020-04-07 09:55:16 +02:00
|
|
|
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";
|
|
|
|
this.defaultLobbyColor = config.defaultLobbyColor || "#19b4b9";
|
|
|
|
this.defaultLobbyColor2 = config.defaultLobbyColor2 || "#801014";
|
|
|
|
this.adminpass = config.adminpass || "Bop It";
|
|
|
|
};
|
|
|
|
updateRoom(data) {
|
|
|
|
if (!data.ch.settings.visible) return;
|
|
|
|
for (let cl of Array.from(this.roomlisteners.values())) {
|
|
|
|
cl.sendArray([{
|
|
|
|
"m": "ls",
|
|
|
|
"c": false,
|
|
|
|
"u": [data.ch]
|
|
|
|
}])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = Server;
|