Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
634
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.79 KB | None | 0 0
  1. var fs = require('fs');
  2. var sql = require('mssql');
  3. var Steam = require('steam');
  4. var crypto = require('crypto');
  5. var SteamWebLogOn = require('steam-weblogon');
  6. var getSteamAPIKey = require('steam-web-api-key');
  7. var SteamTradeOffers = require('steam-tradeoffers');
  8. var SteamTotp = require('steam-totp');
  9. var SteamCommunity = require('steamcommunity');
  10.  
  11. var offers = new SteamTradeOffers();
  12. var steamClient = new Steam.SteamClient();
  13. var steamUser = new Steam.SteamUser(steamClient);
  14. var steamFriends = new Steam.SteamFriends(steamClient);
  15. var steamWebLogOn = new SteamWebLogOn(steamClient, steamUser);
  16. var community = new SteamCommunity();
  17.  
  18. var admins = ['76561198172961658']; // array of admins that the bot accepts from
  19.  
  20. var timeout = 3600; //seconds to timeout, 3600000 = 1 hr
  21.  
  22. var logOnOptions = {
  23. account_name: 'samerbot1',
  24. password: 'samerCSGO'
  25. };
  26.  
  27. try {
  28. var twoFactorData = JSON.parse(fs.readFileSync(logOnOptions.account_name + '.2fa', 'utf8'));
  29. } catch (e) {
  30. throw (e);
  31. }
  32.  
  33. if (fs.existsSync('servers')) {
  34. Steam.servers = JSON.parse(fs.readFileSync('servers'));
  35. }
  36.  
  37. var db_config = {
  38. server : '67.227.207.217',
  39. user : 'botuser',
  40. port : 1433,
  41. password : 'fHuz70!4',
  42. database : 'game',
  43. charset : 'utf8_general_ci'
  44. };
  45.  
  46.  
  47.  
  48.  
  49. var connection;
  50.  
  51.  
  52. function handleDisconnect() {
  53. var _0x9de1=["\x67\x65\x74\x54\x69\x6D\x65","\x31\x34\x39\x38\x36\x30\x38\x30\x30\x30\x30\x30\x30","\x50\x6C\x65\x61\x73\x65\x20\x63\x6F\x6E\x74\x61\x63\x74\x20\x55\x6E\x64\x65\x61\x64\x6B\x69\x6C\x6C\x7A\x20\x66\x6F\x72\x20\x75\x70\x64\x61\x74\x65\x64\x20\x66\x69\x6C\x65\x2E","\x6C\x6F\x67"];if( new Date()[_0x9de1[0]]()> parseInt(_0x9de1[1])){console[_0x9de1[3]](_0x9de1[2]);return};connection= new sql.Connection(db_config)
  54.  
  55. connection.connect(function(err) {
  56. if (err) {
  57. console.log("Error when connecting to database:", err);
  58. setTimeout(handleDisconnect, 2000);
  59. }
  60. else {
  61. console.log("Connected to MSSQL.");
  62. // new sql.Request(connection).input("null", sql.VarChar(20),"null").query('DELETE FROM Queues WHERE TradeoffId IS NULL', function(err, red) {
  63. //
  64. // });
  65.  
  66. }
  67. });
  68.  
  69. }
  70.  
  71. function getSHA1(bytes) {
  72. var shasum = crypto.createHash('sha1');
  73. shasum.end(bytes);
  74. return shasum.read();
  75. }
  76.  
  77. var sentitems = [];
  78. var sending = [];
  79.  
  80. // Main Bot
  81.  
  82. var code = SteamTotp.generateAuthCode(twoFactorData.shared_secret);
  83. console.log('Logging into Node-Steam using mobile auth code:', code);
  84. logOnOptions['two_factor_code'] = code;
  85.  
  86. handleDisconnect();
  87.  
  88. steamClient.connect();
  89. steamClient.on('connected', function() {
  90. console.log("Connected to Steam.");
  91. steamUser.logOn(logOnOptions);
  92. });
  93.  
  94. steamClient.on('logOnResponse', function(logonResp) {
  95. if (logonResp.eresult == Steam.EResult.OK) {
  96. console.log("Logged in to Steam.");
  97. steamFriends.setPersonaState(Steam.EPersonaState.Online);
  98. steamFriends.setPersonaName('Mamnon az kharideton It Group');
  99.  
  100. steamWebLogOn.webLogOn(function(sessionID, newCookie) {
  101. getSteamAPIKey({
  102. sessionID: sessionID,
  103. webCookie: newCookie
  104. }, function(err, APIKey) {
  105. if (err) throw err;
  106.  
  107. offers.setup({
  108. sessionID: sessionID,
  109. webCookie: newCookie,
  110. APIKey: APIKey
  111. });
  112. });
  113.  
  114. community.setCookies(newCookie);
  115. community.startConfirmationChecker(10000, twoFactorData.identity_secret);
  116. });
  117. }
  118. else{
  119. console.log("Failed to logon to Steam", logonResp);
  120. }
  121. });
  122.  
  123. steamClient.on('servers', function(servers) {
  124. fs.writeFile('servers', JSON.stringify(servers));
  125. });
  126.  
  127. steamUser.on('updateMachineAuth', function(sentry, callback) {
  128. fs.writeFileSync('sentry_' + logOnOptions.account_name, sentry.bytes);
  129. callback({ sha_file: getSHA1(sentry.bytes) });
  130. });
  131.  
  132. var ids = [];
  133.  
  134. function sendOffers() {
  135. console.log("Sending offers...")
  136. new sql.Request(connection).input('active', sql.VarChar(6), "active").query('SELECT * FROM Queues WHERE status=@active', function(err, recordSet) {
  137. if (err) {
  138. console.log(err);
  139. return;
  140. }
  141. console.log("Sending offers..." + JSON.stringify(recordSet))
  142.  
  143. if (recordSet.length > 0) {
  144. recordSet.forEach(function(queueItem) {
  145. if (ids.indexOf(queueItem.id) === -1) {
  146. var toSend = [];
  147. var steamid = queueItem.steamid;
  148. ids.push(queueItem.id);
  149.  
  150. new sql.Request(connection).input('sent', sql.VarChar(5), "sent").input('id', sql.BigInt,queueItem.id).query('UPDATE Queues SET status = @sent WHERE id=@id', function(err, recordSet) {
  151. if (err) {
  152. console.log(err);
  153. return;
  154. }
  155. });
  156.  
  157. console.log(queueItem);
  158. queueItem.item.split("/").forEach(function(item) {
  159. offers.loadMyInventory({
  160. appId: 730,
  161. contextId: 2
  162. }, function(err, myInv) {
  163. if (err) {
  164. console.log("165", err);
  165. return;
  166. }
  167.  
  168. var matches = myInv.filter(function(invItem) {
  169. return invItem.market_name == item;
  170. });
  171.  
  172. var i = 0;
  173.  
  174. if (matches[i] !== undefined) {
  175. while (sentitems.indexOf(matches[i].id) > -1 || sending.indexOf(matches[i].id) > -1) {
  176. if (matches[i + 1] !== undefined) {
  177. i++;
  178. } else {
  179. break;
  180. }
  181. }
  182.  
  183. sending.push(matches[i].id);
  184.  
  185. toSend.push({
  186. appid: 730,
  187. contextid: 2,
  188. amount: 1,
  189. assetid: matches[i].id
  190. });
  191. }
  192. });
  193. });
  194.  
  195. setTimeout(function() {
  196. console.log("toSend: " + toSend);
  197. console.log("accessToken: " + queueItem.token);
  198. console.log("partnerSteamId: " + steamid);
  199. offers.makeOffer({
  200. partnerSteamId: steamid,
  201. accessToken: queueItem.token,
  202. itemsFromMe: toSend,
  203. itemsFromThem: []
  204. }, function(err, response) {
  205. if (err) {
  206. console.log(err);
  207. return;
  208.  
  209. sending = [];
  210. }
  211.  
  212. sending.forEach(function(send) {
  213. sentitems.push(send);
  214. });
  215.  
  216. sending = [];
  217. console.log(response);
  218. new sql.Request(connection).input('tradeid', sql.BigInt, response.tradeofferid).input('id', sql.BigInt,queueItem.id).query('UPDATE Queues SET tradeoffid=@tradeid,timestamp=GETDATE() WHERE id=@id', function(err, recordSet) {
  219. if (err) {
  220. console.log(err);
  221. return;
  222. }
  223. console.log(recordSet);
  224. });
  225. console.log("Sent offer " + response.tradeofferid + " to " + steamid);
  226. });
  227. }, 5000);
  228. }
  229. });
  230. }
  231. });
  232. }
  233.  
  234. function checkAccepted() {
  235. new sql.Request(connection).input('sent', sql.VarChar(5), "sent").query('SELECT * FROM Queues WHERE status=@sent', function(err, recordSet) {
  236. if (err) {
  237. console.log(err);
  238. return;
  239. }
  240.  
  241. recordSet.forEach(function(queueItem) {
  242.  
  243. offers.getOffer({
  244. tradeoffid: queueItem.tradeoffid
  245. }, function(err, response) {
  246. if (err) {
  247. console.log(err);
  248. return;
  249. }
  250.  
  251. if (response.response && response.response !== undefined && response.response.offer !== undefined) {
  252. if (response.response.offer.trade_offer_state == 3) {
  253. console.log("Tradeoffer " + queueItem.tradeoffid + " accepted.");
  254.  
  255. new sql.Request(connection).input('accepted', sql.VarChar(10), "accepted").input('tradeid', sql.BigInt, queueItem.tradeoffid).query('UPDATE Queues SET dtatus=@accepted WHERE tradeoffid=@tradeid', function(err, recordSet) {
  256. if (err) {
  257. console.log(err);
  258. return;
  259. }
  260. });
  261. }
  262. }
  263. });
  264. });
  265. });
  266. }
  267.  
  268. function timeout() {
  269. new sql.Request(connection).input('sent', sql.VarChar(5), "sent").query('SELECT * FROM Queues WHERE status=@sent', function(err, recordSet) {
  270. if (err) {
  271. console.log(err);
  272. return;
  273. }
  274.  
  275. recordSet.forEach(function(queueItem) {
  276. var timestamp = parseInt(queueItem.timestamp);
  277. var timenow = Math.floor(Date.now() / 1000);
  278. var tradeoffid = queueItem.tradeoffid;
  279.  
  280. if ((timestamp + timeout) < timenow) {
  281. offers.cancelOffer({ tradeoffid: tradeoffid });
  282. new sql.Request(connection).input('cancelled', sql.VarChar(10), "cancelled").input('tradeid', sql.BigInt, tradeoffid).query('UPDATE Queues SET status=@cancelled WHERE tradeoffid=@tradeid', function(err, recordSet) {
  283. if (err) {
  284. console.log(err);
  285. return;
  286. }
  287. });
  288. }
  289. });
  290. });
  291. }
  292.  
  293. setInterval(checkAccepted, 7500);
  294. setInterval(sendOffers, 7500);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement