Advertisement
R4TH4CK3R

Untitled

Jun 5th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.10 KB | None | 0 0
  1. var steam = require("steam"),
  2. util = require("util"),
  3. fs = require("fs"),
  4. SteamApi = require('steam-api'),
  5. SteamID = require('steamid'),
  6. crypto = require("crypto"),
  7. dota2 = require("dota2"),
  8. steamClient = new steam.SteamClient(),
  9. steamUser = new steam.SteamUser(steamClient),
  10. steamFriends = new steam.SteamFriends(steamClient),
  11. Dota2 = new dota2.Dota2Client(steamClient, true);
  12.  
  13. var request = require("request");
  14.  
  15. global.config = require("./config/config");
  16.  
  17. function newBlankPlayer() {
  18. return {
  19. name: undefined,
  20. steam_id: undefined,
  21. status: 0,
  22. };
  23. }
  24.  
  25.  
  26. global.userList = {};
  27.  
  28. var url = "https://pastebin.com/raw/yKnGHib2";
  29.  
  30. request({
  31. url: url,
  32. json: true
  33. }, function(error, response, body) {
  34.  
  35. if (!error && response.statusCode === 200) {
  36. global.userList = body;
  37. }
  38. })
  39.  
  40. /*global.userList = {
  41. "57312074": {
  42. "alias": "HAWGT",
  43. "bannedUntil": 0,
  44. "verifiedHost": true,
  45. "admin": true,
  46. "botowner": true,
  47. },
  48. "154189930": {
  49. "alias": "SP",
  50. "bannedUntil": 0,
  51. "verifiedHost": true,
  52. "admin": true,
  53. "botowner": false,
  54. },
  55. };*/
  56.  
  57. var onSteamLogOn = function onSteamLogOn(logonResp) {
  58. if (logonResp.eresult == steam.EResult.OK) {
  59. steamFriends.setPersonaState(steam.EPersonaState.Offline);
  60. steamFriends.setPersonaName(global.config.steam_name);
  61. util.log("Logged on.");
  62.  
  63. Dota2.launch();
  64. Dota2.on("ready", function() {
  65. util.log("Node-dota2 ready.");
  66.  
  67. // CHAT
  68.  
  69. global.chatChannel = "miragefarm";
  70.  
  71. Dota2.joinChat(chatChannel);
  72. setTimeout(function() {
  73. //Dota2.sendMessage("I'm just a bot.", chatChannel);
  74. }, 1000);
  75.  
  76.  
  77.  
  78. });
  79.  
  80. Dota2.on("lobbyInviteUpdate", function(lobby) {
  81. util.log(lobby);
  82.  
  83. var players = [];
  84. var hostId = lobby.sender_id.low;
  85.  
  86. for (var i = 0, len = lobby.members.length; i < len; i++) {
  87. players[i] = newBlankPlayer();
  88. players[i].name = lobby.members[i].name;
  89. players[i].steam_id = lobby.members[i].steam_id.low;
  90.  
  91. var currDate = new Date();
  92. if (userList[players[i].steam_id]) {
  93. var banDate = new Date(userList[players[i].steam_id].bannedUntil * 1000);
  94. } else {
  95. var banDate = new Date(0);
  96. }
  97. if (userList[players[i].steam_id]) {
  98. players[i].status = 1;
  99. if (userList[players[i].steam_id].verifiedHost == true && currDate > banDate) {
  100. players[i].status = 2;
  101. } else if (userList[players[i].steam_id].banned == true || currDate < banDate) {
  102. players[i].status = -1;
  103. }
  104. }
  105.  
  106. }
  107.  
  108. if (userList[hostId].verifiedHost == true && currDate > banDate) {
  109.  
  110. Dota2.respondLobbyInvite(lobby.group_id, true);
  111.  
  112. var lobbyName = "Lobby_" + lobby.group_id;
  113.  
  114. Dota2.joinChat(lobbyName, 3);
  115. setTimeout(function() {
  116.  
  117. for (var i = 0, len = players.length; i < len; i++) {
  118.  
  119. if (players[i].status == 0) {
  120.  
  121. Dota2.sendMessage(players[i].name + " isn't verified!" + " FID: " + players[i].steam_id, lobbyName, 3);
  122. } else if (players[i].status == -1) {
  123. var date = new Date(userList[players[i].steam_id].bannedUntil * 1000);
  124. Dota2.sendMessage(players[i].name + " is banned! (Until " + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ")" + " FID: " + players[i].steam_id, lobbyName, 3);
  125. } else if (players[i].status == 1) {
  126.  
  127. Dota2.sendMessage(players[i].name + " is verified!" + " FID: " + players[i].steam_id, lobbyName, 3);
  128. } else if (players[i].status == 2) {
  129.  
  130. Dota2.sendMessage(players[i].name + " is a verified host!" + " FID: " + players[i].steam_id, lobbyName, 3);
  131. }
  132.  
  133. }
  134.  
  135. Dota2.leaveChat(lobbyName, 3);
  136. Dota2.leavePracticeLobby();
  137.  
  138. }, 1000);
  139. } else {
  140. Dota2.respondLobbyInvite(lobby.group_id, false);
  141. //DEBUG
  142. util.log(userList[hostId].verifiedHost + "," + currDate.getTime() / 1000 + "," + banDate.getTime() / 1000);
  143. }
  144. });
  145.  
  146.  
  147.  
  148. Dota2.on("unready", function onUnready() {
  149. util.log("Node-dota2 unready.");
  150. });
  151.  
  152. Dota2.on("chatMessage", function(channel, personaName, message, raw) {
  153. util.log("[" + channel + "] " + personaName + ": " + message);
  154. util.log(raw);
  155. if (message == "!check") {
  156. var id = raw.account_id;
  157. var currDate = new Date();
  158. var status = 0;
  159. if (userList[id]) {
  160. var banDate = new Date(userList[id].bannedUntil * 1000);
  161. } else {
  162. var banDate = new Date(0);
  163. }
  164.  
  165. if (userList[id]) {
  166. status = 1;
  167. if (userList[id].verifiedHost == true && currDate > banDate) {
  168. status = 2;
  169. } else if (userList[id].banned == true || currDate < banDate) {
  170. status = -1;
  171. }
  172. }
  173.  
  174. if (status == 0) {
  175.  
  176. Dota2.sendMessage("You aren't verified!", chatChannel);
  177. } else if (status == -1) {
  178. var date = new Date(userList[players[i].steam_id].bannedUntil * 1000);
  179. Dota2.sendMessage("You are banned! (Until " + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ")", chatChannel);
  180. } else if (status == 1) {
  181.  
  182. Dota2.sendMessage("You are verified!", chatChannel);
  183. } else if (status == 2) {
  184.  
  185. Dota2.sendMessage("You are a verified host!", chatChannel);
  186. }
  187.  
  188.  
  189. }
  190. if (message.length > 6) {
  191. if (message.substring(0, 6) == "!check") {
  192. var cmd = message.split(' ');
  193. if (cmd.length == 2) {
  194. var id = cmd[1];
  195. var currDate = new Date();
  196. var status = 0;
  197. if (userList[id]) {
  198. var banDate = new Date(userList[id].bannedUntil * 1000);
  199. } else {
  200. var banDate = new Date(0);
  201. }
  202.  
  203. if (userList[id]) {
  204. status = 1;
  205. if (userList[id].verifiedHost == true && currDate > banDate) {
  206. status = 2;
  207. } else if (userList[id].banned == true || currDate < banDate) {
  208. status = -1;
  209. }
  210. }
  211.  
  212. if (status == 0) {
  213.  
  214. Dota2.sendMessage("That player isn't verified!", chatChannel);
  215. } else if (status == -1) {
  216. var date = new Date(userList[players[i].steam_id].bannedUntil * 1000);
  217. Dota2.sendMessage("That player is banned! (Until " + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ")", chatChannel);
  218. } else if (status == 1) {
  219.  
  220. Dota2.sendMessage("That player is verified!", chatChannel);
  221. } else if (status == 2) {
  222.  
  223. Dota2.sendMessage("That player a verified host!", chatChannel);
  224. }
  225.  
  226. }
  227. }
  228. }
  229.  
  230. });
  231.  
  232. Dota2.on("unhandled", function(kMsg) {
  233. util.log("UNHANDLED MESSAGE " + dota2._getMessageName(kMsg));
  234. });
  235. }
  236. },
  237. onSteamServers = function onSteamServers(servers) {
  238. util.log("Received servers.");
  239. fs.writeFile('servers', JSON.stringify(servers), (err) => {
  240. if (err) {
  241. if (this.debug) util.log("Error writing ");
  242. } else {
  243. if (this.debug) util.log("");
  244. }
  245. });
  246. },
  247. onSteamLogOff = function onSteamLogOff(eresult) {
  248. util.log("Logged off from Steam.");
  249. },
  250. onSteamError = function onSteamError(error) {
  251. util.log("Connection closed by server.");
  252. };
  253.  
  254. steamUser.on('updateMachineAuth', function(sentry, callback) {
  255. var hashedSentry = crypto.createHash('sha1').update(sentry.bytes).digest();
  256. fs.writeFileSync('sentry', hashedSentry)
  257. util.log("sentryfile saved");
  258.  
  259. callback({
  260. sha_file: hashedSentry
  261. });
  262. });
  263.  
  264. var logOnDetails = {
  265. "account_name": global.config.steam_user,
  266. "password": global.config.steam_pass,
  267. };
  268. if (global.config.steam_guard_code) logOnDetails.auth_code = global.config.steam_guard_code;
  269. if (global.config.two_factor_code) logOnDetails.two_factor_code = global.config.two_factor_code;
  270.  
  271. try {
  272. var sentry = fs.readFileSync('sentry');
  273. if (sentry.length) logOnDetails.sha_sentryfile = sentry;
  274. } catch (beef) {
  275. util.log("Cannot load the sentry. " + beef);
  276. }
  277.  
  278. steamClient.connect();
  279.  
  280. steamClient.on('connected', function() {
  281. steamUser.logOn(logOnDetails);
  282. });
  283.  
  284. steamClient.on('logOnResponse', onSteamLogOn);
  285. steamClient.on('loggedOff', onSteamLogOff);
  286. steamClient.on('error', onSteamError);
  287. steamClient.on('servers', onSteamServers);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement