Advertisement
Guest User

Untitled

a guest
Apr 6th, 2017
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.94 KB | None | 0 0
  1. var SteamCommunity = require('steamcommunity');
  2. var SteamTotp = require('steam-totp');
  3. var mysql = require('mysql');
  4. var log4js = require('log4js');
  5. var SteamTradeOffers = require('steam-tradeoffers');
  6. var async = require('async');
  7.  
  8. var pool = mysql.createPool({
  9. connectionLimit : 10,
  10. database: 'csgo',
  11. host: 'localhost',
  12. user: 'root',
  13. password: ''
  14. });
  15.  
  16. var community = new SteamCommunity();
  17. var offers = new SteamTradeOffers();
  18. log4js.configure({
  19. appenders: [
  20. { type: 'console' },
  21. { type: 'file', filename: 'logs/bot_'+process.argv[2]+'.log' }
  22. ]
  23. });
  24. var logger = log4js.getLogger();
  25.  
  26. var express = require('express');
  27. var app = express();
  28.  
  29. var sc1 = 'ASDHASDAHD891H892SHDASDSHD';
  30. var sc2 = 'ASDJAS89U8hsahjdhas89dh8h89h';
  31. var parolaSmechera = 'sjsjajshdjhdj';
  32. var portBot = 5921;
  33.  
  34.  
  35. app.get('/'+sc1+'/', function (req, res) {
  36.  
  37. var parola = req.query['parola'];
  38. if(parola != parolaSmechera) {
  39. res.json({
  40. success: false,
  41. error: 'The password entered is wrong!'
  42. });
  43. }
  44.  
  45. var assetids = req.query['assetids'];
  46. assetids = assetids.split(',');
  47. var partner = req.query['partner'];
  48. var token = req.query['token'];
  49. var checksum = req.query['checksum'];
  50. var steamid = req.query['steamid'];
  51. var senditems = [];
  52. for(var i = 0; i < assetids.length; i++) {
  53. if(assetids[i] == "") continue;
  54. senditems.push({
  55. appid: 730,
  56. contextid: 2,
  57. assetid: assetids[i]
  58. });
  59. }
  60.  
  61. var code = makecode();
  62. console.log(partner, token, checksum, assetids, senditems);
  63.  
  64. offers.makeOffer({
  65. partnerAccountId: partner,
  66. accessToken: token,
  67. itemsFromThem: senditems,
  68. itemsFromMe: [],
  69. message: 'Deposit | +'+checksum+' coins | ['+code+']'
  70. }, function(err, r) {
  71. if(err) {
  72. logger.error('Error.');
  73. logger.debug(err);
  74. res.json({
  75. success: false,
  76. error: err.toString()
  77. });
  78. } else {
  79. offers.loadPartnerInventory({
  80. partnerSteamId: steamid,
  81. tradeOfferId: r.tradeofferid,
  82. appId: 730,
  83. contextId: 2,
  84. language: 'russian'
  85. }, function(err, rr) {
  86. if(err) {
  87. logger.debug(err);
  88. res.json({
  89. success: false,
  90. error: err.toString()
  91. });
  92. } else {
  93. var names = [];
  94. for(var i = 0; i < senditems.length; i++) {
  95. for(var a = 0; a < rr.length; a++) {
  96. if((senditems[i].assetid == rr[a].id) && (!rr[a].ss)) {
  97. names.push({market_hash_name: rr[a].market_hash_name, icon_url: rr[a].icon_url});
  98. rr[a].ss = 1;
  99. continue;
  100. }
  101. }
  102. }
  103. res.json({
  104. success: true,
  105. code: code,
  106. amount: checksum,
  107. tid: r.tradeofferid,
  108. items: names
  109. });
  110. }
  111. });
  112. }
  113. });
  114. });
  115.  
  116.  
  117. app.get('/'+sc2+'/', function (req, res) {
  118.  
  119. var parola = req.query['parola'];
  120. if(parola != parolaSmechera) {
  121. res.json({
  122. success: false,
  123. error: 'The password entered is wrong!'
  124. });
  125. }
  126.  
  127. var names = req.query['names'];
  128. names = names.split(',');
  129. var partner = req.query['partner'];
  130. var token = req.query['token'];
  131. var checksum = req.query['checksum'];
  132. offers.loadMyInventory({
  133. appId: 730,
  134. contextId: 2
  135. }, function(err, items) {
  136. if(err) {
  137. logger.error('Error sending trade (1)');
  138. logger.debug(err);
  139. res.json({
  140. success: false,
  141. error: "Error: An error ocurred when trade offer have sent to you, try again later!"
  142. });
  143. } else {
  144. var senditems = [];
  145. for(var i = 0; i < names.length; i++) {
  146. for(var a = 0; a < items.length; a++) {
  147. if((names[i] == items[a].market_hash_name) && (!items[a].ss)) {
  148. senditems.push({
  149. appid: 730,
  150. contextid: 2,
  151. assetid: items[a].id
  152. });
  153. if(senditems.length == names.length-1) break;
  154. items[a].ss = 1;
  155. continue;
  156. }
  157. if(senditems.length == names.length-1) break;
  158. }
  159. };
  160. var code = makecode();
  161. console.log(partner, token, checksum, names, senditems);
  162. offers.makeOffer({
  163. partnerAccountId: partner,
  164. accessToken: token,
  165. itemsFromThem: [],
  166. itemsFromMe: senditems,
  167. message: 'Withdraw | -'+checksum+' coins | ['+code+']'
  168. }, function(err, r) {
  169. if(err) {
  170. logger.error('Error sending trade (2)');
  171. logger.debug(err);
  172. res.json({
  173. success: false,
  174. error: "Error: The item is already in trade. Try again with other item."
  175. });
  176. } else {
  177. res.json({
  178. success: true,
  179. code: code,
  180. amount: -checksum,
  181. tid: r.tradeofferid,
  182. state: 2
  183. });
  184. }
  185. });
  186. }
  187. });
  188. });
  189.  
  190. var ips = {};
  191. app.get('/checkTrade/', function (req, res) {
  192. if(ips[req.connection.remoteAddress]+15 >= time()) {
  193. return;
  194. } else {
  195. ips[req.connection.remoteAddress] = time();
  196. }
  197. var tid = req.query['tid'];
  198. offers.getOffer({
  199. tradeofferid: tid
  200. }, function(err, trade) {
  201. if(err) {
  202. logger.error('Error: Cant make trade.');
  203. logger.debug(err);
  204. res.json({
  205. success: false,
  206. error: err.toString()
  207. });
  208. } else {
  209. logger.debug(trade);
  210. if(trade.response.offer.trade_offer_state == 3) {
  211. res.json({
  212. success: true,
  213. action: 'accept',
  214. result: 'Success: Coins got updated.'
  215. });
  216. } else if(trade.response.offer.trade_offer_state == 7) {
  217. res.json({
  218. success: true,
  219. result: 'Error: You declined the offer.',
  220. action: 'cross'
  221. });
  222. } else {
  223. res.json({
  224. success: false,
  225. error: 'Error: There was an error accepting the trade offer.'
  226. });
  227. }
  228. }
  229. });
  230. });
  231.  
  232. function cancelTrade(offerid) {
  233. offers.declineOffer({
  234. tradeOfferId: offerid
  235. }, function(err, log) {
  236. if (err) {
  237. logger.error('Cancel trade #'+offerid);
  238. logger.debug(err);
  239. return;
  240. }
  241. logger.debug(log);
  242. logger.trace('Offer #'+offerid+' canceled');
  243. });
  244. }
  245.  
  246. query('SELECT * FROM `bots` WHERE `id` = '+pool.escape(process.argv[2]), function(err, res) {
  247. if((err) || (!res[0])) {
  248. logger.error('Cant find account');
  249. process.exit(0);
  250. return;
  251. }
  252. account = res[0];
  253. app.listen(portBot+account.id);
  254. logger.trace('We got account info');
  255. account.twoFactorCode = SteamTotp.generateAuthCode(account.shared_secret);
  256. account.auth = false;
  257. logger.debug(account);
  258. community.login(account, login);
  259. });
  260.  
  261. community.on('confKeyNeeded', function(tag, callback) {
  262. callback(null, time, SteamTotp.getConfirmationKey(account.identity_secret, time(), tag));
  263. });
  264.  
  265. community.on('newConfirmation', function(confirmation) {
  266. var time = time();
  267. var key = SteamTotp.getConfirmationKey(account.identity_secret, time, 'allow');
  268. confirmation.respond(time, key, true, function(err) {
  269. if(err) {
  270. logger.error('ERROR: Confirmation.');
  271. logger.debug(err);
  272. return;
  273. }
  274. logger.trace('OK: New confirmation.');
  275. });
  276. });
  277.  
  278. function query(sql, callback) {
  279. if (typeof callback === 'undefined') {
  280. callback = function() {};
  281. }
  282. pool.getConnection(function(err, connection) {
  283. if(err) return callback(err);
  284. logger.info('OK: Query: '+connection.threadId);
  285. connection.query(sql, function(err, rows) {
  286. if(err) return callback(err);
  287. connection.release();
  288. return callback(null, rows);
  289. });
  290. });
  291. }
  292.  
  293. function login(err, sessionID, cookies, steamguard) {
  294. if(err) {
  295. logger.debug(err);
  296. if(err.message == "SteamGuardMobile") {
  297. account.twoFactorCode = SteamTotp.generateAuthCode(account.shared_secret);
  298. logger.warn('ERROR: TwoFactorCode: '+account.twoFactorCode);
  299. setTimeout(function() {
  300. community.login(account, login);
  301. }, 5000);
  302. return;
  303. }
  304. process.exit(0);
  305. }
  306. logger.trace('OK: Auth access.');
  307. account.sessionID = sessionID;
  308. account.cookies = cookies;
  309. community.getWebApiKey('csgofox.net', webApiKey);
  310. community.startConfirmationChecker(100, account.identity_secret);
  311. }
  312.  
  313. function webApiKey(err, key) {
  314. if(err) {
  315. logger.debug(err);
  316. process.exit(0);
  317. return;
  318. }
  319. account.key = key;
  320. logger.trace('OK: Bot-apikey >> '+account.accountName+' '+account.key);
  321. offersSetup();
  322. community.loggedIn(checkLoggedIn);
  323. }
  324.  
  325. function offersSetup() {
  326. logger.trace('OK: steam-tradeoffers');
  327. offers.setup({
  328. sessionID: account.sessionID,
  329. webCookie: account.cookies,
  330. APIKey: account.key
  331. });
  332. }
  333.  
  334. function checkLoggedIn(err, loggedIn, familyView) {
  335. if((err) || (!loggedIn)) {
  336. logger.error('We arent logged in')
  337. process.exit(0);
  338. } else {
  339. logger.trace('OK: Logged in!');
  340. account.auth = true;
  341. }
  342. }
  343.  
  344. function makecode() {
  345. var text = "";
  346. var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  347.  
  348. for(var i=0; i < 5; i++)
  349. text += possible.charAt(Math.floor(Math.random() * possible.length));
  350.  
  351. return text;
  352. }
  353.  
  354. function time() {
  355. return parseInt(new Date().getTime()/1000)
  356. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement