Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const wss = new WebSocket.Server({ port: process.env.PORT || 80 });
- var users = {};
- var IdIncr = 0;
- var version = "1.0.4";
- wss.on('connection', function connection(ws) {
- var userID = IdIncr++;
- users[userID] = ws;
- users[userID].accountVerified = false;
- ws.on('message', function incoming(message) {
- var data = message.split(/_(.+)/);
- if(data[1] == null) data[1] = "";
- if(data[0] != null){
- if(typeof Events[data[0]] == "function"){
- Events[data[0]](data[1],users[userID]);
- }else{
- }
- }
- });
- ws.on('disconnect', function () {
- delete users[userID];
- });
- });
- wss.broadcast = function broadcast(data) {
- wss.clients.forEach(function each(client) {
- if (client.readyState === WebSocket.OPEN) {
- client.send(data);
- }
- });
- };
- var Events = {
- register:function(data,user){
- var dataPack = data.split('|');
- registerAccount(dataPack[1],dataPack[0],user);
- user.curServ = dataPack[2];
- },
- login:function(data,user){
- var dataPack = data.split('|');
- loginAccount(dataPack[1],dataPack[0],user,false);
- user.curServ = dataPack[2];
- },
- disconnect:function(data,user){
- if(typeof user.username != "undefined"){
- wss.broadcast(user.username + " left the Global Chat!");
- user.accountVerified = false;
- user.username = "";
- }
- },
- reconnect:function(data,user){
- var dataPack = data.split('|');
- loginAccount(dataPack[1],dataPack[0],user,true);
- user.curServ = dataPack[2];
- },
- logout:function(data,user){
- if(typeof user.username != "undefined"){
- wss.broadcast(user.username + " left the Global Chat!");
- }
- user.username = "";
- delete user;
- },
- message:function(data,user){
- if(!user.accountVerified){
- user.send("Please log in to your account.");
- return;
- }
- if(data[1] == "/"){
- commands(data.slice(2,data.length),user);
- return;
- }
- var lines = [];
- var line = 0;
- var str = "";
- for(var i = 0;i<data.length;i++){
- str += data[i];
- if(i%40 == 0 && i != 0){ lines.push(str); str=""; line++;}
- if(i == data.length-1){lines.push(str);}
- }
- for(var i = 0;i<lines.length;i++){
- if(i == 0){
- wss.broadcast(user.username + ":" + lines[i]);
- }else{
- wss.broadcast(">" + lines[i]);
- }
- }
- },
- version:function(data,user){
- if(data == version) return;
- user.send("&cPlugin outdated! &fLatest: " + version);
- }
- }
- function commands(data,user){
- var args = data.split(" ");
- var command = args[0];
- switch(command){
- case "roll":
- var nbr = 1;
- if(args[1] != "") nbr = parseInt(args[1]);
- var nbr2 = 6;
- if(args[2] != "") nbr2 = parseInt(args[2]);
- if(isNaN(nbr2)) nbr2 = 6;
- if(isNaN(nbr)) nbr = 1;
- var rnd = Math.floor(Math.random()*(nbr-nbr2))+nbr2;
- wss.broadcast(user.username + " rolled a &a" + rnd + " &f(" + nbr + ":" + nbr2 + ")");
- break;
- case "who":
- var uList = "";
- var count = 0;
- var alreadyList = [];
- for (var u in users) {
- if(!users[u].accountVerified) continue;
- if(alreadyList.indexOf(users[u].username) == -1 && users[u].username != "" && users[u].username != " "){
- uList += users[u].username + " ";
- alreadyList.push(users[u].username);
- count++;
- }
- }
- user.send("&a" + count + " &fusers online.");
- user.send(uList);
- break;
- case "where":
- var usr = {};
- for (var u in users) {
- if(users[u].username == args[1]){
- usr = users[u];
- }
- }
- if(usr == {}) return;
- user.send(usr.username + " is connected on &a" + usr.curServ);
- break;
- case "help":
- user.send("----Available commands----");
- user.send("&a/roll &f-Roll a six sided dice.");
- user.send("&a/who &f-Show connected users.");
- user.send("&a/where <player> &f-Show on what server the player is.");
- break;
- default:
- user.send("Unknown command.");
- break;
- }
- }
- function registerAccount(username,pass,user){
- var password = String(CryptoJS.AES.encrypt(pass,encryptkey));
- var time = String(new Date());
- firebase.database().ref('/accounts/' + username).once('value').then(function(data) {
- if(data.val() == null) {
- firebase.database().ref('/accounts/' + username).set({
- password: password,
- time: time
- });
- user.send("Account Registered!");
- }else{
- user.send("This account already exist!");
- }
- });
- }
- function loginAccount(username,pass,user,reconnect){
- firebase.database().ref('/accounts/' + username).once('value').then(function(data) {
- var databasepass = CryptoJS.AES.decrypt(data.val().password.toString(), encryptkey).toString(CryptoJS.enc.Utf8);
- if(user.accountVerified) return;
- if(databasepass == pass){
- user.accountVerified = true;
- user.username = username;
- if(!reconnect){
- user.send("You joined the Global Chat!");
- wss.broadcast(user.username + " joined the Global Chat!");
- }
- }else{
- user.accountVerified = false;
- user.send("Informations Incorrect!");
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement