Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1. process.on('uncaughtException', error => {
  2. console.log(`Error stack!: ${error.stack}`.red);
  3. });
  4.  
  5.  
  6. var express = require("express");
  7. var app = express();
  8. var path = require("path");
  9. var http = require('http').Server(app);
  10. var io = require('socket.io')(http);
  11.  
  12. var colors = require('colors');
  13. var fs = require('fs');
  14. var load = require('json-pretty');
  15.  
  16. var userList = [];
  17.  
  18. var user = require("./user.js");
  19.  
  20. io.on('connection', function(socket) {
  21. var ip = socket.request.connection.remoteAddress.split("ffff:")[1];
  22. var userNotRegister = false;
  23. var loginAccept = false;
  24. var username = null;
  25. console.log("New connection", ip);
  26. socket.on("login", function(data) {
  27. if(loginAccept == true) return;
  28. var lUsers = fs.readFileSync("./users.js", "utf-8");
  29. var users = JSON.parse(lUsers);
  30. for(var i in users) {
  31. if(data.username && data.password && data.username == users[i].username && users[i].password == data.password) {
  32. socket.room = data.username;
  33. socket.join(socket.room);
  34. userList.push(new user(socket.room));
  35. loginAccept = true;
  36. username = data.username;
  37. socket.emit("loginAccept", {
  38. datr: {
  39. maxbots: users[i].maxbots,
  40. username: users[i].username,
  41. coins: users[i].coins,
  42. time: users[i].time
  43. },
  44. text: "Bots: " + users[i].maxbots + " Time: " + (users[i].time / 86400 >> 0) +":"+ (users[i].time / 3600 % 24 >> 0) +":"+ (users[i].time / 60 % 60 >> 0)+":"+(users[i].time % 60 >> 0)
  45. });
  46. console.log("[Login user]", users[i].username, users[i].time, users[i].maxbots, "users:", userList.length);
  47. } else {
  48. if(loginAccept == false) {
  49. socket.emit("loginfailed");
  50. }
  51. }
  52. }
  53. });
  54. closeCheck = false;
  55. socket.on("register", function(data) {
  56. var lUsers = fs.readFileSync("./users.js", "utf-8");
  57. var users = JSON.parse(lUsers);
  58. for(var i in users) {
  59. if(closeCheck == true) return;
  60. if(data.username && data.password && data.two_password && data.mail && data.username !== users[i].username && data.password == data.two_password && users[i].ip !== ip) {
  61. users.push({
  62. ip: ip,
  63. username: data.username,
  64. password: data.password,
  65. maxbots: 0,
  66. time: 0,
  67. coins: 0,
  68. unlimited: false
  69. });
  70. fs.writeFileSync("./users.js", load(users));
  71. socket.emit("registerdone");
  72. return closeCheck = true;
  73. }
  74. }
  75. });
  76.  
  77. socket.on("receiveChangeMode", function(data) {
  78. if(loginAccept == true) {
  79. for(var i in userList) {
  80. if(userList[i].username == username) {
  81. userList[i].swithMode(data);
  82. }
  83. }
  84. }
  85. });
  86.  
  87. socket.on("buyfree", function() {
  88. if(loginAccept == true) {
  89. for(var i in userList) {
  90. if(userList[i].username == username) {
  91. userList[i].buyfree();
  92. if(userList[i].requestBuyingPackage() == "free") {
  93. socket.emit("acceptbuyfreeplan");
  94. }
  95. }
  96. }
  97. }
  98. });
  99. socket.on("buypremium", function() {
  100. if(loginAccept == true) {
  101. for(var i in userList) {
  102. if(userList[i].username == username) {
  103. userList[i].buypremium();
  104. if(userList[i].requestBuyingPackage() == "premium") {
  105. socket.emit("acceptbuypremiumplan");
  106. }
  107. }
  108. }
  109. }
  110. });
  111. socket.on("buygold", function() {
  112. if(loginAccept == true) {
  113. for(var i in userList) {
  114. if(userList[i].username == username) {
  115. userList[i].buygold();
  116. if(userList[i].requestBuyingPackage() == "gold") {
  117. socket.emit("acceptbuygoldplan");
  118. }
  119. }
  120. }
  121. }
  122. });
  123. socket.on("buymedium", function() {
  124. if(loginAccept == true) {
  125. for(var i in userList) {
  126. if(userList[i].username == username) {
  127. userList[i].buymedium();
  128. if(userList[i].requestBuyingPackage() == "medium") {
  129. socket.emit("acceptbuymediumplan");
  130. }
  131. }
  132. }
  133. }
  134. });
  135. socket.on("DataServer", function(data) {
  136. if(loginAccept == true) {
  137. for(var i in userList) {
  138. if(userList[i].username == username) {
  139. userList[i].receiveData(data);
  140. }
  141. }
  142. }
  143. });
  144. socket.on("DataPosition", function(data) {
  145. if(loginAccept == true) {
  146. for(var i in userList) {
  147. if(userList[i].username == username) {
  148. userList[i].receivePosition(data);
  149. }
  150. }
  151. }
  152. });
  153. socket.on("DataClose", function() {
  154. if(loginAccept == true) {
  155. for(var i in userList) {
  156. if(userList[i].username == username) {
  157. userList[i].receiveDataBotsClose();
  158. }
  159. }
  160. }
  161. });
  162. socket.on("getUserInfo", function() {
  163. for(var i in userList) {
  164. if(userList[i].username == username) {
  165. socket.emit("receiveUserStatus", {
  166. status: userList[i].getStatus()
  167. });
  168. }
  169. }
  170. });
  171. socket.on("splitbots", function() {
  172. if(loginAccept == true) {
  173. for(var i in userList) {
  174. if(userList[i].username == username) {
  175. userList[i].bSplit();
  176. }
  177. }
  178. }
  179. });
  180. socket.on("ejectbots", function() {
  181. if(loginAccept == true) {
  182. for(var i in userList) {
  183. if(userList[i].username == username) {
  184. userList[i].bEject();
  185. }
  186. }
  187. }
  188. });
  189. socket.on("disconnect", function() {
  190. console.log("user disconnect", ip);
  191.  
  192.  
  193. if(userList.length > 0) {
  194. for(var i in userList) {
  195. if(userList[i].username == username) {
  196. userList[i].receiveDataBotsClose();
  197. userList.splice(i, 1);
  198. }
  199. }
  200. }
  201. });
  202. });
  203. http.listen("5000");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement