Advertisement
R4TH4CK3R

Untitled

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