Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //{
- var config = require('./config');
- var fs = require('fs');
- /* var options = {
- key: fs.readFileSync('/etc/letsencrypt/live/csgosentinel.com/privkey.pem'),
- cert: fs.readFileSync('/etc/letsencrypt/live/csgosentinel.com/fullchain.pem'),
- requestCert: false,
- rejectUnauthorized: false
- };
- var html = '<html><head> <title>CSGOTurbo - websocket</title><link rel="stylesheet prefetch" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css"><link rel="stylesheet prefetch" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css"><link rel="stylesheet" type="text/css" href="/css/WS/style1.css"><link rel="stylesheet" type="text/css" href="/css/WS/app1.css"><link rel="stylesheet" type="text/css" href="/css/WS/application.css"><link rel="stylesheet" type="text/css" href="/css/WS/csgosentinel.css"><link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css"><link rel="stylesheet" type="text/css" href="/css/WS/style.css"><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="main-container"><center><div class="container"><div class="main-center"><div class="turbo "><div class="row" style="display:block;"><div class="col-md-1-3"><img style="margin-left: 0;padding-right: 0;" class="csgosentinel-logo animated" src="http://www.csgosentinel.com/img/official.png"></div></div></div></img><div id="clockdiv" class="countdown"><div class="row time-main" style="display: block;"><div class="col-md-1-5 time-main"><h1 class="time days">CSGOTurbo</h1><h6 class="time-t">IS A BEAUTY<h6></div></div></div><div class="footer" style="width: 100%;"><div class="data"><div class="social"><a href="https://twitter.com/realcsgosentinel" target="_blank"><i class="fa fa-twitter"></i></a><a href="http://steamcommunity.com/groups/goturbo" target="_blank"><i class="fa fa-steam"></i></a></div><div class="copyright">© CSGOTURBO 2017</div><div class="legal"><a href="http://www.responsiblegambling.org/" target="_blank">Responsible Gambling</a></div></div></div></center></body></html>';
- var server = require('https').createServer(options, function(request, response) {
- response.writeHeader(200, {
- 'Access-Control-Allow-Origin': '*',
- "Content-Type": "text/html"
- });
- response.write(html);
- response.end();
- }); */
- var io = require('socket.io')(8443); //SITE init start
- var crypto = require('crypto');
- var request = require('request');
- var mysql = require('mysql');
- var sha256 = require('sha256');
- var math = require('mathjs');
- var randomstring = require("randomstring");
- var request = require('request');
- var connection = mysql.createConnection({
- host: config.host,
- user: config.user,
- password: config.password,
- database: config.db
- }); //SITE init end
- //BOT init start
- var SteamCommunity = require('steamcommunity');
- var SteamID = SteamCommunity.SteamID;
- //var community = new SteamCommunity();
- var SteamUser = require('steam-user');
- var TradeOfferManager = require('steam-tradeoffer-manager');
- var SteamTotp = require('steam-totp');
- var log4js = require('log4js');
- const log4js_extend = require("log4js-extend");
- log4js.configure({
- appenders: {
- out: { type: 'console' },
- task: {
- type: 'dateFile',
- filename: 'logs/bot',
- pattern: '-yyyy-MM-dd.log',
- alwaysIncludePattern: true
- }
- },
- categories: {
- default: { appenders: [ 'out', 'task' ], level: 'all' }
- }
- });
- log4js_extend(log4js, {
- path: __dirname,
- format: "(@file:@line:@column)"
- });
- var logger = log4js.getLogger();
- //BOT init stop
- //SITE SETTINGS
- var prices;
- var users = {};
- var chat_muted = false;
- var isSteamRIP = false;
- var pause = false;
- var lastrolls = [];
- var last_message = {};
- var usersBr = {};
- var chat_history = [];
- var currentBets = {
- 'red': [],
- 'green': [],
- 'black': []
- };
- var accept = 100;
- var wait = 50;
- var timer = -100;
- var currentRollid = 0;
- var winningNumber = 0;
- var actual_hash = "";
- var secret;
- var active = {
- roulette: true,
- jackpot: false,
- coinflip: false,
- dice: true,
- mines: true,
- crash: true,
- withdraw: false,
- deposit: true,
- };
- var reservedrefcodes = fs.readFileSync(__dirname + '/reservedcodes.txt').toString().split("\r\n") || [];
- updatePrices();
- setInterval(function() {
- updatePrices()
- }, 21600000);
- function updatePrices() {
- request('https://api.csgofast.com/price/all', function(error, response, body) {
- if (error || !response || response.statusCode != 200 || !body) {
- conosle.log("error loading prices");
- logger.debug('error:', error); // Print the error if one occurred
- logger.debug('statusCode:', response && response.statusCode); // Print the response status code if a response was received
- logger.debug('body:', body); // Print the HTML for the Google homepage.
- } else {
- prices = JSON.parse(body);
- fs.writeFileSync(__dirname + '/prices.txt', body);
- }
- });
- }
- //COINFLIP
- var cfBets = [];
- var betUsers = {};
- //JACKPOT
- var jpTime = 20; //POOL TIMELEFT YOU WANT IN SECONDS
- var jpPool = 0;
- var jpTimeleft = -1;
- var jpAllow = true;
- var jpBets = [];
- var jpWinners = [];
- var jpUsers = {};
- //CRASH
- var cstart_in = config.crash_time;
- var ccurrenthash = 'dog';
- var ccrashpoint = 0;
- var ctime = 0;
- var cgame = 0;
- var csecret = '';
- var cbets = [];
- var players_cashouts = {};
- var cgame_history = [];
- var cstatus = 'closed';
- var play_try = {};
- var startTime;
- var cdrop;
- //DICE
- var user_dice_current = {};
- var dice_games = [];
- //MINES
- var user_mines_current = {};
- var mines_games = {};
- //}
- //NEW LOGIN
- var user_login_codes = {};
- function crashPoint(serverSeed) {
- var hash = crypto.createHmac('sha256', serverSeed).digest('hex');
- // In 1 of 25 games the game crashes instantly.
- if (divisible(hash, 10))
- return 0;
- // Use the most significant 52-bit from the hash to calculate the crash point
- var h = parseInt(hash.slice(0, 52 / 4), 16);
- var e = Math.pow(2, 52);
- return Math.floor((100 * e - h) / (e - h));
- }
- function divisible(hash, mod) {
- // We will read in 4 hex at a time, but the first chunk might be a bit smaller
- // So ABCDEFGHIJ should be chunked like AB CDEF GHIJ
- var val = 0;
- var o = hash.length % 4;
- for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) {
- val = ((val << 16) + parseInt(hash.substring(i, i + 4), 16)) % mod;
- }
- return val === 0;
- }
- function cstart_game() {
- ctime = 0;
- cdrop = crashPoint(generate(20));
- csecret = generate(20);
- ccurrenthash = sha256(cdrop + ":" + csecret);
- ccrashpoint = 0;
- cstart_in = config.crash_time;
- cbets = [];
- players_cashouts = {};
- cstatus = 'open';
- io.sockets.to('crash').emit('crash info', {
- hash: ccurrenthash,
- players: cbets,
- start_in: parseFloat(cstart_in)
- });
- var cstart_timeout = setInterval(function() {
- cstart_in = (cstart_in - 0.01).toFixed(3);
- if (cstart_in < 0.00) {
- clearInterval(cstart_timeout);
- cnew_game();
- }
- }, 10);
- }
- function cnew_game() {
- ctime = Date.now();
- cgame++;
- cstatus = 'closed';
- logger.log("[CRASH] " + cgame + ": " + (cdrop / 100) + "" + " (DEBUG: " + cdrop + ")");
- startTime = new Date(Date.now() + 5000);
- io.sockets.to('crash').emit('crash start', {
- multiplier: 1,
- time: ctime,
- });
- var cgame_timeout = setInterval(function() {
- // ctime++;
- ccrashpoint = Math.floor(100 * growthFunc(ctime));
- doCashouts(ccrashpoint / 100);
- if (ccrashpoint >= cdrop) {
- cstatus = 'drop';
- clearInterval(cgame_timeout);
- clearInterval(cshowgame_timeout);
- cmultiplier = growthFunc(ctime);
- io.sockets.to('crash').emit('crash end', {
- bet: 0,
- hash: ccurrenthash,
- multiplier: cmultiplier,
- profit: 0,
- secret: csecret
- });
- crash_limit({
- bet: 0,
- hash: ccurrenthash,
- multiplier: cmultiplier,
- profit: 0,
- secret: csecret,
- time: new Date().getTime()
- });
- setTimeout(function() {
- cstart_game();
- }, 5000);
- }
- });
- var cshowgame_timeout = setInterval(function() {
- io.emit('crash tick', {
- multiplier: growthFunc(ctime)
- });
- }, 40);
- }
- function crash_limit(wartosc) {
- if (cgame_history.length == 15) {
- cgame_history.shift();
- }
- cgame_history.push(wartosc);
- }
- function growthFunc(ms) {
- var r = 0.00006;
- var time = Date.now() - ms;
- return Math.pow(Math.E, r * time);
- }
- function doCashouts(at) {
- cbets.forEach(function(play) {
- if ((play.done) || (!players_cashouts[play.profile.steamid])) return;
- if (players_cashouts[play.profile.steamid] <= at && players_cashouts[play.profile.steamid] <= growthFunc(ctime)) {
- crashWithdraw({
- steamid: play.profile.steamid
- });
- }
- });
- }
- cstart_game();
- //BOT SETTINGS
- var admin = config.admin;
- //var botsteamid = config.botsteamid;
- //var identitysecret = config.identitysecret;
- //var sharedsecret = config.sharedsecret;
- var polling_interval = config.polling_interval;
- //BOT ACCOUNT DETALIS
- var site_bots = {};
- config.bots.forEach(function(bot){
- var community = new SteamCommunity();
- /*var details = {
- "accountName": bot.username,
- "password": bot.password,
- "twoFactorCode": SteamTotp.generateAuthCode(bot.sharedsecret)
- };*/
- var client = new SteamUser();
- var manager = new TradeOfferManager({
- "steam": client,
- "community": community,
- "domain": config.manager_domain,
- "language": config.manager_lang
- });
- if (fs.existsSync('polldata.json')) {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- }
- client.logOn({
- "accountName": bot.username,
- "password": bot.password,
- "twoFactorCode": SteamTotp.generateAuthCode(bot.sharedsecret)
- }, function(err, sessionID, cookies, steamguard) {
- if(err) {
- logger.error("logon error");
- logger.debug(err);
- }
- }); //bot login
- //{
- client.on("loggedOn", function(dataAndEvents) {
- logger.info("[BOT] Signed in!");
- client.setPersona(SteamUser.Steam.EPersonaState.LookingToTrade);
- });
- client.on("webSession", function(sessionID, cookies) {
- manager.setCookies(cookies, function(err) {
- if (err) {
- return logger.debug("Error setting cookies/cache: " + err), void process.exit(1);
- }
- // community.startConfirmationChecker(polling_interval, bot.identitysecret);
- });
- community.setCookies(cookies);
- logger.info("[BOT] Session cookies set!");
- });
- manager.on("sentOfferChanged", function(data, oldState) {
- logger.info("[BOT] Status of the trade offer #" + data.id + " from user: " + data.partner + " changed to: " + data.state + " from: " + oldState);
- var string_state = {
- 1: 'Invalid',
- 2: 'Active',
- 3: 'Accepted',
- 4: 'Countered',
- 5: 'Expired',
- 6: 'Canceled',
- 7: 'Declined',
- 8: 'InvalidItems',
- 9: 'Needs Confirmation',
- 10: 'Canceled',
- 11: 'In Escrow'
- };
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', '', 'offerStateChange', [data.id, string_state[oldState], string_state[data.state]]);
- });
- }
- handelOffer(data, bot);
- });
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData), function() {});
- });
- manager.on("newOffer", function(oferta) {
- });
- community.on("sessionExpired", function(err) {
- if (err) logger.error(err);
- logger.debug('session expired, logging in...');
- if (client.steamID) {
- client.webLogOn();
- } else {
- client.logOn({
- "accountName": bot.username,
- "password": bot.password,
- "twoFactorCode": SteamTotp.generateAuthCode(bot.sharedsecret)
- }, function(err, sessionID, cookies, steamguard) {
- if(err) {
- logger.error("logon error");
- logger.debug(err);
- }
- });
- }
- });
- /* community.on("newConfirmation", function(d) {
- var time = Math.round(Date.now() / 1E3);
- var data = SteamTotp.getConfirmationKey(identitysecret, time, "allow");
- community.respondToConfirmation(d.id, d.key, time, data, true, function(error) {
- logger.debug("[BOT] Outgoing confirmation for the trade: " + d.key);
- if (error) {
- logger.debug("[BOT] Error while confirming the trade: " + error);
- client.webLogOn();
- }
- });
- });
- community.on("confKeyNeeded", function(deepDataAndEvents, updateFunc) {
- logger.debug("confKeyNeeded");
- var progressContexts = Math.floor(Date.now() / 1E3);
- updateFunc(null, progressContexts, SteamTotp.getConfirmationKey(identitysecret, progressContexts, deepDataAndEvents));
- });*/
- //}
- /*client.on("friendRelationship", function(sid, relationship){
- var steamid = sid.getSteamID64();
- if(relationship == SteamUser.EFriendRelationship.Friend){
- if(user_login_codes[steamid]){
- client.chatMessage(steamid, "To login please enter the code provided on the site");
- }
- }
- else if(relationship == SteamUser.EFriendRelationship.RequestRecipient){
- client.addFriend(steamid, function(err, name){
- if(err){
- logger.error("Error accepting user: " + steamid);
- logger.debug(err);
- }
- else{
- if(name){
- client.chatMessage(steamid, "To login please enter the code provided on the site");
- }
- else{
- logger.error("Werid error accepting user: " + steamid + ", no error returned but name also not returned");
- }
- }
- });
- }
- });
- client.on('friendMessage', function(sid, message) {
- var steamid = sid.getSteamID64();
- if(user_login_codes[steamid]){
- if(user_login_codes[steamid].code == message){
- if (io.sockets.connected[user_login_codes[steamid].socket]){
- client.chatMessage(steamid, "Correct code, you will now be logged in!");
- var token_time = time();
- var token = sha256(crypto.randomBytes(10) + token_time);
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(steamid) + ' LIMIT 1', function(err, row) {
- if(err){
- logger.error("error checking if user exists");
- logger.debug(err);
- io.sockets.connected[user_login_codes[steamid].socket].emit("login failed");
- return;
- }
- else if(row.length < 1){
- connection.query('INSERT INTO `users` (`steamid`, `token`, `token_time`) VALUES ('+connection.escape(steamid)+','+ connection.escape(token)+','+ connection.escape(token_time)+')', function(err2) {
- if(err2){
- logger.error("error creating user");
- logger.debug(err2);
- io.sockets.connected[user_login_codes[steamid].socket].emit("login failed");
- return;
- }
- io.sockets.connected[user_login_codes[steamid].socket].emit("login token", {token: token, token_time: token_time, steamid: steamid});
- });
- }
- else{
- connection.query('UPDATE `users` SET `token` = ' + connection.escape(token) + ', `token_time` = ' + connection.escape(token_time) + ' WHERE `steamid` = ' + connection.escape(steamid), function(err) {
- if(err){
- logger.error("error updated token on login");
- logger.debug(err);
- io.sockets.connected[user_login_codes[steamid].socket].emit("login failed");
- }
- else{
- io.sockets.connected[user_login_codes[steamid].socket].emit("login token", {token: token, token_time: token_time, steamid: steamid});
- }
- });
- }
- });
- }
- else{
- client.chatMessage(steamid, "Correct code, but socket lost connect, please refresh the page and try again!");
- }
- client.removeFriend(steamid);
- }
- else{
- client.chatMessage(steamid, "Incorrect code, please try again");
- }
- }
- else{
- client.chatMessage(steamid, "It appears a code has not been generated for you, please try to login again");
- client.removeFriend(steamid);
- }
- });*/
- site_bots[bot.steamid] = {manager: manager, client: client, community: community, identitysecret: bot.identitysecret};
- });
- function handelOffer(data, bot){
- connection.query('SELECT * FROM `trade_history` WHERE `offer_id` = ' + data.id, function(err, rows) {
- if (err) {
- logger.debug('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
- logger.debug(err);
- return;
- } else if (rows.length < 1) {
- return;
- } else {
- connection.query('UPDATE `trade_history` SET `offer_state` = ' + data.state + ' WHERE `offer_id` = ' + data.id, function(error) {
- if (error) {
- logger.debug('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
- logger.debug(error);
- return;
- }
- });
- if (data.state == 3) {
- if (rows[0].action == 'deposit') {
- data.getReceivedItems(function(items_error, receiveditems) {
- if (items_error) {
- logger.error('IMPORTANT ERROR AT DEPOSIT getReceivedItems, USER: ' + rows[0].offer_partner);
- logger.debug(items_error);
- logger.debug("trying again")
- setTimeout(handelOffer, 5000, data);
- } else {
- receiveditems.forEach(function(itemToReceive) {
- connection.query('INSERT INTO `inventory` SET `id` = ' + connection.escape(itemToReceive.id) + ', `market_hash_name` = ' + connection.escape(itemToReceive.market_hash_name) + ', `classid` = ' + connection.escape(itemToReceive.classid) + ', `type` = ' + connection.escape(itemToReceive.type) + ', `bot_id` = ' + connection.escape(bot.steamid) + ', `in_trade` = \'0\'', function(errorXD) {
- if (errorXD) {
- logger.debug('FUCKING IMPORTANT ERROR OCCURED ON ITEM ID: ' + itemToReceive.id + " (" + itemToReceive.market_hash_name + ")");
- logger.debug(errorXD);
- }
- });
- });
- connection.query('UPDATE `users` SET `deposit_sum` = `deposit_sum` + ' + rows[0].worth / 1.1 + ', `wallet` = `wallet` + ' + rows[0].worth + ' WHERE `steamid` = ' + connection.escape(rows[0].offer_partner), function(error1) {
- if (error1) {
- logger.error('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT, user:' + data.partner);
- logger.debug(error1);
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(rows[0].offer_partner) + ', `change` = ' + connection.escape(rows[0].worth) + ', `reason` = \'Deposit\'', function(err2) {
- if (err2) {
- logger.error('database error at wallet_change');
- logger.debug(err2);
- }
- });
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('notify', 'success', 'depositOfferAccepted', [data.id, rows[0].worth]);
- io.sockets.connected[asocket].emit('balance change', rows[0].worth);
- }
- });
- }
- }
- });
- }
- });
- } else if (rows[0].action == 'withdraw') {
- if (data.itemsToGive) {
- data.itemsToGive.forEach(function(itemToGive) {
- connection.query('DELETE FROM `inventory` WHERE `id` = ' + itemToGive.id, function(errorAeh) {
- if (errorAeh) {
- logger.error('error while deleting items on item ID: ' + itemToGive.id + " (" + itemToGive.market_hash_name + ")");
- logger.debug(errorAeh);
- }
- });
- });
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('notify', 'success', 'withdrawOfferAccepted', [data.id]);
- }
- });
- }
- }
- }
- } else if ((data.state == 7) || (data.state == 5) || (data.state == 6) || (data.state == 1) || (data.state == 4) || (data.state == 8) || (data.state == 10)) {
- if (rows[0].action == 'withdraw') {
- if (data.itemsToGive) {
- data.itemsToGive.forEach(function(update_item) {
- connection.query('UPDATE `inventory` SET `in_trade` = \'0\'' + ' WHERE `id` = ' + connection.escape(update_item.assetid), function(err6) {
- if (err6) {
- logger.error('error at updating in trade items status. id:' + update_item.assetid);
- logger.debug(err6);
- }
- });
- });
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + parseInt(rows[0].worth) + ',`withdraw_sum` = `withdraw_sum` - ' + parseInt(rows[0].worth) + ' WHERE `steamid` = ' + connection.escape(rows[0].offer_partner), function(err7) {
- if (err7) {
- logger.error('IMPORTANT error at updating in trade items status. steamid:' + rows[0].offer_partner);
- logger.debug(err7);
- }
- });
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('balance change', rows[0].worth);
- }
- });
- }
- }
- }
- }
- }
- });
- }
- /*
- var details = {
- "accountName": config.bot_username,
- "password": config.bot_password,
- "twoFactorCode": SteamTotp.generateAuthCode(sharedsecret)
- };
- //BOT CLIENT INIT
- var client = new SteamUser();
- //BOT MANAGER INIT
- var manager = new TradeOfferManager({
- "steam": client,
- "domain": config.manager_domain,
- "language": config.manager_lang,
- "cancelTime": config.manager_cancelTime
- });
- client.logOn(details); //bot login
- */
- connection.connect(); //db connect
- /* */
- /* SITE PART */
- /* */
- load();
- checkTimer();
- io.on('connection', function(socket) {
- var user = false;
- socket.on('init', function(init) {
- if (!init) return;
- if (init.game === 'roulette') socket.join('roulette');
- if (init.game === 'roulette') socket.emit('roulette round', timer / 10, currentBets, actual_hash, pause ? winningNumber : null);
- if (init.game === 'roulette') socket.emit('roulette history', lastrolls);
- if (init.game === 'coinflip') socket.join('coinflip');
- if (init.game === 'coinflip') socket.emit('coinflip history', cfBets);
- if (init.game === 'jackpot') socket.join('jackpot');
- if (init.game === 'jackpot') socket.emit('jackpot round', jpTimeleft, jpBets, jpWinners);
- if (init.game === 'crash') socket.join('crash');
- if (init.game === 'crash') socket.emit('crash info', {
- hash: ccurrenthash,
- players: cbets,
- start_in: cstart_in
- });
- if (init.game === 'crash') socket.emit('crash history', cgame_history);
- if (init.game === 'crash') socket.emit('crash settings', {
- maxBet: config.max_crash_bet,
- minBet: config.min_crash_bet
- });
- if (init.game === 'crash' && cstatus == 'closed') socket.emit('crash start', {
- multiplier: growthFunc(ctime),
- time: ctime,
- });
- if (init.game === 'crash' && init.logged) {
- var find = cbets.find(x => x.profile.steamid == init.steamid);
- if (find) {
- socket.emit('crash my bet', parseInt(find.bet));
- }
- }
- if (init.game === 'dice') socket.join('dice');
- if (init.game === 'dice') socket.emit('dice-history', dice_games.filter(function(game){return game.user != null;}))
- socket.emit('users online', Object.keys(users).length);
- socket.emit('chat', chat_history);
- socket.emit('connected');
- if (init.logged) {
- connection.query('SELECT * FROM `users` WHERE `steamid`=' + connection.escape(init.steamid) + ' AND `token_time`=' + connection.escape(init.time) + ' AND `token`=' + connection.escape(init.token) + ' LIMIT 1', function(err, rows) {
- if ((err) || (!rows.length)) {
- socket.disconnect();
- logger.debug('auth failed.');
- return;
- } else if (rows) {
- if (init.game === 'dice') socket.emit('dice-hash', {
- "hash": generateDiceGame(init.steamid)
- });
- if (rows[0].logged_in) return;
- if (rows[0].banned) return;
- connection.query('UPDATE `users` SET `logged_in` = 1 WHERE `steamid`=' + connection.escape(init.steamid) + ' AND `token_time`=' + connection.escape(init.time) + ' AND `token`=' + connection.escape(init.token) + ' LIMIT 1', function(err1, rows1) {
- if (err1) return logger.error(err1);
- user = rows[0];
- if (!users[rows[0].steamid]) {
- users[rows[0].steamid] = user;
- users[rows[0].steamid].socket = [];
- }
- users[rows[0].steamid]['socket'].push(socket.id);
- });
- } else {
- return;
- }
- });
- }
- });
- socket.on('disconnect', function() {
- var index = -1;
- if (users[user.steamid])
- index = users[user.steamid]['socket'].indexOf(socket.id);
- if (index > -1) {
- users[user.steamid]['socket'].splice(index, 1);
- }
- if (users[user.steamid]) {
- if (Object.keys(users[user.steamid]['socket']).length == 0) delete users[user.steamid];
- }
- connection.query('UPDATE `users` SET `logged_in` = 0 WHERE `steamid`=' + connection.escape(user.steamid) + ' LIMIT 1', function(err1, rows1) {
- if (err1) return;
- });
- });
- socket.on('trade token', function(token) {
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!token) return socket.emit('notify', 'error', 'tradeTokenFailed');
- if (typeof token != 'string') return socket.emit('notify', 'error', 'tradeTokenFailed');
- if (/^(.{4,8})$/.test(token)) {
- connection.query('UPDATE `users` SET `tradeurl` = ' + connection.escape(token) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err, row) {
- if (err) {
- socket.emit('notify', 'error', 'tradeTokenFailed');
- logger.debug(err);
- return;
- }
- socket.emit('notify', 'success', 'tradeTokenSuccess', [token]);
- });
- } else {
- socket.emit('notify', 'error', 'tradeTokenFailed');
- }
- });
- socket.on('request inventory', function(force) {
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!force) var force = false;
- if (typeof force != 'boolean') var force = false;
- if ((fs.existsSync('cache/' + user.steamid + '.txt')) && (force == false)) {
- var inventory = JSON.parse(fs.readFileSync('cache/' + user.steamid + '.txt'));
- socket.emit('inventory', {
- inventory: inventory.inventory,
- prices: inventory.prices,
- junk: inventory.junk
- });
- socket.emit('notify', '', 'loadInventoryCached');
- } else {
- var steamid_substr = '' + user.steamid;
- steamid_substr = steamid_substr.substr(7);
- steamid_substr = parseInt(steamid_substr);
- var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner=' + (steamid_substr - 7960265728);
- var rand = site_bots[Object.keys(site_bots)[Math.floor(Math.random() * Object.keys(site_bots).length)]].manager;
- var app = rand.createOffer(tradelink);
- app.getPartnerInventoryContents('730', '2', function(get_err, inventory) {
- if (get_err) {
- logger.error('error occured on inventory request');
- logger.debug(get_err);
- socket.emit('notify', 'error', 'loadInventoryError');
- return;
- } else {
- var output_prices = [];
- for (key in inventory) {
- var junk = false;
- var obj = inventory[key];
- if (prices[obj['market_hash_name']])
- var a_price = prices[obj['market_hash_name']] * 900;
- else var a_price = 0;
- if (a_price < config.min_deposit) {
- //a_price = 0;
- junk = true;
- }
- output_prices.push({
- market_hash_name: obj['market_hash_name'],
- price: a_price,
- junk: junk
- })
- }
- fs.writeFile('cache/' + user.steamid + '.txt', JSON.stringify({
- inventory: inventory,
- prices: output_prices
- }), function(fserr) {
- if (fserr) {
- socket.emit('notify', 'error', 'loadSiteInventoryError');
- return logger.debug(fserr);
- }
- });
- socket.emit('inventory', {
- inventory: inventory,
- prices: output_prices
- });
- socket.emit('notify', 'success', 'loadInventorySuccess');
- }
- });
- }
- });
- socket.on('update ref', function(code) {
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if(code.length < 4) return socket.emit('notify', 'error', 'updateRefFailShort', [4]);
- if(code.length > 20) return socket.emit('notify', 'error', 'updateRefFailLong', [20]);
- if(reservedrefcodes.indexOf(code) != -1) return socket.emit('notify', 'error', 'reservedRefCode');
- connection.query('SELECT `code` FROM `users` WHERE `code` = ' + connection.escape(code.toUpperCase()) + ' LIMIT 1', function(codes_error, codes) {
- if (codes_error) {
- logger.error('failed to check for code');
- socket.emit('notify', 'error', 'updateRefFail');
- } else {
- if (codes.length > 0) {
- socket.emit('notify', 'error', 'updateRefAlreadyTaken');
- } else {
- connection.query('UPDATE `users` SET `code` = ' + connection.escape(code.toUpperCase()) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(codes_update_error) {
- if (codes_update_error) {
- logger.error(codes_update_error);
- return socket.emit('notify', 'error', 'updateRefFail');
- } else {
- socket.emit('notify', 'success', 'updateRefSuccess');
- }
- });
- }
- }
- });
- });
- socket.on('deposit items', function(items) {
- logger.debug(items);
- if (!active["deposit"]) return [socket.emit('notify', 'error', 'closed'), socket.emit('deposit error')];
- if (!user) return [socket.emit('notify', 'error', 'notLoggedIn'), socket.emit('deposit error')];
- if (items.length < 1) return [socket.emit('notify', 'error', 'depositNoItemsRequested'), socket.emit('deposit error')];
- if (Object.prototype.toString.call(items) !== '[object Array]') return [socket.emit('notify', 'error', 'depositNoItemsRequested'), socket.emit('deposit error')];
- if ((new Set(items)).size !== items.length) return [socket.emit('notify', 'error', 'depositDuplicate'), socket.emit('deposit error')]
- if (user.deposit_ban) return [socket.emit('notify', 'error', 'depositBanned'), socket.emit('deposit error')];
- if (isSteamRIP === false) {
- connection.query('SELECT `tradeurl`,`deposit_ban` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- logger.debug(err);
- socket.emit('notify', 'error', 'serverError');
- socket.emit('deposit error');
- return;
- }
- if (row[0].tradeurl.length < 3) return [socket.emit('notify', 'error', 'noTradeToken'), socket.emit('deposit error')];
- else if (row[0].deposit_ban == 1) return [socket.emit('notify', 'error', 'depositBanned'), socket.emit('deposit error')];
- else {
- 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) {
- if (offer_err) {
- logger.debug(offer_err);
- socket.emit('notify', 'error', 'serverError');
- socket.emit('deposit error');
- return;
- } else if (offers.length > 0) {
- socket.emit('notify', 'error', 'pendingOffer');
- socket.emit('deposit error');
- return;
- } else {
- var steamid_substr = '' + user.steamid;
- steamid_substr = steamid_substr.substr(7);
- steamid_substr = parseInt(steamid_substr);
- var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner=' + (steamid_substr - 7960265728) + '&token=' + row[0].tradeurl;
- var rand = site_bots[Object.keys(site_bots)[Math.floor(Math.random() * Object.keys(site_bots).length)]].manager;
- var app = rand.createOffer(tradelink);
- app.getPartnerInventoryContents('730', '2', function(get_err, inventory) {
- if (get_err) {
- logger.error('error occured while deposit');
- logger.debug(get_err);
- socket.emit('notify', 'error', 'depositFailed');
- socket.emit('deposit error');
- return;
- } else {
- var names = [];
- var hacker = false;
- items.forEach(function(item) {
- for (key in inventory) {
- var object = inventory[key];
- if (object.id == item) {
- if (prices[object.market_hash_name])
- var a_price = prices[object.market_hash_name] * 900;
- else var a_price = 0;
- if (a_price < config.min_deposit) {
- hacker = true;
- }
- names.push({
- market_hash_name: object.market_hash_name,
- id: parseInt(object.id),
- price: a_price
- });
- }
- }
- });
- var total_price = 0;
- var after_items = [];
- names.forEach(function(name) {
- total_price += name.price;
- after_items.push(name.id);
- });
- after_items.sort(function(a, b) {
- return a - b;
- });
- items.sort(function(a, b) {
- return a - b;
- });
- if (items.length == after_items.length &&
- items.every(function(u, i) {
- return u === after_items[i];
- })
- ) {
- if ((total_price < config.min_deposit) || (hacker)) {
- socket.emit('notify', 'error', 'depositFailed');
- socket.emit('deposit error');
- return;
- } else {
- items.forEach(function(target) {
- app.addTheirItem({
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: target
- });
- });
- app.setToken(row[0].tradeurl);
- app.getUserDetails(function(a_err, me, them) {
- if (a_err) {
- logger.error('error occured while deposit');
- logger.debug(a_err);
- socket.emit('notify', 'error', 'depositFailed');
- socket.emit('deposit error');
- return;
- } else {
- if (them.escrowDays == 0) {
- app.send(function(error, status) {
- if (error) {
- logger.error('error occured while deposit');
- logger.debug(error);
- socket.emit('notify', 'error', 'depositFailed');
- socket.emit('deposit error');
- return;
- } else {
- logger.info('Deposit request, items: ' + items);
- 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) {
- if (err1) {
- logger.error('error occured while deposit');
- logger.debug(err1);
- socket.emit('notify', 'error', 'depositFailed');
- socket.emit('deposit error');
- return;
- } else {
- socket.emit('notify', 'success', 'depositOfferSent', [app.id]);
- }
- });
- }
- });
- } else {
- socket.emit('notify', 'error', 'escrowError');
- socket.emit('deposit error');
- }
- }
- });
- }
- } else {
- if (items.length == after_items.length) {
- logger.error('error here');
- logger.debug(items);
- logger.debug(after_items);
- }
- socket.emit('notify', 'error', 'withdrawItemsUnavailable');
- socket.emit('deposit error');
- return;
- }
- }
- });
- }
- });
- }
- });
- } else {
- socket.emit('notify', 'error', 'withdrawSendError20');
- socket.emit('deposit error');
- }
- });
- socket.on('withdraw items', function(items) {
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (items != null && items.length < 1) return [socket.emit('notify', 'error', 'withdrawNoItemsRequested'), socket.emit('withdraw error')];
- if (Object.prototype.toString.call(items) !== '[object Array]') return [socket.emit('notify', 'error', 'withdrawNoItemsRequested'), socket.emit('withdraw error')];
- if ((new Set(items)).size !== items.length) return [socket.emit('notify', 'error', 'withdrawDuplicate'), socket.emit('withdraw error')]
- if (user.withdraw_ban) return [socket.emit('notify', 'error', 'withdrawSuspected'), socket.emit('withdraw error')];
- if (isSteamRIP === false) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- logger.debug(err);
- socket.emit('notify', 'error', 'serverError');
- socket.emit('withdraw error');
- return;
- }
- if (row[0].tradeurl.length < 3) return [socket.emit('notify', 'error', 'noTradeToken'), socket.emit('withdraw error')];
- else {
- 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) {
- if (offer_err) {
- logger.debug(offer_err);
- socket.emit('notify', 'error', 'serverError');
- socket.emit('withdraw error');
- return;
- } else if (offers.length > 0) {
- socket.emit('notify', 'error', 'pendingOffer');
- socket.emit('withdraw error');
- return;
- } else {
- var steamid_substr = '' + user.steamid;
- steamid_substr = steamid_substr.substr(7);
- steamid_substr = parseInt(steamid_substr);
- var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner=' + (steamid_substr - 7960265728) + '&token=' + row[0].tradeurl;
- connection.query('SELECT * FROM `inventory` WHERE `in_trade` = \'0\'', function(inv_err, my_inv) {
- if (inv_err) {
- logger.debug('error occured while withdraw');
- logger.debug(inv_err);
- socket.emit('notify', 'error', 'withdrawFailed');
- socket.emit('withdraw error');
- return;
- } else {
- var names = [];
- var problem = false;
- var more_bots = false;
- items.forEach(function(item) {
- for (key in my_inv) {
- var object = my_inv[key];
- if (object.id == item) {
- if (object.bot_id !== my_inv[0]['bot_id']) more_bots = true;
- if (prices[object.market_hash_name])
- var a_price = prices[object.market_hash_name] * 1100;
- else {
- var a_price = 0;
- problem = true;
- }
- names.push({
- market_hash_name: object.market_hash_name,
- id: parseInt(object.id),
- price: a_price
- });
- }
- }
- });
- if (more_bots) return [socket.emit('notify', 'error', 'withdrawMultipleBots'), socket.emit('withdraw error')];
- if (!problem) {
- var total_price = 0;
- var after_items = [];
- names.forEach(function(name) {
- total_price += name.price;
- after_items.push(name.id);
- });
- after_items.sort(function(a, b) {
- return a - b;
- });
- items.sort(function(a, b) {
- return a - b;
- });
- if (items.length == after_items.length &&
- items.every(function(u, i) {
- return u === after_items[i];
- })
- ) {
- /*connection.query('SELECT * FROM `trade_history` WHERE `offer_partner` = '+connection.escape(user.steamid)+' AND (`offer_state` = \'3\')', function(select_error, trades) {
- if(select_error){
- logger.debug(select_error);
- socket.emit('notify','error','serverError');
- socket.emit('withdraw error');
- return;
- } */
- var deltaDeposit = row[0].deposit_sum - row[0].withdraw_sum;
- if (row[0].wallet < total_price) {
- socket.emit('notify', 'error', 'notEnoughCoins');
- socket.emit('withdraw error');
- }
- /*else if (row[0].wager < total_price) {
- logger.debug("2");
- socket.emit('notify', 'error', 'withdrawNotEnoughWagered');
- socket.emit('withdraw error');
- } */else if (row[0].deposit_sum < 2500) {
- socket.emit('notify', 'error', 'withdrawNotEnoughDeposit', [row[0].deposit_sum]);
- socket.emit('withdraw error');
- } else if (row[0].total_bet < total_price*0.75) {
- socket.emit('notify', 'error', 'withdrawWagerNeed', [Math.round(total_price*0.75 - row[0].total_bet)]);
- socket.emit('withdraw error');
- } else if (row[0].wallet >= 100000 && row[0].withdraw_approved == 0 && user.rank != "root") {
- socket.emit('notify', 'error', 'withdrawSuspected');
- socket.emit('withdraw error');
- } else if (!active["withdraw"]) {
- logger.debug("5");
- socket.emit('notify', 'error', 'Unkown error, please contact an admin.');
- socket.emit('withdraw error');
- } else {
- connection.query('SELECT `wallet`,`wager` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(wallet_err, balance) {
- if (wallet_err) {
- logger.debug('error occured while withdraw');
- logger.debug(wallet_err);
- socket.emit('notify', 'error', 'withdrawFailed');
- socket.emit('withdraw error');
- return;
- } else {
- if (balance[0].wallet >= total_price) {
- if (!my_inv[0]) return;
- var app = site_bots[my_inv[0]['bot_id']].manager.createOffer(tradelink);
- items.forEach(function(target) {
- app.addMyItem({
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: target
- });
- });
- app.setToken(row[0].tradeurl);
- app.getUserDetails(function(a_err, me, them) {
- if (a_err) {
- logger.debug('error occured while withdraw');
- logger.debug(a_err);
- socket.emit('notify', 'error', 'withdrawFailed');
- socket.emit('withdraw error');
- return;
- } else {
- if (them.escrowDays == 0) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + parseInt(total_price) + ',`withdraw_sum` = `withdraw_sum` + ' + parseInt(total_price / 0.9) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err3) {
- if (err3) {
- logger.error('error occured while withdraw, balance change, user: ' + user.steamid);
- logger.debug(err3);
- socket.emit('notify', 'error', 'notEnoughCoins');
- socket.emit('withdraw error');
- return;
- } else {
- items.forEach(function(update_item) {
- connection.query('UPDATE `inventory` SET `in_trade` = \'1\'' + ' WHERE `id` = ' + connection.escape(update_item), function(err6) {
- if (err6) {
- logger.error('error at updating in trade items status. id:' + update_item);
- logger.debug(err6);
- }
- });
- });
- app.send(function(error, status) {
- if (error) {
- items.forEach(function(update_item) {
- connection.query('UPDATE `inventory` SET `in_trade` = \'0\'' + ' WHERE `id` = ' + connection.escape(update_item), function(err9) {
- if (err9) {
- logger.error('error at updating in trade items status. id:' + update_item);
- logger.debug(err9);
- }
- });
- });
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + parseInt(total_price) + ',`wager` = `wager` + ' + parseInt(total_price) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err4) {
- if (err4) {
- logger.error('FUCK ERROR WHILE RETURNING BALANCE, error occured while withdraw, user: ' + user.steamid);
- logger.debug(err4);
- }
- });
- logger.debug('error occured while withdraw, user: ' + user.steamid);
- logger.debug(error);
- socket.emit('notify', 'error', 'withdrawFailed');
- socket.emit('withdraw error');
- return;
- } else {
- logger.debug('Withdraw request, items: ' + items);
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = ' + connection.escape('-' + total_price) + ', `reason` = \'Withdraw\'', function(err_wallet_hist) {
- if (err_wallet_hist) {
- logger.debug('database error at wallet_change');
- logger.debug(err_wallet_hist);
- }
- });
- 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) {
- if (err1) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + parseInt(total_price) + ',`wager` = `wager` + ' + parseInt(total_price) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err5) {
- if (err5) {
- logger.debug('error occured while withdraw, user: ' + user.steamid);
- logger.debug(err5);
- }
- });
- logger.debug('error occured while withdraw, user: ' + user.steamid);
- logger.debug(err1);
- socket.emit('notify', 'error', 'withdrawFailed');
- socket.emit('withdraw error');
- return;
- } else {
- if (users[user.steamid]){
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + total_price));
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'withdrawOfferSent', [app.id]);
- });
- }
- site_bots[my_inv[0]['bot_id']].community.acceptConfirmationForObject(site_bots[my_inv[0]['bot_id']].identitysecret, app.id, function(err){
- if(err){
- logger.error("error confirming withdraw");
- logger.debug(err);
- }
- });
- }
- });
- }
- });
- }
- });
- } else {
- socket.emit('notify', 'error', 'escrowError');
- socket.emit('withdraw error');
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'notEnoughCoins');
- socket.emit('withdraw error');
- }
- }
- });
- }
- } else {
- socket.emit('notify', 'error', 'withdrawItemsUnavailable');
- socket.emit('withdraw error');
- return;
- }
- } else {
- socket.emit('notify', 'error', 'withdrawFailed');
- socket.emit('withdraw error');
- return;
- }
- }
- });
- }
- });
- }
- });
- } else {
- socket.emit('notify', 'error', 'withdrawSendError20');
- socket.emit('withdraw error');
- }
- });
- socket.on('roulette play', function(play, color) {
- if (!active["roulette"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if ((!play) || (!color)) return socket.emit('notify', 'error', 'roulettePlayFailed');
- if ((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify', 'error', 'roulettePlayFailed');
- if (typeof color != 'string') return socket.emit('notify', 'error', 'roulettePlayFailed');
- if ((usersBr[user.steamid] !== undefined) && (usersBr[user.steamid] == config.max_roulette_bets)) {
- socket.emit('notify', 'error', 'rouletteMaxBets', [config.max_roulette_bets]);
- return;
- }
- play = parseInt(play);
- if (isNaN(play)) return socket.emit('notify', 'error', 'cannotParseValue');
- play = '' + play;
- play = play.replace(/\D/g, '');
- if (color !== 'green' && color !== 'red' && color !== 'black') return socket.emit('notify', 'error', 'rouletteUnknownColor');
- if (play < 1) return socket.emit('notify', 'error', 'rouletteMinBet', [play, 1]);
- if (play > config.max_roulette_bet) return socket.emit('notify', 'error', 'rouletteMaxBet', [play, config.max_roulette_bet]);
- if (!pause) {
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- logger.debug(err);
- socket.emit('notify', 'error', 'roulettePlayFailed');
- return;
- }
- if (row[0].wallet >= play) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + parseInt(play) + ', `total_bet` = `total_bet` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err2, row2) {
- if (err2) {
- logger.debug(err2);
- socket.emit('notify', 'error', 'roulettePlayFailed');
- return;
- }
- if (row[0].deposit_sum >= config.min_bet_wager) {
- connection.query('UPDATE `users` SET `wager` = `wager` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid));
- }
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = -' + connection.escape(play) + ', `reason` = \'Roulette #' + currentRollid + ' ' + color + '\'', function(err3, row3) {
- if (err3) {
- logger.debug('important error at wallet_change');
- logger.debug(err3);
- socket.emit('notify', 'error', 'serverError');
- return;
- }
- if (usersBr[user.steamid] === undefined) {
- usersBr[user.steamid] = 1;
- } else {
- usersBr[user.steamid]++;
- }
- io.sockets.to('roulette').emit('roulette player', {
- amount: play,
- player: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- }
- }, color);
- currentBets[color].push({
- amount: play,
- player: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- }
- });
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + play));
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'roulettePlaySuccess', [play, color, usersBr[user.steamid], config.max_roulette_bets]);
- });
- });
- });
- } else {
- socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- } else
- socket.emit('notify', 'error', 'roulettePlayFailed');
- });
- socket.on('coinflip play', function(play, color) {
- if (!active["coinflip"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if ((!play) || (!color)) return socket.emit('notify', 'error', 'coinflipPlayFailed');
- if ((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify', 'error', 'coinflipPlayFailed');
- if (typeof color != 'string') return socket.emit('notify', 'error', 'coinflipPlayFailed');
- play = parseInt(play);
- if (isNaN(play)) return socket.emit('notify', 'error', 'cannotParseValue');
- play = '' + play;
- play = play.replace(/\D/g, '');
- if (color !== 'ct' && color !== 't') return socket.emit('notify', 'error', 'coinflipUnknownColor');
- if (play < config.min_coinflip_bet) return socket.emit('notify', 'error', 'coinflipMinBet', [play, config.min_coinflip_bet]);
- if (play > config.max_coinflip_bet) return socket.emit('notify', 'error', 'coinflipMaxBet', [play, config.max_coinflip_bet]);
- if (betUsers[user.steamid]) return socket.emit('notify', 'error', 'coinflipPending');
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- logger.debug(err);
- socket.emit('notify', 'error', 'coinflipPlayFailed');
- return;
- }
- if (row[0].wallet >= play) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + parseInt(play) + ', `total_bet` = `total_bet` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err2, row2) {
- if (row[0].deposit_sum >= config.min_bet_wager) {
- connection.query('UPDATE `users` SET `wager` = `wager` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid));
- }
- if (err2) {
- logger.debug(err2);
- socket.emit('notify', 'error', 'coinflipPlayFailed');
- return;
- }
- var cfUnique = generate(20);
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = -' + connection.escape(play) + ', `reason` = \'Coinflip #' + cfUnique + ' ' + color.toUpperCase() + '\'', function(err3, row3) {
- if (err3) {
- logger.debug('important error at wallet_change');
- logger.debug(err3);
- socket.emit('notify', 'error', 'serverError');
- return;
- }
- io.sockets.to('coinflip').emit('coinflip game', {
- amount: play,
- player: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- },
- status: 'open',
- side: color,
- hash: cfUnique
- });
- cfBets.push({
- amount: play,
- player: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- },
- status: 'open',
- side: color,
- hash: cfUnique,
- left: 10
- });
- betUsers[user.steamid] = 1;
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + play));
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'coinflipPlaySuccess', [play, color.toUpperCase()]);
- });
- });
- });
- } else {
- socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- });
- socket.on('coinflip join', function(gameID) {
- if (!active["coinflip"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!gameID) return socket.emit('notify', 'error', 'coinflipPlayFailed');
- if (typeof gameID != 'string') return socket.emit('notify', 'error', 'coinflipPlayFailed');
- var index = cfBets.map(function(e) {
- return e.hash;
- }).indexOf(gameID);
- if (index > -1) {
- if (!cfBets[index]) return;
- if (cfBets[index].status === 'closed') return socket.emit('notify', 'error', 'coinflipAlreadyJoined');
- if (cfBets[index].player.steamid == user.steamid) return socket.emit('notify', 'error', 'coinflipOwner');
- var play = cfBets[index].amount;
- if (cfBets[index].side === 'ct') {
- var color = 't';
- } else {
- var color = 'ct';
- }
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- logger.debug(err);
- socket.emit('notify', 'error', 'coinflipPlayFailed');
- return;
- }
- if (row[0].wallet >= play) {
- cfBets[index].status = 'closed';
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + parseInt(play) + ', `total_bet` = `total_bet` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err2, row2) {
- if (row[0].deposit_sum >= config.min_bet_wager) {
- connection.query('UPDATE `users` SET `wager` = `wager` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid));
- }
- if (err2) {
- cfBets[index].status = 'open';
- logger.debug(err2);
- socket.emit('notify', 'error', 'coinflipPlayFailed');
- return;
- }
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = -' + connection.escape(play) + ', `reason` = \'Coinflip #' + cfBets[index].hash + ' ' + color.toUpperCase() + '\'', function(err3, row3) {
- if (err3) {
- cfBets[index].status = 'open';
- logger.debug('important error at wallet_change');
- logger.debug(err3);
- socket.emit('notify', 'error', 'serverError');
- return;
- }
- cfBets[index].opponent = {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- };
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + play));
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'coinflipJoin');
- });
- if (users[cfBets[index].player.steamid])
- users[cfBets[index].player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'coinflipJoined');
- });
- io.sockets.to('coinflip').emit('coinflip update', cfBets[index].hash, {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username,
- side: color
- });
- var countDown = setInterval(function() {
- cfBets[index].left -= 1;
- if (cfBets[index].left === 0) {
- clearInterval(countDown);
- }
- }, 1000);
- setTimeout(function() {
- delete betUsers[cfBets[index].player.steamid];
- var possible = ['ct', 't'];
- var wonSide = possible[Math.floor(Math.random() * possible.length)];
- var wonAmount = parseInt(play) * 2;
- wonAmount = Math.floor(wonAmount - (wonAmount * 0.05));
- rakeAmount = Math.floor(wonAmount - (wonAmount * 0.95));
- if (wonSide == color) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + wonAmount + ', `total_won` = `total_won` + ' + wonAmount + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err69, row69) {
- if (err69) {
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = ' + connection.escape(wonAmount) + ', `reason` = \'Coinflip #' + cfBets[index].hash + ' ' + 'winning!' + '\'', function(err70) {
- if (err70) {
- logger.debug('database error at wallet_change');
- logger.debug(err70);
- }
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + play + ' WHERE `steamid` = ' + connection.escape(cfBets[index].player.steamid), function(err71) {
- if (err71) logger.debug('error at total lose increase');
- });
- setTimeout(function() {
- if (users[user.steamid]) {
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', wonAmount);
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'coinflipWon', [wonAmount]);
- });
- }
- if (users[cfBets[index].player.steamid]) {
- users[cfBets[index].player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'coinflipLost', [wonAmount]);
- });
- }
- }, 3600);
- });
- }
- });
- } else {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + wonAmount + ', `total_won` = `total_won` + ' + wonAmount + ' WHERE `steamid` = ' + connection.escape(cfBets[index].player.steamid), function(err69, row69) {
- if (err69) {
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(cfBets[index].player.steamid) + ', `change` = ' + connection.escape(wonAmount) + ', `reason` = \'Coinflip #' + cfBets[index].hash + ' ' + 'winning!' + '\'', function(err70) {
- if (err70) {
- logger.debug('database error at wallet_change');
- logger.debug(err70);
- }
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + play + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err71) {
- if (err71) logger.debug('error at total lose increase');
- });
- setTimeout(function() {
- if (users[cfBets[index].player.steamid]) {
- users[cfBets[index].player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', wonAmount);
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'coinflipWon', [wonAmount]);
- });
- }
- if (users[user.steamid]) {
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'coinflipLost', [wonAmount]);
- });
- }
- }, 3600);
- });
- }
- });
- }
- setTimeout(function() {
- delete cfBets[index];
- }, 60000);
- io.sockets.to('coinflip').emit('coinflip win', cfBets[index].hash, {
- won: wonSide
- });
- }, 10000);
- });
- });
- } else {
- socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- } else {
- return socket.emit('notify', 'error', 'coinflipPlayFailed');
- }
- });
- socket.on('crash bet', function(play) {
- if (!active["crash"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (play_try[user.steamid]) return;
- if (cstatus === 'closed' || cstatus === 'drop') return socket.emit('notify', 'error', 'crashPlayFailed');
- if (!play) return socket.emit('notify', 'error', 'crashPlayFailed');
- if (!play.bet) return socket.emit('notify', 'error', 'crashPlayFailed');
- if (typeof play.cashout === 'undefined') return socket.emit('notify', 'error', 'crashPlayFailed');
- if (play.cashout !== '' && typeof play.cashout !== 'number') return socket.emit('notify', 'error', 'crashPlayFailed');
- if (typeof play.bet !== 'number') return socket.emit('notify', 'error', 'crashPlayFailed');
- play.bet = parseInt(play.bet);
- if (isNaN(play.bet)) return socket.emit('notify', 'error', 'cannotParseValue');
- play.bet = '' + play.bet;
- play.bet = play['bet'].replace(/\D/g, '');
- if (play.bet < config.min_crash_bet) return socket.emit('notify', 'error', 'crashMinBet', [play.bet, config.min_crash_bet]);
- if (play.bet > config.max_crash_bet) return socket.emit('notify', 'error', 'crashMaxBet', [play.bet, config.max_crash_bet]);
- play_try[user.steamid] = 1;
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- return [socket.emit('notify', 'error', 'crashPlayFailed'), logger.debug(err), delete play_try[user.steamid]];
- }
- if (row[0].wallet >= play.bet) {
- var find = cbets.find(x => x.profile.steamid == user.steamid);
- if (find != undefined) return [socket.emit('notify', 'error', 'crashPlayFailed'), delete play_try[user.steamid]];
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + parseInt(play.bet) + ', `total_bet` = `total_bet` + ' + parseInt(play.bet) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err2, row2) {
- if (row[0].deposit_sum >= config.min_bet_wager) {
- connection.query('UPDATE `users` SET `wager` = `wager` + ' + parseInt(play.bet) + ' WHERE `steamid` = ' + connection.escape(user.steamid));
- }
- if (err2) {
- return [socket.emit('notify', 'error', 'crashPlayFailed'), logger.debug(err2), delete play_try[user.steamid]];
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = -' + connection.escape(play.bet) + ', `reason` = \'Crash #' + cgame + ' - cashout at ' + play.cashout + '\'', function(err3, row3) {
- if (err3) {
- return [logger.debug('important error at wallet_change'), logger.debug(err3), socket.emit('notify', 'error', 'serverError'), delete play_try[user.steamid]];
- } else {
- cbets.push({
- bet: play.bet,
- profile: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- }
- });
- players_cashouts[user.steamid] = play.cashout;
- io.sockets.to('crash').emit('player new', [{
- bet: play.bet,
- profile: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- }
- }]);
- delete play_try[user.steamid];
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + play.bet));
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'crashPlaySuccess', [play.bet]);
- });
- }
- });
- }
- });
- } else {
- delete play_try[user.steamid];
- return socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- });
- socket.on('crash withdraw', function() {
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- crashWithdraw(user);
- });
- socket.on('jackpot play', function(play) {
- if (!active["jackpot"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!play) return socket.emit('notify', 'error', 'jackpotPlayFailed');
- if ((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify', 'error', 'jackpotPlayFailed');
- play = parseInt(play);
- if (isNaN(play)) return socket.emit('notify', 'error', 'cannotParseValue');
- play = '' + play;
- play = play.replace(/\D/g, '');
- if (play < config.min_jackpot_bet) return socket.emit('notify', 'error', 'jackpotMinBet', [play, config.min_jackpot_bet]);
- if (play > config.max_jackpot_bet) return socket.emit('notify', 'error', 'jackpotMaxBet', [play, config.max_jackpot_bet]);
- if (jpUsers[user.steamid]) return socket.emit('notify', 'error', 'jackpotPending');
- if (!jpAllow) return socket.emit('notify', 'error', 'jackpotTime');
- jpUsers[user.steamid] = 2;
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- delete jpUsers[user.steamid];
- return [socket.emit('notify', 'error', 'jackpotPlayFailed'), logger.debug(err)];
- }
- if (row[0].wallet >= play) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + parseInt(play) + ', `total_bet` = `total_bet` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err2, row2) {
- if (row[0].deposit_sum >= config.min_bet_wager) {
- connection.query('UPDATE `users` SET `wager` = `wager` + ' + parseInt(play) + ' WHERE `steamid` = ' + connection.escape(user.steamid));
- }
- if (err2) {
- delete jpUsers[user.steamid];
- return [socket.emit('notify', 'error', 'jackpotPlayFailed'), logger.debug(err2)];
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = -' + connection.escape(play) + ', `reason` = \'Jackpot ' + 'play' + '\'', function(err3, row3) {
- if (err3) {
- delete jpUsers[user.steamid];
- return [logger.debug('important error at wallet_change'), logger.debug(err3), socket.emit('notify', 'error', 'serverError')];
- } else {
- logger.trace(Object.keys(jpUsers).length);
- if (jpTimeleft == -1 && Object.keys(jpUsers).length > 1) jackpotTimer();
- jpBets.push({
- amount: play,
- player: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- },
- rangeMin: jpPool + 1,
- rangeMax: jpPool + parseInt(play),
- total: jpPool + parseInt(play)
- });
- jpPool += parseInt(play);
- io.sockets.to('jackpot').emit('jackpot new bet', {
- amount: play,
- player: {
- avatar: user.avatar,
- steamid: user.steamid,
- username: user.username
- },
- total: jpPool
- });
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + play));
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'jackpotPlaySuccess', [play]);
- });
- }
- });
- }
- });
- } else {
- delete jpUsers[user.steamid];
- return socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- });
- socket.on('dice-bet', function(play) {
- if (!active["dice"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!play) return socket.emit('notify', 'error', 'dicePlayFailed');
- if ((typeof play.value != 'string') && (typeof play.value != 'number')) return socket.emit('notify', 'error', 'dicePlayFailed');
- if ((typeof play.limit != 'string') && (typeof play.limit != 'number')) return socket.emit('notify', 'error', 'dicePlayFailed');
- if ((typeof play.type != 'string') && (typeof play.type != 'number')) return socket.emit('notify', 'error', 'dicePlayFailed');
- betAmount = parseInt(play.value);
- if (betAmount < 0) return socket.emit('notify', 'error', 'dicePlayFailed');
- play.limit = parseInt(play.limit);
- type = parseInt(play.type)
- if (isNaN(betAmount)) return socket.emit('notify', 'error', 'cannotParseValue');
- if (isNaN(play.limit)) return socket.emit('notify', 'error', 'cannotParseValue');
- if (isNaN(type)) return socket.emit('notify', 'error', 'cannotParseValue');
- if (play.limit < 5 || play.limit > 9500) return socket.emit('notify', 'error', 'dicePlayFailed');
- if (betAmount < config.min_dice_bet) return socket.emit('notify', 'error', 'diceMinBet', [play, config.min_dice_bet]);
- if (betAmount > config.max_dice_bet) return socket.emit('notify', 'error', 'diceMaxBet', [play, config.max_dice_bet]);
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- return [socket.emit('notify', 'error', 'dicePlayFailed'), logger.debug(err)];
- }
- if (row[0].wallet >= betAmount) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(betAmount)+', `total_bet` = `total_bet` + '+parseInt(betAmount)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
- if(err2) {
- return [socket.emit('notify','error','dicePlayFailed'),logger.debug(err2)];
- } else {
- if(row[0].deposit_sum >= config.min_bet_wager){
- connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(betAmount)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err3) {
- if (err3) {
- logger.error('error updating wager: ' + user.steamid);
- logger.debug(err3);
- }
- else{
- connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(betAmount)+', `reason` = \'Dice '+'play'+'\'', function(err4, row3) {
- if(err4) {
- return [logger.error('important error at wallet_change'),logger.debug(err3),socket.emit('notify','error','serverError')];
- } else {
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + betAmount));
- });
- var currgame = dice_games[user_dice_current[user.steamid]];
- var multiplier = ((100 / (((play.type == 0 || play.type == "0") ? play.limit : 10000 - play.limit) / 100)) * (1 - 0.04));
- if (play.type == 0 || play.type == "0") {
- if (currgame.roll < play.limit) {
- //won
- profit = betAmount * multiplier - betAmount;
- } else {
- profit = -betAmount;
- }
- } else {
- if (currgame.roll > play.limit) {
- //won
- profit = betAmount * multiplier - betAmount;
- } else {
- profit = -betAmount;
- }
- }
- dice_games[user_dice_current[user.steamid]] = {
- "hash": currgame.hash,
- "id": dice_games.count,
- "limit": play.limit,
- "multiplier": multiplier,
- "profit": profit,
- "roll": currgame.roll,
- "secret": currgame.secret,
- "type": play.type,
- "value": betAmount,
- "user": {
- "avatar": user.avatar,
- "id": user.steamid,
- "rank": user.rank,
- "username": user.username
- }
- };
- if(profit > 0){
- connection.query('UPDATE `users` SET `wallet` = `wallet` + '+parseInt(betAmount * multiplier)+', `total_bet` = `total_bet` + '+parseInt(betAmount * multiplier)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err5, row2) {
- if(err5) {
- return [socket.emit('notify','error','dicePlayFailed'),logger.debug(err2)];
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = '+connection.escape(betAmount * multiplier)+', `reason` = \'Dice '+'win'+'\'', function(err6, row3) {
- if(err6) {
- return [logger.error('important error at wallet_change'),logger.debug(err3),socket.emit('notify','error','serverError')];
- }
- });
- }
- });
- }
- io.sockets.emit('dice-game', {
- "game": dice_games[user_dice_current[user.steamid]]
- });
- socket.emit('dice-result', {
- "game": dice_games[user_dice_current[user.steamid]],
- "hash": generateDiceGame(user.steamid)
- });
- }
- });
- }
- });
- }
- }
- });
- } else {
- return socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- });
- /*socket.on('mines start', function(play) {
- if (!active["mines"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!play) return socket.emit('notify', 'error', 'minesPlayFailed');
- if ((typeof play.amount != 'string') && (typeof play.amount != 'number')) return socket.emit('notify', 'error', 'minesPlayFailed');
- if ((typeof play.bombs != 'string') && (typeof play.bombs != 'number')) return socket.emit('notify', 'error', 'minesPlayFailed');
- betAmount = parseInt(play.amount);
- bombs = parseInt(play.bombs);
- if (isNaN(betAmount)) return socket.emit('notify', 'error', 'cannotParseValue');
- if (isNaN(bombs)) return socket.emit('notify', 'error', 'cannotParseValue');
- if (betAmount < config.min_dice_bet) return socket.emit('notify', 'error', 'minesMinBet', [play, config.min_dice_bet]);
- if (betAmount > config.max_dice_bet) return socket.emit('notify', 'error', 'minesMaxBet', [play, config.max_dice_bet]);
- connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if ((err) || (!row.length)) {
- return [socket.emit('notify', 'error', 'minesPlayFailed'), logger.debug(err)];
- }
- if (row[0].wallet >= betAmount) {
- /* connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play)+', `total_bet` = `total_bet` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
- if(row[0].deposit_sum >= config.min_bet_wager){
- connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid));
- }
- if(err2) {
- return [socket.emit('notify','error','dicePlayFailed'),logger.debug(err2)];
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play)+', `reason` = \'Dice '+'play'+'\'', function(err3, row3) {
- if(err3) {
- return [logger.debug('important error at wallet_change'),logger.debug(err3),socket.emit('notify','error','serverError')];
- } else {*//*
- var gameID = mines_games.length;
- var arraytmp = [];
- for (var i = 1; i <= 25; i++) {
- arraytmp[i] = i;
- }
- arraytmp.sort(function() {
- return .5 - Math.random();
- });
- var mines = [];
- for (var i = 0; i < bombs; i++) {
- mines[i] = arraytmp[i];
- }
- var secret = sha256(generate(128));
- var hash = sha256(bombs + ":" + secret);
- user_mines_current[user.steamid] = gameID;
- mines_games[gameID]={
- "id":gameID,
- "bet": betAmount,
- "bombs": bombs,
- "hash": hash,
- "payout": betAmount,
- "secret": secret,
- "nextPayout": 2,
- "selectedTiles": [],
- "mines": mines
- };
- socket.emit("mines start", {
- "id":gameID,
- "bet": betAmount,
- "bombs": bombs,
- "hash": hash,
- "nextPayout": 2,
- "selectedTiles": []
- });
- /* }
- });
- }
- });*//*
- } else {
- return socket.emit('notify', 'error', 'notEnoughCoins');
- }
- });
- });
- socket.on('mines click', function(play) {
- if (!active["mines"]) return socket.emit('notify', 'error', 'closed');
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (!play) return socket.emit('notify', 'error', 'minesPlayFailed');
- if ((typeof play.position != 'string') && (typeof play.position != 'number')) return socket.emit('notify', 'error', 'minesPlayFailed');
- position = parseInt(play.position);
- if (isNaN(position)) return socket.emit('notify', 'error', 'cannotParseValue');
- mines_games[user_mines_current[user.steamid]].payout+=mines_games[user_mines_current[user.steamid]].nextPayout;
- mines_games[user_mines_current[user.steamid]].nextPayout+=1;
- mines_games[user_mines_current[user.steamid]].selectedTiles.push(position);
- if(mines_games[user_mines_current[user.steamid]].mines.includes(position)){
- socket.emit("mines game", {
- "id": user_mines_current[user.steamid],
- "payout": mines_games[user_mines_current[user.steamid]].payout,
- "position": position,
- "nextPayout": mines_games[user_mines_current[user.steamid]].nextPayout,
- "value": -1,
- "secret": mines_games[user_mines_current[user.steamid]].secret,
- });
- }
- else{
- socket.emit("mines game", {
- "id": user_mines_current[user.steamid],
- "payout": mines_games[user_mines_current[user.steamid]].payout,
- "position": position,
- "nextPayout": mines_games[user_mines_current[user.steamid]].nextPayout,
- "value": mines_games[user_mines_current[user.steamid]].nextPayout-1
- });
- }
- });*/
- socket.on('chat message', function(chat) {
- if ((!chat.message) || (!chat.type)) return;
- if ((typeof chat.message != 'string') || (typeof chat.type != 'string')) return;
- if (last_message[user.steamid] + 1 >= time()) {
- return;
- } else {
- last_message[user.steamid] = time();
- }
- if (!user) return socket.emit('notify', 'error', 'notLoggedIn');
- if (chat && chat.message) {
- if (chat.message.indexOf('/') === 0) {
- var res = null;
- if (chat.message.indexOf('/send') === 0) {
- if (res = /^\/send ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
- if ((res[2] < 1) || (res[2] > 100000)) {
- return socket.emit('notify', 'error', 'chatSendOutOfRange');
- } else {
- var send_amount = parseInt(res[2]);
- if (isNaN(send_amount)) return socket.emit('notify', 'error', 'cannotParseValue');
- connection.query('SELECT `* FROM `users` WHERE `steamid` = ' + user.steamid + ' LIMIT 1', function(error, ppl) {
- if (error) {
- logger.debug(error);
- return socket.emit('notify', 'error', 'chatSendFail', [res[2], res[1]]);
- } else {
- if (ppl[0].total_bet < config.min_bet_send) {
- return socket.emit('notify', 'error', 'chatSendNotEnoughCoins', [config.min_bet_send]);
- } else if (ppl[0].deposit_sum < config.min_deposit_send) {
- return socket.emit('notify', 'error', 'chatSendNotEnoughDeposit', [config.min_deposit_send]);
- } else if (ppl[0].wallet < send_amount) {
- return socket.emit('notify', 'error', 'chatSendOutOfRange');
- } else if (ppl[0].transfer_banned || (ppl[0].wallet >= 100000 && ppl[0].withdraw_approved == 0 && user.rank != "root")) {
- return socket.emit('notify', 'error', 'chatSendUnavailable');
- } else {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + res[1], function(error_2, receiver) {
- if (error_2) {
- logger.debug(error_2);
- return socket.emit('notify', 'error', 'chatSendFail', [res[2], res[1]]);
- } else {
- if ((!receiver) || (!receiver.length)) {
- return socket.emit('notify', 'error', 'chatSendFail', [res[2], res[1]]);
- } else {
- connection.query('UPDATE `users` SET `wallet` = `wallet` - ' + send_amount + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(error_3) {
- if (error_3) {
- logger.debug(error_3);
- return socket.emit('notify', 'error', 'chatSendFail', [res[2], res[1]]);
- } else {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + send_amount + ' WHERE `steamid` = ' + connection.escape(res[1]), function(error_4) {
- if (error_4) {
- logger.debug('error. cant give coins to receiver! ' + res[1]);
- logger.debug(error_4);
- return socket.emit('notify', 'error', 'chatSendFail', [res[2], res[1]]);
- } else {
- 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) {
- if (error_5) {
- logger.debug('error. not inserted wallet change for sender.');
- logger.debug(error_5);
- } else {
- 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) {
- if (error_6) {
- logger.debug('error. not inserted wallet change for receiver.');
- logger.debug(error_6);
- }
- });
- }
- });
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('balance change', parseInt('-' + send_amount));
- io.sockets.connected[asocket].emit('notify', 'success', 'chatSendSuccess', [send_amount, res[1]]);
- }
- });
- if (users[res[1]])
- users[res[1]].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('balance change', send_amount);
- io.sockets.connected[asocket].emit('notify', 'success', 'chatSendReceived', [send_amount, res[1]]);
- }
- });
- }
- });
- }
- });
- }
- }
- });
- }
- }
- });
- }
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- }
- else if (chat.message.indexOf('/ref') === 0) {
- if (res = /^\/ref (.)/.exec(chat.message)) {
- if (res = /^\/ref (.{2,254})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(user_error, ouruser) {
- if ((user_error) || (ouruser.length !== 1)) {
- logger.debug('cannot get user from referral');
- logger.debug(user_error);
- return;
- } else if ((ouruser) && (ouruser.length === 1) && (ouruser[0].inviter.length > 0)) {
- return socket.emit('notify', 'error', 'chatReferralAlreadyUsed');
- } else {
- if (user.csgo == 'true') {
- connection.query('SELECT * FROM `users` WHERE `code` = ' + connection.escape(res[1].toUpperCase()) + ' LIMIT 1', function(codes_error, codes) {
- if (codes_error) {
- socket.emit('notify', 'error', 'chatReferralFailed');
- } else if ((codes[0]) && (codes[0].steamid == user.steamid)) {
- socket.emit('notify', 'error', 'chatReferralOwnCode');
- } else {
- if (codes.length > 0) {
- connection.query('UPDATE `users` SET `inviter` = ' + connection.escape(codes[0].steamid) + ', `wallet` = `wallet` + 100 WHERE `steamid` = ' + connection.escape(user.steamid), function(update_code_error, update_code) {
- if (update_code_error) {
- logger.debug('error while referal');
- logger.debug(update_code_error);
- socket.emit('notify', 'error', 'chatReferralFailed');
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `change` = \'100\',`reason` = \'Referral - free\',`user` = ' + connection.escape(user.steamid));
- }
- });
- socket.emit('notify', 'success', 'chatReferralSuccess', [res[1], 100]);
- if (users[user.steamid])
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('balance change', 100);
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatReferralUnknown');
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatReferralNoCSGO');
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatReferralUnknown');
- }
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- }
- else if (chat.message.indexOf('/muteChat') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root')) {
- chat_muted = true;
- socket.emit('notify', 'success', 'chatMuted');
- } else {
- socket.emit('notify', 'error', 'chatAdminAccess');
- }
- }
- else if (chat.message.indexOf('/unmuteChat') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root')) {
- chat_muted = false;
- socket.emit('notify', 'success', 'chatUnmuted');
- } else {
- socket.emit('notify', 'error', 'chatAdminAccess');
- }
- }
- else if (chat.message.indexOf('/access') === 0) {
- if (user.rank === 'root') {
- if (res = /^\/access ([0-9]{17}) (.{1,})/.exec(chat.message)) {
- if ((res[2] == 'user') || (res[2] == 'siteMod') || (res[2] == 'siteAdmin') || (res[2] == 'root') || (res[2] == 'youtuber') || (res[2] == 'twitch')) {
- connection.query('UPDATE `users` SET `rank` = ' + connection.escape(res[2]) + ' WHERE `steamid` = ' + connection.escape(res[1]), function(access_err) {
- var levels = {
- user: 1,
- siteMod: 2,
- siteAdmin: 3,
- root: 4
- };
- if (access_err) {
- return socket.emit('notify', 'error', 'chatAccessLevelFailed', [levels[res[2]], res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatAccessLevelSuccess', [levels[res[2]], res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatAccessLevelOutOfRange');
- }
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatRootAccess');
- }
- }
- else if (chat.message.indexOf('/give') === 0) {
- if (user.rank === 'root') {
- if (res = /^\/give ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + connection.escape(res[2]) + ' WHERE `steamid` = ' + connection.escape(res[1]), function(give_error) {
- if (give_error) {
- logger.debug(give_error);
- socket.emit('notify', 'error', 'chatGiveFail');
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(res[1]) + ', `change` = ' + connection.escape(res[2]) + ', `reason` = \'Received from server\'');
- if (users[res[1]]) {
- users[res[1]].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', parseInt(res[2]));
- });
- }
- socket.emit('notify', 'success', 'chatGiveSuccess', [res[2], res[1]]);
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatRootAccess');
- }
- }
- else if (chat.message.indexOf('/coins') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root')) {
- connection.query('SELECT SUM(`wallet`) AS `sum` FROM `users`', function(error, total) {
- if (error) {
- return;
- } else {
- var total = total[0].sum;
- var total_inv = 0;
- connection.query('SELECT * FROM `inventory`', function(inv_err, inventory) {
- if (inv_err) {
- return;
- } else {
- for (key in inventory) {
- var obj = inventory[key];
- if (prices[obj['market_hash_name']])
- var a_price = prices[obj['market_hash_name']] * 1000;
- else var a_price = 0;
- total_inv += a_price;
- }
- socket.emit('notify', 'success', 'chatCoinsBalance', [0, total_inv, total]);
- }
- });
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatRootAccess');
- }
- }
- else if (chat.message.indexOf('/mute') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/mute ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(mute_err, mute_callback) {
- if (mute_err) {
- return socket.emit('notify', 'error', 'chatMuteFail', [res[1]]);
- } else {
- if ((mute_callback) && (mute_callback.length)) {
- if (mute_callback[0].rank == 'user') {
- var mutedFor = time() + res[2]*60;
- connection.query('UPDATE `users` SET `muted` = ' + connection.escape(mutedFor) + ' WHERE `steamid` = ' + connection.escape(res[1]), function(mute_err1) {
- if (mute_err1) {
- return socket.emit('notify', 'error', 'chatMuteFail', [res[1]]);
- } else {
- if (users[res[1]]) users[res[1]].muted = mutedFor;
- return socket.emit('notify', 'success', 'chatMuteSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatMuteStaff');
- }
- } else {
- return socket.emit('notify', 'error', 'chatMuteFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/unmute') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/unmute ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(unmute_err, unmute_callback) {
- if (unmute_err) {
- return socket.emit('notify', 'error', 'chatUnmuteFail', [res[1]]);
- } else {
- if ((unmute_callback) && (unmute_callback.length)) {
- if (unmute_callback[0].rank == 'user') {
- if (unmute_callback[0].muted >= 1) {
- connection.query('UPDATE `users` SET `muted` = 0 WHERE `steamid` = ' + connection.escape(res[1]), function(unmute_err1) {
- if (unmute_err1) {
- return socket.emit('notify', 'error', 'chatUnmuteFail', [res[1]]);
- } else {
- if (users[res[1]]) users[res[1]].muted = 0;
- return socket.emit('notify', 'success', 'chatUnmuteSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatUnmuteNotMuted', [res[1]]);
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnmuteStaff');
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnmuteFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/ban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/ban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(ban_err, ban_callback) {
- if (ban_err) {
- return socket.emit('notify', 'error', 'chatBanFail', [res[1]]);
- } else {
- if ((ban_callback) && (ban_callback.length)) {
- if (ban_callback[0].rank == 'user') {
- connection.query('UPDATE `users` SET `banned` = 1 WHERE `steamid` = ' + connection.escape(res[1]), function(ban_err1) {
- if (ban_err1) {
- return socket.emit('notify', 'error', 'chatBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatBanStaff');
- }
- } else {
- return socket.emit('notify', 'error', 'chatBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/unban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/unban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(unban_err, unban_callback) {
- if (unban_err) {
- return socket.emit('notify', 'error', 'chatUnBanFail', [res[1]]);
- } else {
- if ((unban_callback) && (unban_callback.length)) {
- if (unban_callback[0].banned == 1) {
- connection.query('UPDATE `users` SET `banned` = 0 WHERE `steamid` = ' + connection.escape(res[1]), function(unban_err1) {
- if (unban_err1) {
- return socket.emit('notify', 'error', 'chatUnBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatUnBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatUnbanNotBanned', [res[1]]);
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/withdrawban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/withdrawban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(ban_err, ban_callback) {
- if (ban_err) {
- return socket.emit('notify', 'error', 'chatWithdrawBanFail', [res[1]]);
- } else {
- if ((ban_callback) && (ban_callback.length)) {
- connection.query('UPDATE `users` SET `withdraw_ban` = 1 AND `transfer_banned` = 1 WHERE `steamid` = ' + connection.escape(res[1]), function(ban_err1) {
- if (ban_err1) {
- return socket.emit('notify', 'error', 'chatWithdrawBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatWithdrawBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatWithdrawBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/unwithdrawban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/unwithdrawban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(unban_err, unban_callback) {
- if (unban_err) {
- return socket.emit('notify', 'error', 'chatUnWithdrawBanFail', [res[1]]);
- } else {
- if ((unban_callback) && (unban_callback.length)) {
- if (unban_callback[0].withdraw_ban == 1) {
- connection.query('UPDATE `users` SET `withdraw_ban` = 0 AND `transfer_banned` = 0 WHERE `steamid` = ' + connection.escape(res[1]), function(unban_err1) {
- if (unban_err1) {
- return socket.emit('notify', 'error', 'chatUnWithdrawBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatUnWithdrawBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatUnWithdrawbanNotBanned', [res[1]]);
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnWithdrawBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/transferban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/transferban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(ban_err, ban_callback) {
- if (ban_err) {
- return socket.emit('notify', 'error', 'chatTransferBanFail', [res[1]]);
- } else {
- if ((ban_callback) && (ban_callback.length)) {
- connection.query('UPDATE `users` SET `transfer_banned` = 1 WHERE `steamid` = ' + connection.escape(res[1]), function(ban_err1) {
- if (ban_err1) {
- return socket.emit('notify', 'error', 'chatTransferBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatTransferBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatTransferBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/untransferban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/untransferban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(unban_err, unban_callback) {
- if (unban_err) {
- return socket.emit('notify', 'error', 'chatUnTransferBanFail', [res[1]]);
- } else {
- if ((unban_callback) && (unban_callback.length)) {
- if (unban_callback[0].transfer_banned == 1) {
- connection.query('UPDATE `users` SET `transfer_banned` = 0 WHERE `steamid` = ' + connection.escape(res[1]), function(unban_err1) {
- if (unban_err1) {
- return socket.emit('notify', 'error', 'chatUnTransferBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatUnTransferBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatUnTransferbanNotBanned', [res[1]]);
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnTransferBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/depositban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/depositban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(ban_err, ban_callback) {
- if (ban_err) {
- return socket.emit('notify', 'error', 'chatDepositBanFail', [res[1]]);
- } else {
- if ((ban_callback) && (ban_callback.length)) {
- connection.query('UPDATE `users` SET `deposit_ban` = 1 WHERE `steamid` = ' + connection.escape(res[1]), function(ban_err1) {
- if (ban_err1) {
- return socket.emit('notify', 'error', 'chatDepositBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatDepositBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatDepositBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/undepositban') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/undepositban ([0-9]{17})/.exec(chat.message)) {
- connection.query('SELECT * FROM `users` WHERE `steamid` = ' + connection.escape(res[1]) + ' LIMIT 1', function(unban_err, unban_callback) {
- if (unban_err) {
- return socket.emit('notify', 'error', 'chatUnDepositBanFail', [res[1]]);
- } else {
- if ((unban_callback) && (unban_callback.length)) {
- if (unban_callback[0].deposit_ban == 1) {
- connection.query('UPDATE `users` SET `deposit_ban` = 0 WHERE `steamid` = ' + connection.escape(res[1]), function(unban_err1) {
- if (unban_err1) {
- return socket.emit('notify', 'error', 'chatUnDepositBanFail', [res[1]]);
- } else {
- return socket.emit('notify', 'success', 'chatUnDepositBanSuccess', [res[1]]);
- }
- });
- } else {
- return socket.emit('notify', 'error', 'chatUnDepositbanNotBanned', [res[1]]);
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnDepositBanFail', [res[1]]);
- }
- }
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/removeMessages') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/removeMessages ([0-9]{17})/.exec(chat.message)) {
- chat_history = chat_history.filter(function(obj) {
- return obj.profile.steamid !== res[1];
- });
- io.sockets.emit('remove messages', {
- "steamid": res[1]
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/removeMessage') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/removeMessage (.{1,})/.exec(chat.message)) {
- var index = chat_history.map(function(e) {
- return e.uniqueID;
- }).indexOf(res[1]);
- if (index > -1) {
- chat_history.splice(index, 1);
- }
- io.sockets.emit('remove message', {
- "uniqueID": res[1]
- });
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/active') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root')) {
- if (res = /^\/active (.{1,}) (.{1,})/.exec(chat.message)) {
- if (res[2] == "false") {
- active[res[1]] = false;
- } else {
- active[res[1]] = true;
- }
- return socket.emit('notify', 'success', 'chatAccessSet', [res[1], res[2]]);
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatRootAccess');
- }
- }
- else if (chat.message.indexOf('/isactive') === 0) {
- if ((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')) {
- if (res = /^\/isactive (.{1,})/.exec(chat.message)) {
- return socket.emit('notify', 'success', 'chatAccessView', [res[1], active[res[1]]]);
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatModAccess');
- }
- }
- else if (chat.message.indexOf('/config') === 0) {
- if (user.rank === 'root') {
- if (res = /^\/config/.exec(chat.message)) {
- config = require('./config');
- } else {
- socket.emit('notify', 'error', 'chatMissingParameters');
- }
- } else {
- socket.emit('notify', 'error', 'chatRootAccess');
- }
- } else {
- return socket.emit('notify', 'error', 'chatUnknownCommand');
- }
- }
- else {
- if (((chat_muted === false) && (user.muted <= time())) || (user.rank != 'user')) {
- if(chat.message.length <= 256 || user.rank != 'user'){
- connection.query('SELECT `total_bet` FROM `users` WHERE `steamid` = ' + connection.escape(user.steamid) + ' LIMIT 1', function(err, row) {
- if (err) {
- socket.emit('notify', 'error', 'serverError');
- return;
- } else {
- if ((row[0].total_bet < config.min_bet_chat) && (user.rank == 'user')) {
- socket.emit('notify', 'error', 'chatNotEnoughBets', [row[0].total_bet, config.min_bet_chat]);
- return;
- } else {
- var uniqueID = generate(20);
- io.sockets.emit('chat message', {
- message: chat.message,
- profile: {
- avatar: user.avatar,
- rank: user.rank,
- steamid: user.steamid,
- username: user.username
- },
- time: time(),
- uniqueID: uniqueID
- });
- array_limit({
- message: chat.message,
- profile: {
- avatar: user.avatar,
- rank: user.rank,
- steamid: user.steamid,
- username: user.username
- },
- time: time(),
- uniqueID: uniqueID
- });
- }
- }
- });
- }
- else{
- return socket.emit('notify', 'error', 'chatMaxLength');
- }
- } else if(user.muted > time()) {
- return socket.emit('notify', 'error', 'userMuted', [secondsToDhms(user.muted - time())]);
- }else {
- return socket.emit('notify', 'error', 'chatIsMuted');
- }
- }
- }
- });
- /*socket.on('new login', function(steamid){
- steamid = steamid.toString();
- if (!/^\d+$/.test(steamid)) return socket.emit('notify', 'error', 'invalidSteamID');
- socket.emit("login failed");
- var sid = new SteamID(steamid);
- if(!sid.isValid()) return socket.emit('notify', 'error', 'invalidSteamID');
- socket.emit("login failed");
- var client = site_bots[Object.keys(site_bots)[Math.floor(Math.random() * Object.keys(site_bots).length)]].client;
- steamid = sid.getSteamID64();
- user_login_codes[steamid] = {code: generate(20), socket: socket.id};
- socket.emit('login code', user_login_codes[steamid].code);
- /*client.addFriend(steamid, function(err, name){
- if(err){
- if(err.eresult == 14 || err.eresult == "14"){
- user_login_codes[steamid] = {code: generate(20), socket: socket.id};
- socket.emit('login code', user_login_codes[steamid].code);
- }
- else if(err.eresult == 40 || err.eresult == "40"){
- socket.emit('notify', 'error', 'botBlocked');
- socket.emit("login failed");
- }
- else if(err.eresult == 41 || err.eresult == "41"){
- socket.emit('notify', 'error', 'botIgnored');
- socket.emit("login failed");
- }
- else{
- logger.error("Error adding user: " + steamid);
- logger.debug(err);
- socket.emit("login failed");
- }
- }
- else{
- if(name){
- user_login_codes[steamid] = {code: generate(20), socket: socket.id};
- socket.emit('login code', user_login_codes[steamid].code);
- }
- else{
- logger.error("Werid error adding user: " + steamid + ", no error returned but name also not returned");
- socket.emit("login failed");
- }
- }
- });
- });*/
- });
- function secondsToDhms(d) {
- d = Number(d);
- var dd = Math.floor(d / 24 / 60 / 60);
- var h = Math.floor(d / 60 / 60) % 24;
- var m = Math.floor(d / 60) % 60;
- var s = d % 60;
- var dDisplay = dd > 0 ? dd + (dd == 1 ? " day, " : " days, ") : "";
- var hDisplay = h > 0 ? h + (h == 1 ? " hour, " : " hours, ") : "";
- var mDisplay = m > 0 ? m + (m == 1 ? " minute, " : " minutes, ") : "";
- var sDisplay = s > 0 ? s + (s == 1 ? " second" : " seconds") : "";
- var toReturn = dDisplay + hDisplay + mDisplay + sDisplay;
- return toReturn[toReturn.length-1] == " " ? toReturn.slice(0, -2) : toReturn;
- }
- setInterval(function() {
- io.sockets.emit('users online', Object.keys(users).length);
- }, 5000);
- var steam_check_interval = 5000;
- setInterval(function() {
- request('http://is.steam.rip/api/v1/?request=IsSteamRip', function(rip_error, response, body) {
- if (rip_error) {
- return;
- } else {
- if (body) {
- if (body.result) {
- if (body.result.success === true) {
- if (body.result.isSteamRip === true) {
- isSteamRIP = true; //o nie! Steam nie zyje!
- steam_check_interval = 20000;
- } else {
- isSteamRIP = false; //uff. Steam zyje!
- }
- }
- }
- }
- }
- });
- }, steam_check_interval);
- function crashWithdraw(user) {
- if (cstatus === 'closed') {
- var find = cbets.find(x => x.profile.steamid == user.steamid);
- if (find == undefined) return;
- if (find.done) return;
- find.done = 1;
- var multiplier = growthFunc(ctime);
- var profit = Math.floor(find.bet * multiplier);
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + profit + ', `total_won` = `total_won` + ' + profit + ' WHERE `steamid` = ' + connection.escape(user.steamid), function(err) {
- if (err) {
- logger.debug('important error at wallet increase');
- logger.debug(err);
- if (users[user.steamid]) {
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'serverError');
- });
- }
- return;
- } else {
- if (users[user.steamid]) {
- users[user.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', profit);
- });
- }
- io.sockets.to('crash').emit('player drop', {
- bet: find.bet,
- multiplier: multiplier.toFixed(2).toString(),
- profile: {
- avatar: find.profile.avatar,
- steamid: find.profile.steamid,
- username: find.profile.username
- },
- profit: profit
- });
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(user.steamid) + ', `change` = ' + connection.escape(profit) + ', `reason` = \'Crash #' + cgame + ' ' + 'winning - ' + multiplier.toFixed(2) + '\'', function(err2) {
- if (err2) {
- logger.debug('database error at wallet_change');
- logger.debug(err2);
- return;
- }
- });
- }
- });
- } else return;
- }
- function jackpotTimer() {
- jpTimeleft = jpTime;
- jpAllow = true;
- io.sockets.to('jackpot').emit('jackpot new', jpTime);
- var _timeleft = setInterval(function() {
- --jpTimeleft;
- if (jpTimeleft == config.latest_jackpot_bet_time) jpAllow = false;
- else if (jpTimeleft == 0) {
- var winnerNumber = getRandomInt(1, jpPool);
- var winnerObject = jpBets.find(x => x.rangeMin <= winnerNumber && x.rangeMax >= winnerNumber);
- var winner = winnerObject.player.steamid;
- var winSum = (jpPool - parseInt(winnerObject.amount)) - Math.floor((jpPool - parseInt(winnerObject.amount)) * 0.10) + parseInt(winnerObject.amount);
- if (jpBets.length >= 2) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + winSum + ', `total_won` = `total_won` + ' + winSum + ' WHERE `steamid` = ' + connection.escape(winner), function(err69, row69) {
- if (err69) {
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(winner) + ', `change` = ' + connection.escape(winSum) + ', `reason` = \'Jackpot winning!' + '\'', function(err70) {
- if (err70) {
- logger.debug('database error at wallet_change');
- logger.debug(err70);
- }
- jpBets.forEach(function(obj) {
- if (JSON.stringify(obj) !== JSON.stringify(winnerObject)) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + obj.amount + ' WHERE `steamid` = ' + connection.escape(obj.player.steamid), function(err71) {
- if (err71) logger.debug('error at total lose increase');
- });
- /* if (users[obj.player.steamid]) {
- users[obj.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'jackpotLost', [obj.amount]);
- });
- }*/
- }
- });
- jp_limit(winnerObject);
- setTimeout(function(){
- if (users[winner]) {
- users[winner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', winSum);
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'jackpotWon', [winSum]);
- });
- }
- }, 15000);
- var avatars = [];
- jpBets.forEach(function(obj) {
- avatars.push(obj.player)
- });
- io.sockets.to('jackpot').emit('jackpot end', {
- winner: winnerObject.player,
- players: avatars,
- won: winSum
- });
- clearInterval(_timeleft);
- jpPool = 0;
- jpBets = [];
- jpUsers = [];
- jpAllow = true;
- jpTimeleft = -1;
- });
- }
- });
- } else {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + winSum + ', `total_bet` = `total_bet` - ' + winSum + ' WHERE `steamid` = ' + connection.escape(winner), function(err69, row69) {
- if (err69) {
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(winner) + ', `change` = ' + connection.escape(winSum) + ', `reason` = \'Jackpot winning!' + '\'', function(err70) {
- if (err70) {
- logger.debug('database error at wallet_change');
- logger.debug(err70);
- }
- jpBets.forEach(function(obj) {
- if (JSON.stringify(obj) !== JSON.stringify(winnerObject)) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + obj.amount + ' WHERE `steamid` = ' + connection.escape(obj.player.steamid), function(err71) {
- if (err71) logger.debug('error at total lose increase');
- });
- if (users[obj.player.steamid]) {
- users[obj.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'jackpotLost', [obj.amount]);
- });
- }
- }
- });
- jp_limit(winnerObject);
- if (users[winner]) {
- users[winner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', winSum);
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'success', 'jackpotWon', [winSum]);
- });
- }
- var avatars = [];
- jpBets.forEach(function(obj) {
- avatars.push(obj.player)
- });
- io.sockets.to('jackpot').emit('jackpot end', {
- winner: winnerObject.player,
- players: avatars,
- won: winSum
- });
- clearInterval(_timeleft);
- jpPool = 0;
- jpBets = [];
- jpUsers = [];
- jpAllow = true;
- jpTimeleft = -1;
- });
- }
- });
- }
- }
- }, 1000);
- }
- function checkTimer() {
- if (!pause) {
- timerID = setInterval(function() {
- //logger.debug(timer);
- if (timer == 0) {
- away();
- }
- if (timer == -100) {
- currentBets = {
- 'red': [],
- 'green': [],
- 'black': []
- };
- usersBr = {};
- timer = accept + wait;
- currentRollid = currentRollid + 1;
- pause = false;
- var sh = sha256(generate(128));
- winningNumber = sh.substr(0, 8);
- winningNumber = parseInt(winningNumber, 16);
- winningNumber = math.abs(winningNumber) % 15;
- if(winningNumber == 0 && math.abs(parseInt(sha256(generate(128)).substr(0, 8), 16)) % 4 != 0){
- var sh = sha256(generate(128));
- winningNumber = sh.substr(0, 8);
- winningNumber = parseInt(winningNumber, 16);
- winningNumber = (math.abs(winningNumber) % 14) + 1;
- }
- secret = generate(20);
- actual_hash = sha256(winningNumber + ":" + secret);
- logger.info('Rolled: ' + winningNumber);
- logger.info('Round #' + currentRollid + ' secret: ' + secret);
- io.sockets.to('roulette').emit('roulette new round', 15, actual_hash);
- }
- timer = timer - 1;
- }, 100);
- }
- }
- function away() {
- pause = true;
- io.sockets.to('roulette').emit('roulette ends', {
- id: currentRollid,
- winningNumber: winningNumber,
- secret: secret,
- hash: actual_hash,
- shift: Math.random()
- });
- setTimeout(function() {
- roulette_limit(winningNumber);
- if ((winningNumber >= 1) && (winningNumber <= 7)) {
- currentBets['red'].forEach(function(itm) {
- 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) {
- if (err) {
- logger.error('important error at wallet increase');
- logger.debug(err);
- if (users[itm.player.steamid]) {
- users[itm.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'serverError');
- });
- }
- return;
- } else {
- if (users[itm.player.steamid]) {
- users[itm.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', itm.amount * 2);
- });
- }
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(itm.player.steamid) + ', `change` = ' + connection.escape(itm.amount * 2) + ', `reason` = \'Roulette #' + currentRollid + ' ' + 'winning!' + '\'', function(err2) {
- if (err2) {
- logger.debug('database error at wallet_change');
- logger.debug(err2);
- return;
- }
- });
- }
- });
- });
- currentBets['black'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + itm.amount + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) logger.debug('error at total lose increase');
- });
- });
- currentBets['green'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + itm.amount + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) logger.debug('error at total lose increase');
- });
- });
- }
- if ((winningNumber >= 8) && (winningNumber <= 14)) {
- currentBets['black'].forEach(function(itm) {
- 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) {
- if (err) {
- logger.debug('important error at wallet increase');
- logger.debug(err);
- if (users[itm.player.steamid]) {
- users[itm.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'serverError');
- });
- }
- return;
- } else {
- if (users[itm.player.steamid]) {
- users[itm.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', itm.amount * 2);
- });
- }
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(itm.player.steamid) + ', `change` = ' + connection.escape(itm.amount * 2) + ', `reason` = \'Roulette #' + currentRollid + ' ' + 'winning!' + '\'', function(err2) {
- if (err2) {
- logger.debug('database error at wallet_change');
- logger.debug(err2);
- return;
- }
- });
- }
- });
- });
- currentBets['red'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + itm.amount + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) logger.debug('error at total lose increase');
- });
- });
- currentBets['green'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + itm.amount + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) logger.debug('error at total lose increase');
- });
- });
- }
- if ((winningNumber >= 0) && (winningNumber <= 0)) {
- currentBets['green'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + itm.amount * 14 + ', `total_won` = `total_won` + ' + itm.amount * 14 + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) {
- logger.debug('important error at wallet increase');
- logger.debug(err);
- if (users[itm.player.steamid]) {
- users[itm.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'error', 'serverError');
- });
- }
- return;
- } else {
- if (users[itm.player.steamid]) {
- users[itm.player.steamid].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('balance change', itm.amount * 14);
- });
- }
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(itm.player.steamid) + ', `change` = ' + connection.escape(itm.amount * 14) + ', `reason` = \'Roulette #' + currentRollid + ' ' + 'winning!' + '\'', function(err2) {
- if (err2) {
- logger.debug('database error at wallet_change');
- logger.debug(err2);
- return;
- }
- });
- }
- });
- });
- currentBets['black'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + itm.amount + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) logger.debug('error at total lose increase');
- });
- });
- currentBets['red'].forEach(function(itm) {
- connection.query('UPDATE `users` SET `total_lose` = `total_lose` + ' + itm.amount + ' WHERE `steamid` = ' + connection.escape(itm.player.steamid), function(err) {
- if (err) logger.debug('error at total lose increase');
- });
- });
- }
- }, 7000);
- connection.query('INSERT INTO `roll_history` SET `roll` = ' + connection.escape(winningNumber) + ', `time` = ' + connection.escape(time()) + ', `hash` = ' + connection.escape(actual_hash));
- }
- function generateDiceGame(steamid) {
- var sh = sha256(generate(128));
- roll = sh.substr(0, 8);
- roll = parseInt(roll, 16);
- roll = math.abs(roll) % 10000;
- secret = generate(20);
- hash = sha256(roll + ":" + secret);
- user_dice_current[steamid] = dice_games.length;
- dice_games.push({
- "hash": hash,
- "id": dice_games.length,
- "roll": roll,
- "secret": secret
- });
- return hash;
- }
- /* */
- /* BOT PART */
- /* */
- /*
- client.on("loggedOn", function(dataAndEvents) {
- logger.debug("[BOT] Signed in!");
- client.setPersona(SteamUser.Steam.EPersonaState.LookingToTrade);
- });
- client.on("webSession", function(dataAndEvents, depName) {
- manager.setCookies(depName, function(reply) {
- if (reply) {
- return logger.debug("Error setting cookies/cache: " + reply), void process.exit(1);
- }
- var cb = manager.apiKey;
- community.setCookies(depName);
- community.startConfirmationChecker(polling_interval, identitysecret);
- logger.debug("[BOT] Session cookies set!");
- });
- });
- manager.on("sentOfferChanged", function(data, oldState) {
- logger.debug("[BOT] Status of the trade offer #" + data.id + " from user: " + data.partner + " changed to: " + data.state + " from: " + oldState);
- var string_state = {
- 1: 'Invalid',
- 2: 'Active',
- 3: 'Accepted',
- 4: 'Countered',
- 5: 'Expired',
- 6: 'Canceled',
- 7: 'Declined',
- 8: 'InvalidItems',
- 9: 'Needs Confirmation',
- 10: 'Canceled',
- 11: 'In Escrow'
- };
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', '', 'offerStateChange', [data.id, string_state[oldState], string_state[data.state]]);
- });
- }
- connection.query('SELECT * FROM `trade_history` WHERE `offer_id` = ' + data.id, function(err, rows) {
- if (err) {
- logger.debug('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
- logger.debug(err);
- return;
- } else if (rows.length < 1) {
- return;
- } else {
- connection.query('UPDATE `trade_history` SET `offer_state` = ' + data.state + ' WHERE `offer_id` = ' + data.id, function(error) {
- if (error) {
- logger.debug('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
- logger.debug(error);
- return;
- }
- });
- if (data.state == 3) {
- if (rows[0].action == 'deposit') {
- data.getReceivedItems(function(items_error, receiveditems) {
- if (items_error) {
- logger.debug('IMPORTANT ERROR AT DEPOSIT getReceivedItems, USER: ' + rows[0].offer_partner);
- logger.debug(items_error);
- } else {
- receiveditems.forEach(function(itemToReceive) {
- connection.query('INSERT INTO `inventory` SET `id` = ' + connection.escape(itemToReceive.id) + ', `market_hash_name` = ' + connection.escape(itemToReceive.market_hash_name) + ', `classid` = ' + connection.escape(itemToReceive.classid) + ', `bot_id` = ' + connection.escape(botsteamid['bot1']) + ', `in_trade` = \'0\'', function(errorXD) {
- if (errorXD) {
- logger.debug('FUCKING IMPORTANT ERROR OCCURED ON ITEM ID: ' + itemToReceive.id + " (" + itemToReceive.market_hash_name + ")");
- logger.debug(errorXD);
- }
- });
- });
- connection.query('UPDATE `users` SET `deposit_sum` = `deposit_sum` + ' + rows[0].worth / 1.1 + ', `wallet` = `wallet` + ' + rows[0].worth + ' WHERE `steamid` = ' + connection.escape(rows[0].offer_partner), function(error1) {
- if (error1) {
- logger.debug('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT, user:' + data.partner);
- logger.debug(error1);
- return;
- } else {
- connection.query('INSERT INTO `wallet_change` SET `user` = ' + connection.escape(rows[0].offer_partner) + ', `change` = ' + connection.escape(rows[0].worth) + ', `reason` = \'Deposit\'', function(err2) {
- if (err2) {
- logger.debug('database error at wallet_change');
- logger.debug(err2);
- }
- });
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('notify', 'success', 'depositOfferAccepted', [data.id, rows[0].worth]);
- io.sockets.connected[asocket].emit('balance change', rows[0].worth);
- }
- });
- }
- }
- });
- }
- });
- } else if (rows[0].action == 'withdraw') {
- if (data.itemsToGive) {
- data.itemsToGive.forEach(function(itemToGive) {
- connection.query('DELETE FROM `inventory` WHERE `id` = ' + itemToGive.id, function(errorAeh) {
- if (errorAeh) {
- logger.debug('error while deleting items on item ID: ' + itemToGive.id + " (" + itemToGive.market_hash_name + ")");
- logger.debug(errorAeh);
- }
- });
- });
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('notify', 'success', 'withdrawOfferAccepted', [data.id]);
- }
- });
- }
- }
- }
- } else if ((data.state == 7) || (data.state == 5) || (data.state == 6) || (data.state == 1) || (data.state == 4) || (data.state == 8) || (data.state == 10)) {
- if (rows[0].action == 'withdraw') {
- if (data.itemsToGive) {
- data.itemsToGive.forEach(function(update_item) {
- connection.query('UPDATE `inventory` SET `in_trade` = \'0\'' + ' WHERE `id` = ' + connection.escape(update_item.assetid), function(err6) {
- if (err6) {
- logger.debug('error at updating in trade items status. id:' + update_item.assetid);
- logger.debug(err6);
- }
- });
- });
- connection.query('UPDATE `users` SET `wallet` = `wallet` + ' + parseInt(rows[0].worth) + ',`withdraw_sum` = `withdraw_sum` - ' + parseInt(rows[0].worth / 0.9) + ' WHERE `steamid` = ' + connection.escape(rows[0].offer_partner), function(err7) {
- if (err7) {
- logger.debug('IMPORTANT error at updating in trade items status. steamid:' + rows[0].offer_partner);
- logger.debug(err7);
- }
- });
- if (users[data.partner]) {
- users[data.partner].socket.forEach(function(asocket) {
- if (io.sockets.connected[asocket]) {
- io.sockets.connected[asocket].emit('balance change', rows[0].worth);
- }
- });
- }
- }
- }
- }
- }
- });
- });
- manager.on("newOffer", function(oferta) {
- });
- community.on("newConfirmation", function(d) {
- var time = Math.round(Date.now() / 1E3);
- var data = SteamTotp.getConfirmationKey(identitysecret, time, "allow");
- community.respondToConfirmation(d.id, d.key, time, data, true, function(error) {
- logger.debug("[BOT] Outgoing confirmation for the trade: " + d.key);
- if (error) {
- logger.debug("[BOT] Error while confirming the trade: " + error);
- client.webLogOn();
- }
- });
- });
- community.on("confKeyNeeded", function(deepDataAndEvents, updateFunc) {
- logger.debug("confKeyNeeded");
- var progressContexts = Math.floor(Date.now() / 1E3);
- updateFunc(null, progressContexts, SteamTotp.getConfirmationKey(identitysecret, progressContexts, deepDataAndEvents));
- });
- community.on("sessionExpired", function(err) {
- if (err) return;
- logger.debug('session expired, logging in...');
- client.webLogOn();
- });*/
- /* */
- /* FUNCTIONS PART */
- /* */
- function load() {
- connection.query('SET NAMES utf8');
- connection.query('SELECT `id` FROM `roll_history` ORDER BY `id` DESC LIMIT 1', function(err, row) {
- if (err) {
- logger.debug('Can not get number from the last game');
- logger.debug(err);
- process.exit(0);
- }
- if (!row.length) {
- currentRollid = 1;
- } else {
- currentRollid = parseInt(row[0].id) + 1;
- }
- });
- loadHistory();
- }
- function loadHistory() {
- connection.query('SELECT * FROM `roll_history` ORDER BY `id` LIMIT 10', function(err, row) {
- if (err) {
- logger.debug('Error while loading last rolls history');
- logger.debug(err);
- process.exit(0);
- }
- row.forEach(function(itm) {
- roulette_limit(itm.roll);
- });
- });
- //server.listen(8443);
- }
- function time() {
- return parseInt(new Date().getTime() / 1000)
- }
- function generate(count) {
- return crypto.randomBytes(count).toString('hex');
- }
- function array_limit(wartosc) {
- if (chat_history.length == 25) {
- chat_history.shift();
- }
- chat_history.push(wartosc);
- }
- function roulette_limit(wartosc) {
- if (lastrolls.length == 25) {
- lastrolls.shift();
- }
- lastrolls.push(wartosc);
- }
- function jp_limit(wartosc) {
- if (jpWinners.length == 10) {
- jpWinners.shift();
- }
- jpWinners.push(wartosc);
- }
- function getRandomInt(min, max) {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
Add Comment
Please, Sign In to add comment