Advertisement
Guest User

Untitled

a guest
Dec 13th, 2016
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.68 KB | None | 0 0
  1. var fs = require('fs');
  2. var crypto = require('crypto');
  3. var console = process.console;
  4. var config = require('./config.js');
  5. var Steam = require('steam');
  6. var SteamWebLogOn = require('steam-weblogon');
  7. var getSteamAPIKey = require('steam-web-api-key');
  8. var SteamTradeOffers = require('steam-tradeoffers');
  9. var SteamCommunity = require('steamcommunity');
  10. var SteamcommunityMobileConfirmations = require('steamcommunity-mobile-confirmations');
  11. var SteamTotp = require('steam-totp');
  12. var mysql = require('mysql');
  13. var url = require('url');
  14.  
  15. var details = {
  16. account_name: config.bot.username,
  17. password: config.bot.password,
  18. two_factor_code: generatekey(config.bot.secret)
  19. };
  20.  
  21.  
  22.  
  23. var steamClient = new Steam.SteamClient();
  24. var steamUser = new Steam.SteamUser(steamClient);
  25. var steamFriends = new Steam.SteamFriends(steamClient);
  26. var steamWebLogOn = new SteamWebLogOn(steamClient, steamUser);
  27. var offers = new SteamTradeOffers();
  28.  
  29. // Generation Device_ID
  30. var hash = require('crypto').createHash('sha1');
  31. hash.update(Math.random().toString());
  32. hash = hash.digest('hex');
  33. var device_id = 'android:' + hash;
  34.  
  35. var checkingOffers = [],
  36. WebCookies = [],
  37. WebSession = false,
  38. globalSession;
  39.  
  40.  
  41.  
  42. function steamBotLogger(log) {
  43. console.tag('SteamBot').log(log);
  44. }
  45.  
  46. function EscrowLogger(log) {
  47. console.tag('EscrowBot').info(log);
  48. }
  49.  
  50. function generatekey(secret) {
  51. code = SteamTotp.generateAuthCode(secret);
  52. EscrowLogger('Generated Code : ' + code);
  53. return code;
  54. }
  55.  
  56. var db = mysql.createConnection({
  57. supportBigNumbers: true,
  58. bigNumberStrings: true,
  59. host: ' ',
  60. user: ' ',
  61. password: ' ',
  62. database: ' '
  63. });
  64.  
  65.  
  66.  
  67. steamClient.connect();
  68. steamClient.on('debug', steamBotLogger);
  69. steamClient.on('connected', function () {
  70. steamUser.logOn(details);
  71. });
  72.  
  73. steamClient.on('logOnResponse', function (logonResp) {
  74. if (logonResp.eresult === Steam.EResult.OK) {
  75. steamBotLogger('Подключен');
  76. steamFriends.setPersonaState(Steam.EPersonaState.Online);
  77.  
  78. steamWebLogOn.webLogOn(function (sessionID, newCookie) {
  79. getSteamAPIKey({
  80. sessionID: sessionID,
  81. webCookie: newCookie
  82. }, function (err, APIKey) {
  83. offers.setup({
  84. sessionID: sessionID,
  85. webCookie: newCookie,
  86. APIKey: APIKey
  87. }, function (err) {
  88. WebSession = true;
  89. globalSession = sessionID;
  90. WebCookies = newCookie;
  91. steamBotLogger('Функция принятия трейдов включена!');
  92. var checkDropInterval = setInterval(checkDrop, 10000);
  93. AcceptMobileOffer();
  94. });
  95.  
  96. });
  97. });
  98. }
  99. });
  100.  
  101.  
  102. function checkDrop() {
  103. db.query("SELECT * FROM drops WHERE status = '1' ORDER BY id DESC", function(err, items) {
  104. if (err) throw err;
  105. AcceptMobileOffer();
  106. if (items.length > 0) {
  107. items.forEach(function(item, i, items) {
  108. var user = db.query("SELECT * FROM users WHERE id = '" + item.user + "'", function(err, data) {
  109. if (!err) {
  110. data = data[0];
  111. if (typeof data.tradelink != "undefined" && data.tradelink != "") {
  112. var tradeLink = url.parse(data.tradelink, true);
  113. if (tradeLink.query.partner != "" && tradeLink.query.token != "") {
  114. offers.makeOffer({
  115. partnerAccountId: tradeLink.query.partner,
  116. accessToken: tradeLink.query.token,
  117. itemsFromMe: [{
  118. appid: 730,
  119. contextid: 2,
  120. amount: 1,
  121. assetid: item.weaponid
  122. }],
  123. itemsFromThem: [],
  124. message: 'Выигрыш с сайта: GDROP.RU!'
  125. }, function(err, response) {
  126. if (err) {
  127. console.log(err);
  128. db.query("UPDATE drops SET status = '4', message = 'Ошибка! Больше информации узнайте у администрации.' WHERE id = '" + item.id + "'");
  129. } else {
  130. db.query("UPDATE drops SET status = '3' WHERE id = '" + item.id + "'");
  131. }
  132. });
  133. } else {
  134. db.query("UPDATE drops SET status = '4', message = 'Ошибка! Не корректная ссылка обмена.' WHERE id = '" + item.id + "'");
  135. }
  136. } else {
  137. db.query("UPDATE drops SET status = '4', message = 'Ошибка! Не корректная ссылка обмена.' WHERE id = '" + item.id + "'");
  138. }
  139. }
  140. });
  141. });
  142. }
  143. });
  144. }
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. var checkArrGlobal = [];
  152.  
  153.  
  154.  
  155. function AcceptMobileOffer() {
  156. // Информация для мобильных подтверждений
  157. var steamcommunityMobileConfirmations = new SteamcommunityMobileConfirmations(
  158. {
  159. steamid: config.bot.steamid,
  160. identity_secret: config.bot.identity_secret,
  161. device_id: device_id,
  162. webCookie: WebCookies,
  163. });
  164.  
  165. steamcommunityMobileConfirmations.FetchConfirmations((function (err, confirmations) {
  166. if (err) {
  167. console.log(err);
  168. return;
  169. }
  170. console.tag('SteamBot', 'MobileTrades').log('Wait Offers: ' + confirmations.length);
  171. if (!confirmations.length) {
  172. return;
  173. }
  174. steamcommunityMobileConfirmations.AcceptConfirmation(confirmations[0], (function (err, result) {
  175. if (err) {
  176. console.log(err);
  177. return;
  178. }
  179. console.tag('SteamBot', 'MobileTrades').log('Accept result: ' + result);
  180. }).bind(this));
  181. }).bind(this));
  182. }
  183.  
  184.  
  185.  
  186. function getErrorCode(err, callback) {
  187. var errCode = 0;
  188. var match = err.match(/\(([^()]*)\)/);
  189. if (match != null && match.length == 2) errCode = match[1];
  190. callback(errCode);
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement