Guest User

Untitled

a guest
Jan 19th, 2017
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 49.85 KB | None | 0 0
  1. var config = require('./config');
  2. var html = '<!DOCTYPE html><html><head> <title>CSGOTurbo - websocket</title> <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css"> <style>html, body{height: 100%;}body{margin: 0; padding: 0; width: 100%; color: #B0BEC5; display: table; font-weight: 100; font-family: \'Lato\';}.container{text-align: center; display: table-cell; vertical-align: middle;}.content{text-align: center; display: inline-block;}.title{font-size: 72px; margin-bottom: 40px;}</style></head><body><div class="container"> <div class="content"> <div class="title">Cookies? Cookies!</div></div></div></body></html>';
  3. var server = require('http').createServer(function(request, response) {
  4. response.writeHeader(200, {"Content-Type": "text/html"});
  5. response.write(html);
  6. response.end();
  7. });
  8. var io = require('socket.io')(server); //SITE init start
  9. var request = require('request');
  10. var mysql = require('mysql');
  11. var fs = require('fs');
  12. var sha256 = require('sha256');
  13. var math = require('mathjs');
  14. var connection = mysql.createConnection({
  15. host : config.host,
  16. user : config.user,
  17. password : config.password,
  18. database : config.db
  19. }); //SITE init end
  20.  
  21. //BOT init start
  22. var SteamCommunity = require('steamcommunity');
  23. var community = new SteamCommunity();
  24. var SteamUser = require('steam-user');
  25. var TradeOfferManager = require('steam-tradeoffer-manager');
  26. var SteamTotp = require('steam-totp');
  27. //BOT init stop
  28.  
  29. //SITE SETTINGS
  30. var prices = JSON.parse(fs.readFileSync(__dirname + '/prices.txt'));
  31. var users = {};
  32. var chat_muted = false;
  33. var isSteamRIP = false;
  34. var pause = false;
  35. var lastrolls = [];
  36. var last_message = {};
  37. var usersBr = {};
  38. var chat_history = [];
  39. var currentBets = {'red': [], 'green': [], 'black': []};
  40. var accept = 100;
  41. var wait = 50;
  42. var timer = -1;
  43. var currentRollid = 0;
  44. var winningNumber = 0;
  45. var actual_hash = sha256(generate(64)+'FUCKINGRETARDSINTHISFUCKINGCSGOGAMEXDDD'+sha256('ripGAME')+generate(2));
  46. // not the best RNG by the way
  47.  
  48. //BOT SETTINGS
  49. var admin = config.admin;
  50. var botsteamid = config.botsteamid;
  51. var identitysecret = config.identitysecret;
  52. var sharedsecret = config.sharedsecret;
  53. var polling_interval = 5000;
  54. //BOT ACCOUNT DETALIS
  55. var details = {
  56. "accountName" : config.bot_username,
  57. "password" : config.bot_password,
  58. "twoFactorCode" : SteamTotp.generateAuthCode(sharedsecret)
  59. };
  60. //BOT CLIENT INIT
  61. var client = new SteamUser();
  62. //BOT MANAGER INIT
  63. var manager = new TradeOfferManager({
  64. "steam" : client,
  65. "domain" : config.manager_domain,
  66. "language" : config.manager_lang,
  67. "cancelTime" : config.manager_cancelTime
  68. });
  69.  
  70. client.logOn(details); //bot login
  71. connection.connect(); //db connect
  72.  
  73. var site_bots = [manager];
  74. var bots_list = {'76561198063160244': manager};
  75.  
  76. /* */
  77. /* SITE PART */
  78. /* */
  79.  
  80. load();
  81. checkTimer();
  82.  
  83. io.on('connection', function (socket) {
  84. var user = false;
  85. socket.on('init', function (init) {
  86. if(!init) return;
  87. if(init.game == 'roulette') socket.emit('roulette round',timer/10,currentBets,actual_hash);
  88. if(init.game == 'roulette') socket.emit('roulette history',lastrolls);
  89. socket.emit('users online', Object.keys(users).length);
  90. socket.emit('chat', chat_history);
  91. if(init.logged){
  92. connection.query('SELECT * FROM `users` WHERE `steamid`=\''+init.steamid+'\' AND `token_time`=\''+init.time+'\' AND `token`=\''+init.token+'\' LIMIT 1', function(err, rows) {
  93. if((err) || (!rows.length)) {
  94. socket.disconnect();
  95. console.log('auth failed.');
  96. return;
  97. }
  98. else if(rows) {
  99. if(rows[0].logged_in) return;
  100. if(rows[0].banned) return;
  101. connection.query('UPDATE `users` SET `logged_in` = 1 WHERE `steamid`=\''+init.steamid+'\' AND `token_time`=\''+init.time+'\' AND `token`=\''+init.token+'\' LIMIT 1', function(err1, rows1) {
  102. if(err1) return;
  103. user = rows[0];
  104. if(!users[rows[0].steamid]) {
  105. users[rows[0].steamid] = {
  106. socket: [],
  107. }
  108. }
  109. users[rows[0].steamid]['socket'].push(socket.id);
  110. });
  111. } else {
  112. return;
  113. }
  114. });
  115. }
  116. });
  117. socket.on('disconnect', function() {
  118. var index = -1;
  119. if(users[user.steamid])
  120. index = users[user.steamid]['socket'].indexOf(socket.id);
  121. if (index > -1) {
  122. users[user.steamid]['socket'].splice(index, 1);
  123. }
  124. if(users[user.steamid]) { if(Object.keys(users[user.steamid]['socket']).length == 0) delete users[user.steamid]; }
  125. });
  126. socket.on('trade token', function(token) {
  127. if(!user) return socket.emit('notify','error','notLoggedIn');
  128. if(!token) return socket.emit('notify','error','tradeTokenFailed');
  129. if(typeof token != 'string') return socket.emit('notify','error','tradeTokenFailed');
  130. if(/^(.{4,8})$/.test(token)){
  131. connection.query('UPDATE `users` SET `tradeurl` = '+connection.escape(token)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err, row) {
  132. if(err) {
  133. socket.emit('notify','error','tradeTokenFailed');
  134. console.log(err);
  135. return;
  136. }
  137. socket.emit('notify','success','tradeTokenSuccess',[token]);
  138. });
  139. } else {
  140. socket.emit('notify','error','tradeTokenFailed');
  141. }
  142. });
  143. socket.on('request inventory', function(force) {
  144. if(!user) return socket.emit('notify','error','notLoggedIn');
  145. if(!force) var force = false;
  146. if(typeof force != 'boolean') var force = false;
  147. if ((fs.existsSync('cache/'+user.steamid+'.txt')) && (force == false)) {
  148. var inventory = JSON.parse(fs.readFileSync('cache/'+user.steamid+'.txt'));
  149. socket.emit('inventory',{inventory: inventory.inventory, prices: inventory.prices});
  150. socket.emit('notify','','loadInventoryCached');
  151. } else {
  152. var steamid_substr = ''+user.steamid;
  153. steamid_substr = steamid_substr.substr(7);
  154. steamid_substr = parseInt(steamid_substr);
  155. var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728);
  156. var rand = site_bots[Math.floor(Math.random() * site_bots.length)];
  157. var app = rand.createOffer(tradelink);
  158. app.getPartnerInventoryContents('730','2',function(get_err,inventory) {
  159. if(get_err){
  160. console.log('error occured while deposit');
  161. console.log(get_err);
  162. socket.emit('notify','error','loadInventoryError');
  163. return;
  164. } else {
  165. var output_prices = [];
  166. for(key in inventory){
  167. var obj = inventory[key];
  168. if(prices[obj['market_hash_name']])
  169. var a_price = prices[obj['market_hash_name']]*1000;
  170. else var a_price = 0;
  171. if(a_price < 500){
  172. a_price = 0;
  173. }
  174. output_prices.push({
  175. market_hash_name: obj['market_hash_name']*1000,
  176. price: ''+a_price
  177. })
  178. }
  179. fs.writeFile('cache/'+user.steamid+'.txt', JSON.stringify({inventory: inventory, prices: output_prices}), function(fserr) {
  180. if(fserr) {
  181. socket.emit('notify','error','loadSiteInventoryError');
  182. return console.log(fserr);
  183. }
  184. });
  185. socket.emit('inventory',{inventory: inventory, prices: output_prices});
  186. socket.emit('notify','success','loadInventorySuccess');
  187. }
  188. });
  189. }
  190. });
  191. socket.on('update ref', function(code) {
  192. if(!user) return socket.emit('notify','error','notLoggedIn');
  193. if(!code) return socket.emit('notify','error','updateRefFail');
  194. if(typeof code != 'string') return socket.emit('notify','error','updateRefFail');
  195. if(code.length >= 255) return socket.emit('notify','error','updateRefFail');
  196. if (res = /^(.{5,})$/.exec(code)) {
  197. connection.query('SELECT `code` FROM `users` WHERE `code` = '+connection.escape(res[1].toUpperCase())+' LIMIT 1', function(codes_error, codes){
  198. if(codes_error){
  199. socket.emit('notify','error','updateRefFail');
  200. } else {
  201. if(codes.length > 0){
  202. socket.emit('notify','error','updateRefAlreadyTaken');
  203. } else {
  204. connection.query('UPDATE `users` SET `code` = '+connection.escape(res[1].toUpperCase())+' WHERE `steamid` = '+connection.escape(user.steamid), function(codes_update_error){
  205. if(codes_update_error){
  206. console.log(codes_update_error);
  207. return socket.emit('notify','error','updateRefFail');
  208. } else {
  209. socket.emit('notify','success','updateRefSuccess');
  210. }
  211. });
  212. }
  213. }
  214. });
  215. } else {
  216. socket.emit('notify','error','updateRefRefused');
  217. }
  218. });
  219. socket.on('deposit items', function(items) {
  220. if(!user) return socket.emit('notify','error','notLoggedIn');
  221. if(items.length < 1) return socket.emit('notify','error','depositNoItemsRequested');
  222. if(Object.prototype.toString.call(items) !== '[object Array]') return socket.emit('notify','error','depositNoItemsRequested');
  223. if(user.transfer_banned) return socket.emit('notify','error','withdrawSendError15');
  224. if(isSteamRIP === false){
  225. connection.query('SELECT `tradeurl` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  226. if((err) || (!row.length)) {
  227. console.log(err);
  228. socket.emit('notify','error','serverError');
  229. return;
  230. }
  231. if(row[0].tradeurl.length < 3) socket.emit('notify','error','noTradeToken');
  232. else {
  233. connection.query('SELECT * FROM `trade_history` WHERE `offer_partner` = '+connection.escape(user.steamid)+' AND (`offer_state` = \'sent\' OR `offer_state` = \'pending\' OR `offer_state` = \'2\' OR `offer_state` = \'9\')', function(offer_err, offers) {
  234. if(offer_err){
  235. console.log(offer_err);
  236. socket.emit('notify','error','serverError');
  237. return;
  238. } else if(offers.length > 0){
  239. socket.emit('notify','error','pendingOffer');
  240. return;
  241. } else {
  242. var steamid_substr = ''+user.steamid;
  243. steamid_substr = steamid_substr.substr(7);
  244. steamid_substr = parseInt(steamid_substr);
  245. var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728)+'&token='+row[0].tradeurl;
  246. var rand = site_bots[Math.floor(Math.random() * site_bots.length)];
  247. var app = rand.createOffer(tradelink);
  248. app.getPartnerInventoryContents('730','2',function(get_err,inventory) {
  249. if(get_err){
  250. console.log('error occured while deposit');
  251. console.log(get_err);
  252. socket.emit('notify','error','depositFailed');
  253. return;
  254. } else {
  255. var names = [];
  256. var hacker = false;
  257. items.forEach(function(item) {
  258. for(key in inventory){
  259. var object = inventory[key];
  260. if(object.id == item){
  261. if(prices[object.market_hash_name])
  262. var a_price = prices[object.market_hash_name];
  263. else var a_price = 0;
  264. if(a_price < 500){
  265. hacker = true;
  266. }
  267. names.push({
  268. market_hash_name: object.market_hash_name,
  269. id: parseInt(object.id),
  270. price: a_price
  271. });
  272. }
  273. }
  274. });
  275. var total_price = 0;
  276. var after_items = [];
  277. names.forEach(function(name) {
  278. total_price+=name.price;
  279. after_items.push(name.id);
  280. });
  281. after_items.sort(function (a, b) { return a - b; });
  282. items.sort(function (a, b) { return a - b; });
  283. if (items.length == after_items.length
  284. && items.every(function(u, i) {
  285. return u === after_items[i];
  286. })
  287. ) {
  288. if((total_price < 500) || (hacker)){
  289. socket.emit('notify','error','depositFailed');
  290. return;
  291. } else {
  292. console.log(total_price);
  293. items.forEach(function(target) {
  294. app.addTheirItem({
  295. appid: 730,
  296. contextid: 2,
  297. amount: 1,
  298. assetid: target
  299. });
  300. });
  301. app.setToken(row[0].tradeurl);
  302. app.getUserDetails(function(a_err,me,them) {
  303. if(a_err){
  304. console.log('error occured while deposit');
  305. console.log(a_err);
  306. socket.emit('notify','error','depositFailed');
  307. return;
  308. } else {
  309. if(them.escrowDays == 0){
  310. app.send(function(error, status) {
  311. if(error){
  312. console.log('error occured while deposit');
  313. console.log(error);
  314. socket.emit('notify','error','depositFailed');
  315. return;
  316. } else {
  317. console.log('Deposit request, items: '+items);
  318. connection.query('INSERT INTO `trade_history` SET `offer_id`='+connection.escape(app.id)+',`offer_partner`='+connection.escape(user.steamid)+',`offer_state`='+connection.escape(status)+',`worth`='+total_price+',`action`=\'deposit\'', function(err1) {
  319. if(err1){
  320. console.log('error occured while deposit');
  321. console.log(err1);
  322. socket.emit('notify','error','depositFailed');
  323. return;
  324. } else {
  325. socket.emit('notify','success','depositOfferSent',[app.id]);
  326. }
  327. });
  328. }
  329. });
  330. } else {
  331. socket.emit('notify','error','escrowError');
  332. }
  333. }
  334. });
  335. } } else {
  336. if(items.length == after_items.length){
  337. console.log('error here');
  338. console.log(items);
  339. console.log(after_items);
  340. }
  341. socket.emit('notify','error','withdrawItemsUnavailable');
  342. return;
  343. }
  344. }
  345. });
  346. } });
  347. }
  348. });
  349. } else {
  350. socket.emit('notify','error','withdrawSendError20');
  351. }
  352. });
  353. socket.on('withdraw items', function(items) {
  354. if(!user) return socket.emit('notify','error','notLoggedIn');
  355. if(items.length < 1) return socket.emit('notify','error','withdrawNoItemsRequested');
  356. if(Object.prototype.toString.call(items) !== '[object Array]') return socket.emit('notify','error','withdrawNoItemsRequested');
  357. if(user.transfer_banned) return socket.emit('notify','error','withdrawSendError15');
  358. if(isSteamRIP === false){
  359. connection.query('SELECT `tradeurl`,`deposit_sum` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  360. if((err) || (!row.length)) {
  361. console.log(err);
  362. socket.emit('notify','error','serverError');
  363. return;
  364. }
  365. if(row[0].tradeurl.length < 3) socket.emit('notify','error','noTradeToken');
  366. else {
  367. connection.query('SELECT * FROM `trade_history` WHERE `offer_partner` = '+connection.escape(user.steamid)+' AND (`offer_state` = \'sent\' OR `offer_state` = \'pending\' OR `offer_state` = \'2\' OR `offer_state` = \'9\')', function(offer_err, offers) {
  368. if(offer_err){
  369. console.log(offer_err);
  370. socket.emit('notify','error','serverError');
  371. return;
  372. } else if(offers.length > 0){
  373. socket.emit('notify','error','pendingOffer');
  374. return;
  375. } else {
  376. var steamid_substr = ''+user.steamid;
  377. steamid_substr = steamid_substr.substr(7);
  378. steamid_substr = parseInt(steamid_substr);
  379. var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728)+'&token='+row[0].tradeurl;
  380. connection.query('SELECT * FROM `inventory` WHERE `in_trade` = \'0\'', function(inv_err, my_inv) {
  381. if(inv_err){
  382. console.log('error occured while withdraw');
  383. console.log(inv_err);
  384. socket.emit('notify','error','withdrawFailed');
  385. return;
  386. } else {
  387. var names = [];
  388. var problem = false;
  389. var more_bots = false;
  390. items.forEach(function(item) {
  391. for(key in my_inv){
  392. var object = my_inv[key];
  393. if(object.id == item){
  394. if(object.bot_id !== my_inv[0]['bot_id']) more_bots = true;
  395. if(prices[object.market_hash_name])
  396. var a_price = prices[object.market_hash_name];
  397. else {
  398. var a_price = 0;
  399. problem = true;
  400. }
  401. names.push({
  402. market_hash_name: object.market_hash_name,
  403. id: parseInt(object.id),
  404. price: a_price
  405. });
  406. }
  407. }
  408. });
  409. if(more_bots) return socket.emit('notify','error','withdrawMultipleBots');
  410. if(!problem){
  411. var total_price = 0;
  412. var after_items = [];
  413. names.forEach(function(name) {
  414. total_price+=name.price;
  415. after_items.push(name.id);
  416. });
  417. after_items.sort(function (a, b) { return a - b; });
  418. items.sort(function (a, b) { return a - b; });
  419. if (items.length == after_items.length
  420. && items.every(function(u, i) {
  421. return u === after_items[i];
  422. })
  423. ) {
  424. if((total_price > 5000) && (row[0].deposit_sum < 5000)) {
  425. socket.emit('notify','error','withdrawNotEnoughDeposit');
  426. } else {
  427. connection.query('SELECT `wallet` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(wallet_err, balance) {
  428. if(wallet_err){
  429. console.log('error occured while withdraw');
  430. console.log(wallet_err);
  431. socket.emit('notify','error','withdrawFailed');
  432. return;
  433. } else {
  434. if(balance[0].wallet >= total_price){
  435. if(!my_inv[0]) return;
  436. var app = bots_list[my_inv[0]['bot_id']].createOffer(tradelink);
  437. items.forEach(function(target) {
  438. app.addMyItem({
  439. appid: 730,
  440. contextid: 2,
  441. amount: 1,
  442. assetid: target
  443. });
  444. });
  445. app.setToken(row[0].tradeurl);
  446. app.getUserDetails(function(a_err,me,them) {
  447. if(a_err){
  448. console.log('error occured while withdraw');
  449. console.log(a_err);
  450. socket.emit('notify','error','withdrawFailed');
  451. return;
  452. } else {
  453. if(them.escrowDays == 0){
  454. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(total_price)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err3) {
  455. if(err3){
  456. console.log('error occured while withdraw, balance change, user: '+user.steamid);
  457. console.log(err3);
  458. socket.emit('notify','error','notEnoughCoins');
  459. return;
  460. } else {
  461. items.forEach(function(update_item) {
  462. connection.query('UPDATE `inventory` SET `in_trade` = \'1\''+' WHERE `id` = '+connection.escape(update_item), function(err6) {
  463. if(err6) {
  464. console.log('error at updating in trade items status. id:'+update_item);
  465. console.log(err6);
  466. }
  467. });
  468. });
  469. app.send(function(error, status) {
  470. if(error){
  471. items.forEach(function(update_item) {
  472. connection.query('UPDATE `inventory` SET `in_trade` = \'0\''+' WHERE `id` = '+connection.escape(update_item), function(err9) {
  473. if(err6) {
  474. console.log('error at updating in trade items status. id:'+update_item);
  475. console.log(err9);
  476. }
  477. });
  478. });
  479. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+parseInt(total_price)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err4) {
  480. if(err4){
  481. console.log('FUCK ERROR WHILE RETURNING BALANCE, error occured while withdraw, user: '+user.steamid);
  482. console.log(err4);
  483. }
  484. });
  485. console.log('error occured while withdraw, user: '+user.steamid);
  486. console.log(error);
  487. socket.emit('notify','error','withdrawFailed');
  488. return;
  489. } else {
  490. console.log('Withdraw request, items: '+items);
  491. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = '+connection.escape('-'+total_price)+', `reason` = \'Withdraw\'', function(err_wallet_hist) {
  492. if(err_wallet_hist){
  493. console.log('database error at wallet_change');
  494. console.log(err_wallet_hist);
  495. }
  496. });
  497. connection.query('INSERT INTO `trade_history` SET `offer_id`='+connection.escape(app.id)+',`offer_partner`='+connection.escape(user.steamid)+',`offer_state`='+connection.escape(status)+',`worth`='+total_price+',`action`=\'withdraw\'', function(err1) {
  498. if(err1){
  499. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+parseInt(total_price)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err5) {
  500. if(err5){
  501. console.log('FUCK ERROR WHILE RETURNING BALANCE, error occured while withdraw, user: '+user.steamid);
  502. console.log(err5);
  503. }
  504. });
  505. console.log('error occured while withdraw, user: '+user.steamid);
  506. console.log(err1);
  507. socket.emit('notify','error','withdrawFailed');
  508. return;
  509. } else {
  510. users[user.steamid].socket.forEach(function(asocket) {
  511. if(io.sockets.connected[asocket])
  512. io.sockets.connected[asocket].emit('balance change', parseInt('-'+total_price));
  513. if(io.sockets.connected[asocket])
  514. io.sockets.connected[asocket].emit('notify','success','withdrawOfferSent',[app.id]);
  515. });
  516. }
  517. });
  518. }
  519. });
  520. }
  521. });
  522. } else {
  523. socket.emit('notify','error','escrowError');
  524. }
  525. }
  526. });
  527. } else {
  528. socket.emit('notify','error','notEnoughCoins');
  529. }
  530. }
  531. });
  532. }
  533. } else {
  534. socket.emit('notify','error','withdrawItemsUnavailable');
  535. return;
  536. }
  537. } else {
  538. socket.emit('notify','error','withdrawFailed');
  539. return;
  540. }
  541. }
  542. });
  543. }
  544. });
  545. }
  546. });
  547. } else {
  548. socket.emit('notify','error','withdrawSendError20');
  549. }
  550. });
  551. socket.on('roulette play', function(play, color) {
  552. if(!user) return socket.emit('notify','error','notLoggedIn');
  553. if((!play) || (!color)) return socket.emit('notify','error','roulettePlayFailed');
  554. if((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify','error','roulettePlayFailed');
  555. if(typeof color != 'string') return socket.emit('notify','error','roulettePlayFailed');
  556. if((usersBr[user.steamid] !== undefined) && (usersBr[user.steamid] == 3)) {
  557. socket.emit('notify','error','rouletteMaxBets',[3]);
  558. return;
  559. }
  560. play = parseInt(play);
  561. if(isNaN(play)) return socket.emit('notify','error','cannotParseValue');
  562. play = ''+play;
  563. play = play.replace(/\D/g,'');
  564. if(color !== 'green' && color !== 'red' && color !== 'black') return socket.emit('notify','error','rouletteUnknownColor');
  565. if(play < 1) return socket.emit('notify','error','rouletteMinBet', [play,1]);
  566. if(play > 1000000) return socket.emit('notify','error','rouletteMaxBet', [play,1000000]);
  567. if(!pause) {
  568. connection.query('SELECT `wallet` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  569. if((err) || (!row.length)) {
  570. console.log(err);
  571. socket.emit('notify','error','roulettePlayFailed');
  572. return;
  573. }
  574. if(row[0].wallet >= play) {
  575. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play)+', `total_bet` = `total_bet` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
  576. if(err2) {
  577. console.log(err2);
  578. socket.emit('notify','error','roulettePlayFailed');
  579. return;
  580. }
  581. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play)+', `reason` = \'Roulette #'+currentRollid+' '+color+'\'', function(err3, row3) {
  582. if(err3) {
  583. console.log('important error at wallet_change');
  584. console.log(err3);
  585. socket.emit('notify','error','serverError');
  586. return;
  587. }
  588. if(usersBr[user.steamid] === undefined) {
  589. usersBr[user.steamid] = 1;
  590. } else {
  591. usersBr[user.steamid]++;
  592. }
  593. io.sockets.emit('roulette player',{
  594. amount: play,
  595. player: {
  596. avatar: user.avatar,
  597. steamid: user.steamid,
  598. username: user.username
  599. }
  600. }, color);
  601. currentBets[color].push({
  602. amount: play,
  603. player: {
  604. avatar: user.avatar,
  605. steamid: user.steamid,
  606. username: user.username
  607. }
  608. });
  609. users[user.steamid].socket.forEach(function(asocket) {
  610. if(io.sockets.connected[asocket])
  611. io.sockets.connected[asocket].emit('balance change', parseInt('-'+play));
  612. if(io.sockets.connected[asocket])
  613. io.sockets.connected[asocket].emit('notify','success','roulettePlaySuccess',[play,color,usersBr[user.steamid],3]);
  614. });
  615. });
  616. });
  617. } else {
  618. socket.emit('notify','error','notEnoughCoins');
  619. }
  620. });
  621. } else
  622. socket.emit('notify','error','roulettePlayFailed');
  623. });
  624. socket.on('chat message', function(chat) {
  625. if((!chat.message) || (!chat.type)) return;
  626. if((typeof chat.message != 'string') || (typeof chat.type != 'string')) return;
  627. if(last_message[user.steamid]+1 >= time()) {
  628. return;
  629. } else {
  630. last_message[user.steamid] = time();
  631. }
  632. if(!user) return socket.emit('notify','error','notLoggedIn');
  633. if(chat && chat.message){
  634. if(chat.message.indexOf('/') === 0){
  635. var res = null;
  636. if(chat.message.indexOf('/send') === 0){
  637. if (res = /^\/send ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
  638. if((res[2] < 1) || (res[2] > 100000)){
  639. return socket.emit('notify','error','chatSendOutOfRange');
  640. } else {
  641. var send_amount = parseInt(res[2]);
  642. if(isNaN(send_amount)) return socket.emit('notify','error','cannotParseValue');
  643. connection.query('SELECT `wallet`,`total_bet`,`deposit_sum`,`transfer_banned` FROM `users` WHERE `steamid` = '+user.steamid+' LIMIT 1',function(error, ppl) {
  644. if(error){
  645. console.log(error);
  646. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  647. } else {
  648. if(ppl[0].total_bet < 1000){
  649. return socket.emit('notify','error','chatSendNotEnoughCoins',[1000]);
  650. } else if(ppl[0].deposit_sum < 1000) {
  651. return socket.emit('notify','error','chatSendNotEnoughDeposit',[1000]);
  652. } else if(ppl[0].wallet < send_amount){
  653. return socket.emit('notify','error','chatSendOutOfRange');
  654. } else if(ppl[0].transfer_banned){
  655. return socket.emit('notify','error','chatSendUnavailable');
  656. } else {
  657. connection.query('SELECT * FROM `users` WHERE `steamid` = '+res[1], function(error_2, receiver) {
  658. if(error_2){
  659. console.log(error_2);
  660. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  661. } else {
  662. if((!receiver) || (!receiver.length)){
  663. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  664. } else {
  665. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+send_amount+' WHERE `steamid` = '+connection.escape(user.steamid), function(error_3){
  666. if(error_3){
  667. console.log(error_3);
  668. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  669. } else {
  670. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+send_amount+' WHERE `steamid` = '+connection.escape(res[1]), function(error_4) {
  671. if(error_4){
  672. console.log('error. cant give coins to receiver! '+res[1]);
  673. console.log(error_4);
  674. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  675. } else {
  676. connection.query('INSERT INTO `wallet_change` SET `change` = '+connection.escape('-'+send_amount)+',`reason` = '+connection.escape('Sent '+send_amount+' coins to '+res[1])+',`user` = '+connection.escape(user.steamid), function(error_5){
  677. if(error_5){
  678. console.log('error. not inserted wallet change for sender.');
  679. console.log(error_5);
  680. } else {
  681. connection.query('INSERT INTO `wallet_change` SET `change` = '+connection.escape(send_amount)+',`reason` = '+connection.escape('Received '+send_amount+' coins from '+user.steamid)+',`user` = '+connection.escape(res[1]), function(error_6) {
  682. if(error_6){
  683. console.log('error. not inserted wallet change for receiver.');
  684. console.log(error_6);
  685. }
  686. });
  687. }
  688. });
  689. users[user.steamid].socket.forEach(function(asocket) {
  690. if(io.sockets.connected[asocket]) {
  691. io.sockets.connected[asocket].emit('balance change', parseInt('-'+send_amount));
  692. io.sockets.connected[asocket].emit('notify','success','chatSendSuccess', [send_amount, res[1]]);
  693. }
  694. });
  695. users[res[1]].socket.forEach(function(asocket) {
  696. if(io.sockets.connected[asocket]) {
  697. io.sockets.connected[asocket].emit('balance change', send_amount);
  698. io.sockets.connected[asocket].emit('notify','success','chatSendReceived', [send_amount, res[1]]);
  699. }
  700. });
  701. }
  702. });
  703. }
  704. });
  705. }
  706. }
  707. });
  708. }
  709. }
  710. });
  711. }
  712. } else {
  713. socket.emit('notify','error','chatMissingParameters');
  714. }
  715. } else if(chat.message.indexOf('/ref') === 0) {
  716. if(res = /^\/ref (.)/.exec(chat.message)){
  717. if (res = /^\/ref (.{5,254})/.exec(chat.message)) {
  718. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(user_error, ouruser){
  719. if((user_error) || (ouruser.length !== 1)){
  720. console.log('cannot get user from referral');
  721. console.log(user_error);
  722. return;
  723. } else if((ouruser) && (ouruser.length === 1) && (ouruser[0].inviter.length > 0)) {
  724. return socket.emit('notify','error','chatReferralAlreadyUsed');
  725. } else {
  726. if(user.csgo == 'true'){
  727. connection.query('SELECT * FROM `users` WHERE `code` = '+connection.escape(res[1].toUpperCase())+' LIMIT 1', function(codes_error, codes){
  728. if(codes_error){
  729. socket.emit('notify','error','chatReferralFailed');
  730. } else if((codes[0]) && (codes[0].steamid == user.steamid)) {
  731. socket.emit('notify','error','chatReferralOwnCode');
  732. } else {
  733. if(codes.length > 0){
  734. connection.query('UPDATE `users` SET `inviter` = '+connection.escape(codes[0].steamid)+', `wallet` = `wallet` + 250 WHERE `steamid` = '+connection.escape(user.steamid), function(update_code_error, update_code){
  735. if(update_code_error){
  736. console.log('error while referal');
  737. console.log(update_code_error);
  738. socket.emit('notify','error','chatReferralFailed');
  739. return;
  740. } else {
  741. connection.query('INSERT INTO `wallet_change` SET `change` = \'250\',`reason` = \'Referral - free\',`user` = '+connection.escape(user.steamid));
  742. }
  743. });
  744. socket.emit('notify','success','chatReferralSuccess',[res[1],250]);
  745. users[user.steamid].socket.forEach(function(asocket) {
  746. if(io.sockets.connected[asocket]) {
  747. io.sockets.connected[asocket].emit('balance change', 250);
  748. }
  749. });
  750. } else {
  751. socket.emit('notify','error','chatReferralUnknown');
  752. }
  753. }
  754. });
  755. } else {
  756. socket.emit('notify','error','chatReferralNoCSGO');
  757. }
  758. }
  759. });
  760. } else {
  761. socket.emit('notify','error','chatReferralUnknown');
  762. }
  763. } else {
  764. socket.emit('notify','error','chatMissingParameters');
  765. }
  766. } else if(chat.message.indexOf('/muteChat') === 0){
  767. if((user.rank === 'siteAdmin') || (user.rank === 'root')){
  768. chat_muted = true;
  769. socket.emit('notify','success','chatMuted');
  770. } else {
  771. socket.emit('notify','error','chatAdminAccess');
  772. }
  773. } else if(chat.message.indexOf('/unmuteChat') === 0){
  774. if((user.rank === 'siteAdmin') || (user.rank === 'root')){
  775. chat_muted = false;
  776. socket.emit('notify','success','chatUnmuted');
  777. } else {
  778. socket.emit('notify','error','chatAdminAccess');
  779. }
  780. } else if(chat.message.indexOf('/access') === 0){
  781. if(user.rank === 'root'){
  782. if (res = /^\/access ([0-9]{17}) (.{1,})/.exec(chat.message)) {
  783. if((res[2] == 'user') || (res[2] == 'siteAdmin') || (res[2] == 'siteMod')){
  784. connection.query('UPDATE `users` SET `rank` = '+connection.escape(res[2])+' WHERE `steamid` = '+connection.escape(res[1]), function(access_err) {
  785. var levels = {user:1,siteMod:2,siteAdmin:3,root:4};
  786. if(access_err){
  787. return socket.emit('notify','error','chatAccessLevelFailed',[levels[res[2]],res[1]]);
  788. } else {
  789. return socket.emit('notify','success','chatAccessLevelSuccess',[levels[res[2]],res[1]]);
  790. }
  791. });
  792. } else {
  793. return socket.emit('notify','error','chatAccessLevelOutOfRange');
  794. }
  795. } else {
  796. socket.emit('notify','error','chatMissingParameters');
  797. }
  798. } else {
  799. socket.emit('notify','error','chatRootAccess');
  800. }
  801. } else if(chat.message.indexOf('/give') === 0){
  802. if(user.rank === 'root'){
  803. if (res = /^\/give ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
  804. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+connection.escape(res[2])+' WHERE `steamid` = '+connection.escape(res[1]), function(give_error) {
  805. if(give_error){
  806. console.log(give_error);
  807. socket.emit('notify','error','chatGiveFail');
  808. } else {
  809. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(res[1])+', `change` = '+connection.escape(res[2])+', `reason` = \'Received from server\'');
  810. if (users[res[1]]) {
  811. users[res[1]].socket.forEach(function(asocket) {
  812. if(io.sockets.connected[asocket])
  813. io.sockets.connected[asocket].emit('balance change',parseInt(res[2]));
  814. });
  815. }
  816. socket.emit('notify','success','chatGiveSuccess',[res[2],res[1]]);
  817. }
  818. });
  819. } else {
  820. socket.emit('notify','error','chatMissingParameters');
  821. }
  822. } else {
  823. socket.emit('notify','error','chatRootAccess');
  824. }
  825. } else if(chat.message.indexOf('/coins') === 0){
  826. if(user.rank === 'root'){
  827. connection.query('SELECT SUM(`wallet`) AS `sum` FROM `users`', function(error,total) {
  828. if(error) {
  829. return;
  830. } else {
  831. var total = total[0].sum;
  832. var total_inv = 0;
  833. connection.query('SELECT * FROM `inventory`', function(inv_err, inventory) {
  834. if(inv_err){
  835. return;
  836. } else {
  837. for(key in inventory){
  838. var obj = inventory[key];
  839. if(prices[obj['market_hash_name']])
  840. var a_price = prices[obj['market_hash_name']]
  841. else var a_price = 0;
  842. total_inv += a_price;
  843. }
  844. socket.emit('notify','success','chatCoinsBalance',[total_inv,total_inv,total]);
  845. }
  846. });
  847. }
  848. })
  849. } else {
  850. socket.emit('notify','error','chatRootAccess');
  851. }
  852. } else if(chat.message.indexOf('/mute') === 0){
  853. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  854. if (res = /^\/mute ([0-9]{17})/.exec(chat.message)) {
  855. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(res[1])+' LIMIT 1', function(mute_err, mute_callback){
  856. if(mute_err){
  857. return socket.emit('notify','error','chatMuteFail',[res[1]]);
  858. } else {
  859. if((mute_callback) && (mute_callback.length)){
  860. if(mute_callback[0].rank == 'user'){
  861. connection.query('UPDATE `users` SET `muted` = 1 WHERE `steamid` = '+connection.escape(res[1]),function(mute_err1) {
  862. if(mute_err1){
  863. return socket.emit('notify','error','chatMuteFail',[res[1]]);
  864. } else {
  865. return socket.emit('notify','success','chatMuteSuccess',[res[1]]);
  866. }
  867. });
  868. } else {
  869. return socket.emit('notify','error','chatMuteStaff');
  870. }
  871. } else {
  872. return socket.emit('notify','error','chatMuteFail',[res[1]]);
  873. }
  874. }
  875. });
  876. } else {
  877. socket.emit('notify','error','chatMissingParameters');
  878. }
  879. } else {
  880. socket.emit('notify','error','chatModAccess');
  881. }
  882. } else if(chat.message.indexOf('/unmute') === 0){
  883. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  884. if (res = /^\/unmute ([0-9]{17})/.exec(chat.message)) {
  885. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(res[1])+' LIMIT 1', function(unmute_err, unmute_callback){
  886. if(unmute_err){
  887. return socket.emit('notify','error','chatUnmuteFail',[res[1]]);
  888. } else {
  889. if((unmute_callback) && (unmute_callback.length)){
  890. if(unmute_callback[0].rank == 'user'){
  891. if(unmute_callback[0].muted == 1){
  892. connection.query('UPDATE `users` SET `muted` = 0 WHERE `steamid` = '+connection.escape(res[1]),function(unmute_err1) {
  893. if(unmute_err1){
  894. return socket.emit('notify','error','chatUnmuteFail',[res[1]]);
  895. } else {
  896. return socket.emit('notify','success','chatUnmuteSuccess',[res[1]]);
  897. }
  898. });
  899. } else {
  900. return socket.emit('notify','error','chatUnmuteNotMuted',[res[1]]);
  901. }
  902. } else {
  903. return socket.emit('notify','error','chatUnmuteStaff');
  904. }
  905. } else {
  906. return socket.emit('notify','error','chatUnmuteFail',[res[1]]);
  907. }
  908. }
  909. });
  910. } else {
  911. socket.emit('notify','error','chatMissingParameters');
  912. }
  913. } else {
  914. socket.emit('notify','error','chatModAccess');
  915. }
  916. } else if(chat.message.indexOf('/removeMessages') === 0){
  917. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  918. if (res = /^\/removeMessages ([0-9]{17})/.exec(chat.message)) {
  919. chat_history = chat_history.filter(function(obj) {
  920. return obj.profile.steamid !== res[1];
  921. });
  922. } else {
  923. socket.emit('notify','error','chatMissingParameters');
  924. }
  925. } else {
  926. socket.emit('notify','error','chatModAccess');
  927. }
  928. } else if(chat.message.indexOf('/removeMessage') === 0){
  929. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  930. if (res = /^\/removeMessage (.{1,})/.exec(chat.message)) {
  931. var index = chat_history.map(function(e) { return e.uniqueID; }).indexOf(res[1]);
  932. if (index > -1) {
  933. chat_history.splice(index, 1);
  934. }
  935. } else {
  936. socket.emit('notify','error','chatMissingParameters');
  937. }
  938. } else {
  939. socket.emit('notify','error','chatModAccess');
  940. }
  941. } else {
  942. return socket.emit('notify','error','chatUnknownCommand');
  943. }
  944. } else {
  945. if(((chat_muted === false) && (user.muted == 0)) || (user.rank != 'user')){
  946. connection.query('SELECT `total_bet` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  947. if(err) {
  948. socket.emit('notify','error','serverError');
  949. return;
  950. } else {
  951. if((row[0].total_bet < 50000) && (user.rank == 'user')) {
  952. socket.emit('notify','error','chatNotEnoughBets',[row[0].total_bet, 50000]);
  953. return;
  954. } else {
  955. chat.message = chat.message.replace(/<\/?[^>]+(>|$)/g, "");
  956. var uniqueID = generate(20);
  957. io.sockets.emit('chat message', {
  958. message: chat.message,
  959. profile: {
  960. avatar: user.avatar,
  961. rank: user.rank,
  962. steamid: user.steamid,
  963. username: user.username
  964. },
  965. time: time(),
  966. uniqueID: uniqueID
  967. });
  968. array_limit({
  969. message: chat.message,
  970. profile: {
  971. avatar: user.avatar,
  972. rank: user.rank,
  973. steamid: user.steamid,
  974. username: user.username
  975. },
  976. time: time(),
  977. uniqueID: uniqueID
  978. });
  979. }
  980. }
  981. });
  982. } else {
  983. return socket.emit('notify','error','chatIsMuted');
  984. }
  985. }
  986. }
  987. });
  988. });
  989.  
  990. setInterval(function() {
  991. io.sockets.emit('users online', Object.keys(users).length);
  992. },5000);
  993.  
  994. var steam_check_interval = 5000;
  995. setInterval(function() {
  996. request('http://is.steam.rip/api/v1/?request=IsSteamRip', function(rip_error, response, body) {
  997. if(rip_error){
  998. return;
  999. } else {
  1000. if(body){
  1001. if(body.result){
  1002. if(body.result.success === true){
  1003. if(body.result.isSteamRip === true){
  1004. isSteamRIP = true; //o nie! Steam nie zyje!
  1005. steam_check_interval = 20000;
  1006. } else {
  1007. isSteamRIP = false; //uff. Steam zyje!
  1008. }
  1009. }
  1010. }
  1011. }
  1012. }
  1013. });
  1014. },steam_check_interval);
  1015.  
  1016. function checkTimer() {
  1017. if((timer == -1) && (!pause)) {
  1018. timer = accept+wait;
  1019. timerID = setInterval(function() {
  1020. //console.log(timer);
  1021. if (timer == 0) {
  1022. away();
  1023. lastrolls.push(winningNumber);
  1024. }
  1025. if(timer == -100) {
  1026. currentBets = {'red': [], 'green': [], 'black': []};
  1027. usersBr = {};
  1028. timer = accept+wait;
  1029. currentRollid = currentRollid+1;
  1030. pause = false;
  1031. actual_hash = sha256(generate(118)+'FUCKINGRETARDSINTHISFUCKINGCSGOGAMEXDDD'+sha256('ripGAME')+getRandomInt(1,100));
  1032. io.sockets.emit('roulette new round', 15, actual_hash);
  1033. }
  1034. timer = timer-1;
  1035. }, 100);
  1036. }
  1037. }
  1038.  
  1039. function away() {
  1040. pause = true;
  1041. var secret = generate(20);
  1042. var sh = sha256(sha256(actual_hash)+'WHATTHEFUCK'+currentRollid+'sweetcat'+secret);
  1043. winningNumber = sh.substr(0, 8);
Add Comment
Please, Sign In to add comment