Guest User

Untitled

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