Advertisement
Guest User

Untitled

a guest
Jul 10th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1.  
  2. const wss = new WebSocket.Server({ port: process.env.PORT || 80 });
  3. var users = {};
  4. var IdIncr = 0;
  5.  
  6. var version = "1.0.4";
  7.  
  8. wss.on('connection', function connection(ws) {
  9.  
  10. var userID = IdIncr++;
  11. users[userID] = ws;
  12. users[userID].accountVerified = false;
  13.  
  14. ws.on('message', function incoming(message) {
  15. var data = message.split(/_(.+)/);
  16. if(data[1] == null) data[1] = "";
  17. if(data[0] != null){
  18. if(typeof Events[data[0]] == "function"){
  19. Events[data[0]](data[1],users[userID]);
  20. }else{
  21. }
  22. }
  23.  
  24. });
  25.  
  26. ws.on('disconnect', function () {
  27. delete users[userID];
  28. });
  29. });
  30.  
  31. wss.broadcast = function broadcast(data) {
  32. wss.clients.forEach(function each(client) {
  33. if (client.readyState === WebSocket.OPEN) {
  34. client.send(data);
  35. }
  36. });
  37. };
  38.  
  39. var Events = {
  40. register:function(data,user){
  41. var dataPack = data.split('|');
  42. registerAccount(dataPack[1],dataPack[0],user);
  43. user.curServ = dataPack[2];
  44. },
  45. login:function(data,user){
  46. var dataPack = data.split('|');
  47. loginAccount(dataPack[1],dataPack[0],user,false);
  48. user.curServ = dataPack[2];
  49. },
  50. disconnect:function(data,user){
  51. if(typeof user.username != "undefined"){
  52. wss.broadcast(user.username + " left the Global Chat!");
  53. user.accountVerified = false;
  54. user.username = "";
  55. }
  56. },
  57. reconnect:function(data,user){
  58. var dataPack = data.split('|');
  59. loginAccount(dataPack[1],dataPack[0],user,true);
  60. user.curServ = dataPack[2];
  61. },
  62. logout:function(data,user){
  63. if(typeof user.username != "undefined"){
  64. wss.broadcast(user.username + " left the Global Chat!");
  65. }
  66. user.username = "";
  67. delete user;
  68. },
  69. message:function(data,user){
  70. if(!user.accountVerified){
  71. user.send("Please log in to your account.");
  72. return;
  73. }
  74.  
  75. if(data[1] == "/"){
  76. commands(data.slice(2,data.length),user);
  77. return;
  78. }
  79.  
  80. var lines = [];
  81. var line = 0;
  82. var str = "";
  83.  
  84. for(var i = 0;i<data.length;i++){
  85. str += data[i];
  86. if(i%40 == 0 && i != 0){ lines.push(str); str=""; line++;}
  87. if(i == data.length-1){lines.push(str);}
  88. }
  89.  
  90. for(var i = 0;i<lines.length;i++){
  91. if(i == 0){
  92. wss.broadcast(user.username + ":" + lines[i]);
  93. }else{
  94. wss.broadcast(">" + lines[i]);
  95. }
  96. }
  97. },
  98. version:function(data,user){
  99. if(data == version) return;
  100. user.send("&cPlugin outdated! &fLatest: " + version);
  101. }
  102.  
  103. }
  104.  
  105. function commands(data,user){
  106. var args = data.split(" ");
  107. var command = args[0];
  108. switch(command){
  109. case "roll":
  110. var nbr = 1;
  111. if(args[1] != "") nbr = parseInt(args[1]);
  112.  
  113. var nbr2 = 6;
  114. if(args[2] != "") nbr2 = parseInt(args[2]);
  115.  
  116. if(isNaN(nbr2)) nbr2 = 6;
  117. if(isNaN(nbr)) nbr = 1;
  118.  
  119. var rnd = Math.floor(Math.random()*(nbr-nbr2))+nbr2;
  120. wss.broadcast(user.username + " rolled a &a" + rnd + " &f(" + nbr + ":" + nbr2 + ")");
  121. break;
  122. case "who":
  123. var uList = "";
  124. var count = 0;
  125. var alreadyList = [];
  126. for (var u in users) {
  127. if(!users[u].accountVerified) continue;
  128. if(alreadyList.indexOf(users[u].username) == -1 && users[u].username != "" && users[u].username != " "){
  129. uList += users[u].username + " ";
  130. alreadyList.push(users[u].username);
  131. count++;
  132. }
  133. }
  134. user.send("&a" + count + " &fusers online.");
  135. user.send(uList);
  136. break;
  137. case "where":
  138. var usr = {};
  139. for (var u in users) {
  140. if(users[u].username == args[1]){
  141. usr = users[u];
  142. }
  143. }
  144. if(usr == {}) return;
  145. user.send(usr.username + " is connected on &a" + usr.curServ);
  146. break;
  147. case "help":
  148. user.send("----Available commands----");
  149. user.send("&a/roll &f-Roll a six sided dice.");
  150. user.send("&a/who &f-Show connected users.");
  151. user.send("&a/where <player> &f-Show on what server the player is.");
  152. break;
  153. default:
  154. user.send("Unknown command.");
  155. break;
  156.  
  157. }
  158. }
  159.  
  160. function registerAccount(username,pass,user){
  161. var password = String(CryptoJS.AES.encrypt(pass,encryptkey));
  162. var time = String(new Date());
  163. firebase.database().ref('/accounts/' + username).once('value').then(function(data) {
  164. if(data.val() == null) {
  165. firebase.database().ref('/accounts/' + username).set({
  166. password: password,
  167. time: time
  168. });
  169. user.send("Account Registered!");
  170. }else{
  171. user.send("This account already exist!");
  172. }
  173. });
  174. }
  175.  
  176. function loginAccount(username,pass,user,reconnect){
  177. firebase.database().ref('/accounts/' + username).once('value').then(function(data) {
  178. var databasepass = CryptoJS.AES.decrypt(data.val().password.toString(), encryptkey).toString(CryptoJS.enc.Utf8);
  179.  
  180. if(user.accountVerified) return;
  181.  
  182. if(databasepass == pass){
  183. user.accountVerified = true;
  184. user.username = username;
  185. if(!reconnect){
  186. user.send("You joined the Global Chat!");
  187. wss.broadcast(user.username + " joined the Global Chat!");
  188. }
  189. }else{
  190. user.accountVerified = false;
  191. user.send("Informations Incorrect!");
  192. }
  193. });
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement