Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const http = require('http');
  2. const https = require('https');
  3. var request = require('request');
  4. const fs = require('fs')
  5. var clients = {};
  6. var ResponseInstance;
  7. const { parse } = require('querystring');
  8. const port = 2003
  9. const host = '95.211.146.78'
  10. const options = {
  11.   key: fs.readFileSync('/etc/apache2/ssl/instantbanking.maldopay.com.key'),
  12.   cert: fs.readFileSync('/etc/apache2/ssl/instantbanking.maldopay.com.crt')
  13. };
  14.  
  15. Array.prototype.in_array = function(p_val) {
  16.     for(var i = 0, l = this.length; i < l; i++)  {
  17.         if(this[i] == p_val) {
  18.             return true;
  19.         }
  20.     }
  21.     return false;
  22. }
  23.  
  24. var AvailableAmounts = {};
  25. // create server and start it
  26. const server = https.createServer(options).listen(2002);
  27. var loggedUser = {};
  28. var userIps = {};
  29. var userUseragents = {};
  30. async function makeApiCall(action, postData){
  31.     var url = 'https://api.maldopay.com/V2/ceppayment/?token=938F1DEED127B28DD39439CD6327C&action='+action;
  32.     //var url = 'http://94.156.232.18:11443/transaction/api/V2/ceppayment/?token=938F1DEED127B28DD39439CD6327C&action='+action;
  33.     if(typeof(postData['sessionid']) != 'undefined'){
  34.         postData['request_from_ip'] = userIps[postData['sessionid']];
  35.         postData['useragent'] = userUseragents[postData['sessionid']];
  36.     }
  37.     //console.log("postData:" + JSON.stringify(postData));
  38.     let promise = new Promise((resolve, reject) => {
  39.     request.post({url:url, formData: postData}, function(err, httpResponse, body) {
  40.             if (err) {
  41.                 return console.error('post failed:', err);
  42.             }
  43.             try {
  44.                 //console.log(body);
  45.                 body = JSON.parse(body);
  46.             } catch (e) {
  47.                 body = {"success":false, "messages":{"errors":"Error connection"}};
  48.             }
  49.             resolve(body);
  50.  
  51.         });
  52.     });
  53.     let result = await promise;
  54.     //console.log("RESULT:" + JSON.stringify(result));
  55.     var sessionid = '';
  56.     if(typeof(postData['sessionid']) != 'undefined'){
  57.         sessionid = postData['sessionid'];
  58.     }
  59.     handleResult[action](result, sessionid);
  60.     //return result;
  61. }
  62.  
  63. var handleResult = {
  64.     getUnfinishedTransactions : function(result, socket_id){
  65.         AvailableAmounts = result;
  66.         //console.log(AvailableAmounts);
  67.         emitTransactionListToAllUsers();
  68.     },
  69.     userLogin : function(result, socket_id){
  70.         //console.log(socket_id);
  71.         //console.log(result);
  72.         if(typeof(result.success) != 'undefined' && result.success){
  73.             loggedUser[socket_id] = result.data;
  74.         }
  75.         io.to(socket_id).emit("logined",result);
  76.     },
  77.     kickUserFromTransaction : function(result, socket_id){
  78.         io.to(socket_id).emit("kickedSuccessFromTransaction",result);
  79.         if(typeof(result.success) != 'undefined' && result.success){
  80.             io.to(result.data.kicked_user_session_id).emit("kickedFromTransaction",result);
  81.             AvailableAmounts.data[result.data.type][result.data.id]['ceppayment_agent'] = '';
  82.             emitTransactionListToAllUsers();
  83.         }
  84.     },
  85.     kickPoolFromTransaction : function(result, socket_id){
  86.         console.log('kickPoolFromTransaction');
  87.         io.to(socket_id).emit("kickedSuccessFromTransaction",result);
  88.         if(typeof(result.success) != 'undefined' && result.success){
  89.             AvailableAmounts.data[result.data.type][result.data.id]['ceppayment_agent'] = '';
  90.             emitTransactionListToAllUsers();
  91.         }
  92.     },
  93.     takeTransaction : function(result, socket_id){
  94.         io.to(socket_id).emit("takeTransaction",result);
  95.         if(typeof(result.success) != 'undefined' && result.success){
  96.             AvailableAmounts.data[result.data.type][result.data.id]['ceppayment_agent'] = loggedUser[socket_id].username;
  97.             emitTransactionListToAllUsers();
  98.         }
  99.     },
  100.     releaseTransaction : function(result, socket_id){
  101.         io.to(socket_id).emit("releaseTransaction",result);
  102.         if(typeof(result.success) != 'undefined' && result.success){
  103.             AvailableAmounts.data[result.data.type][result.data.id]['ceppayment_agent'] = '';
  104.             emitTransactionListToAllUsers();
  105.         }
  106.     },
  107.     confirmTransaction : function(result, socket_id){
  108.         io.to(socket_id).emit("confirmTransaction",result);
  109.         if(typeof(result.success) != 'undefined' && result.success){
  110.             delete AvailableAmounts.data[result.data.type][result.data.id];
  111.             emitTransactionListToAllUsers();
  112.         }
  113.     },
  114.     declineTransaction : function(result, socket_id){
  115.         io.to(socket_id).emit("declineTransaction",result);
  116.         if(typeof(result.success) != 'undefined' && result.success){
  117.             delete AvailableAmounts.data[result.data.type][result.data.id];
  118.             emitTransactionListToAllUsers();
  119.         }
  120.     },
  121.     getTransactionsForReport : function(result, socket_id){
  122.         //console.log('emit getTransactionsForReport');
  123.         io.to(socket_id).emit("getTransactionsForReport",result);
  124.     },
  125.     getReportByAgents : function(result, socket_id){
  126.         //console.log('emit getReportByAgents');
  127.         io.to(socket_id).emit("getReportByAgents",result);
  128.     },
  129.     getTransactionHistory : function(result, socket_id){
  130.         //console.log('emit getTransactionHistory');
  131.         io.to(socket_id).emit("getTransactionHistory",result);
  132.     },
  133.     sendManualTransaction : function(result, socket_id){
  134.         console.log('emit sendedManualTransaction');
  135.         io.to(socket_id).emit("sendedManualTransaction",result);
  136.     }
  137. }
  138.  
  139. const httpServer = http.createServer(function(request, response) {
  140.     var action = request.url.replace('/?','');
  141.     if (request.method == 'POST') {
  142.         var body = ''
  143.         request.on('data', function(data) {
  144.             body += data
  145.         })
  146.         request.on('end', function() {
  147.             var POST = parse(body);
  148.             //console.log(POST);
  149.             ResponseInstance = response;
  150.             //Response(POST);
  151.             if(typeof(actionsForPostRequest[action]) != 'undefined'){
  152.                 actionsForPostRequest[action](POST);
  153.             }
  154.         })
  155.     }
  156. })
  157.  
  158. function Response(Response){
  159.     ResponseInstance.writeHead(200, {'Content-Type': 'application/json'})
  160.     resp = {};
  161.     resp.response = Response;
  162.     res = JSON.stringify(resp);
  163.     ResponseInstance.end(res)
  164. }
  165. var actionsForPostRequest = {
  166.     responce : {
  167.         'success':false,
  168.         'messages':[]
  169.  
  170.     },
  171.     addTransaction : function(data){
  172.         //console.log(data);
  173.         this.responce.messages = [];
  174.         ResponseInstance.writeHead(200, {'Content-Type': 'application/json'});
  175.         if(typeof(data.type) == 'undefined' || typeof(data.transaction) == 'undefined'){
  176.             this.responce.messages.push('required data missing');
  177.             ResponseInstance.end(JSON.stringify(this.responce));
  178.             return false;
  179.         }
  180.         data.transaction = JSON.parse(data.transaction);
  181.         if(data.type == 'payins'){
  182.             if(typeof(AvailableAmounts.data.payins[data.transaction.id]) != 'undefined'){
  183.                 this.responce.messages.push('required transaction type');
  184.                 ResponseInstance.end(JSON.stringify(this.responce));
  185.                 return false;
  186.             }
  187.             this.responce.success = true;
  188.             AvailableAmounts.data.payins[data.transaction.id] = data.transaction;
  189.             emitTransactionListToAllUsers();
  190.         }
  191.         if(data.type == 'payouts'){
  192.             if(typeof(AvailableAmounts.data.payouts[data.transaction.id]) != 'undefined'){
  193.                 this.responce.messages.push('required transaction type');
  194.                 ResponseInstance.end(JSON.stringify(this.responce));
  195.                 return false;
  196.             }
  197.             this.responce.success = true;
  198.             AvailableAmounts.data.payouts[data.transaction.id] = data.transaction;
  199.             emitTransactionListToAllUsers();
  200.         }
  201.         ResponseInstance.end(JSON.stringify(this.responce));
  202.     },
  203.     updateTransaction : function(data){
  204.         this.responce.messages = [];
  205.         ResponseInstance.writeHead(200, {'Content-Type': 'application/json'});
  206.         if(typeof(data.type) == 'undefined' || typeof(data.transaction) == 'undefined'){
  207.             this.responce.messages.push('required data missing');
  208.             ResponseInstance.end(JSON.stringify(this.responce));
  209.             return false;
  210.         }
  211.         data.transaction = JSON.parse(data.transaction);
  212.         if(data.type == 'payins'){
  213.             if(typeof(AvailableAmounts.data.payins[data.transaction.id]) == 'undefined'){
  214.                 this.responce.messages.push('required transaction type');
  215.                 ResponseInstance.end(JSON.stringify(this.responce));
  216.                 return false;
  217.             }
  218.             this.responce.success = true;
  219.             AvailableAmounts.data.payins[data.transaction.id] = data.transaction;
  220.             emitTransactionListToAllUsers();
  221.         }
  222.         if(data.type == 'payouts'){
  223.             if(typeof(AvailableAmounts.data.payouts[data.transaction.id]) == 'undefined'){
  224.                 this.responce.messages.push('required transaction type');
  225.                 ResponseInstance.end(JSON.stringify(this.responce));
  226.                 return false;
  227.             }
  228.             this.responce.success = true;
  229.             AvailableAmounts.data.payouts[data.transaction.id] = data.transaction;
  230.             emitTransactionListToAllUsers();
  231.         }
  232.         ResponseInstance.end(JSON.stringify(this.responce));
  233.     },
  234.     removeTransaction : function(data){
  235.         this.responce.messages = [];
  236.         if(typeof(data.type) == 'undefined' || typeof(data.transaction_id) == 'undefined'){
  237.             this.responce.messages.push('required data missing');
  238.             ResponseInstance.end(JSON.stringify(this.responce));
  239.             return false;
  240.         }
  241.         if(data.type == 'payins'){
  242.             if(typeof(AvailableAmounts.data.payins[data.transaction_id]) != 'undefined'){
  243.                 delete AvailableAmounts.data.payins[data.transaction_id];
  244.                 emitTransactionListToAllUsers();
  245.             }
  246.             this.responce.success = true;
  247.         }
  248.         if(data.type == 'payouts'){
  249.             if(typeof(AvailableAmounts.data.payouts[data.transaction_id]) != 'undefined'){
  250.                 delete AvailableAmounts.data.payouts[data.transaction_id];
  251.                 emitTransactionListToAllUsers();
  252.             }
  253.             this.responce.success = true;
  254.         }
  255.         ResponseInstance.end(JSON.stringify(this.responce));
  256.     },
  257.     reloadTransactionsFromServer : function(data){
  258.         this.responce.messages = [];
  259.         makeApiCall('getUnfinishedTransactions', {});
  260.         ResponseInstance.writeHead(200, {'Content-Type': 'application/json'});
  261.         ResponseInstance.end(JSON.stringify(this.responce));
  262.     }
  263. }
  264.  
  265. httpServer.listen(port, host)
  266. console.log(`Listening at http://${host}:${port}`)
  267.  
  268.  
  269.  
  270. setTimeout(function(){
  271.     //console.log("Requesting Amounts");
  272.     makeApiCall('getUnfinishedTransactions', {});
  273. }, 1000);
  274.  
  275. var io = require('socket.io')(server);
  276.  
  277. var clients = io.sockets.clients();
  278. io.on('connection', function (socket) {
  279.     //console.log(socket.handshake);
  280.     var address = socket.handshake.address;
  281.     userIps[socket.id] = address;
  282.     var useragent = socket.handshake.headers['user-agent'];
  283.     userUseragents[socket.id] = useragent;
  284.     //console.log("CONNECTED: " + socket.id);
  285.  
  286.     socket.on('message', function (msg) {
  287.         //console.log("MESSAGE: " + msg);
  288.     });
  289.  
  290.     socket.on('transactionId', function (msg) {
  291.         //console.log("Transaction ID IS: " + msg);
  292.     });
  293.  
  294.     socket.on('requestAmounts', function(){
  295.         var transactions = getUnfinishedTransactionsForUser(loggedUser[socket.id]);
  296.         io.to(socket.id).emit("updateTransactions", transactions);
  297.     });
  298.  
  299.     socket.on('disconnect', function (da) {
  300.         delete loggedUser[socket.id];
  301.         delete userIps[socket.id];
  302.         delete userUseragents[socket.id];
  303.         //console.log("DISCONNECTED: " + socket.id);
  304.     });
  305.  
  306.     socket.on('login', function (data) {
  307.         //console.log("login: " + socket.id);
  308.         //console.log("data!: " + JSON.stringify(data));
  309.         data['sessionid'] = socket.id;
  310.         makeApiCall('userLogin', data);
  311.     });
  312.     socket.on('kickUserFromTransaction', function (data) {
  313.         //console.log("kickUser from transaction: " + data.transaction_id);
  314.         makeApiCall('kickUserFromTransaction', {type:data.type, transaction_id:data.transaction_id, sessionid:socket.id});
  315.     });
  316.     socket.on('kickPoolFromTransaction', function (data) {
  317.         console.log("kickPool from transaction: " + data.transaction_id);
  318.         makeApiCall('kickPoolFromTransaction', {type:data.type, transaction_id:data.transaction_id, sessionid:socket.id});
  319.     });
  320.     socket.on('takeTransaction', function (data) {
  321.         //console.log("takeTransaction: " + data.transaction_id);
  322.         makeApiCall('takeTransaction', {type:data.type, transaction_id:data.transaction_id, sessionid:socket.id});
  323.     });
  324.     socket.on('releaseTransaction', function (data) {
  325.         //console.log("releaseTransaction: " + data.transaction_id);
  326.         makeApiCall('releaseTransaction', {type:data.type, transaction_id:data.transaction_id, sessionid:socket.id});
  327.     });
  328.     socket.on('confirmTransaction', function (data) {
  329.         //console.log("confirmTransaction");
  330.         data.sessionid = socket.id;
  331.         makeApiCall('confirmTransaction', data);
  332.     });
  333.     socket.on('declineTransaction', function (data) {
  334.         //console.log("declineTransaction");
  335.         data.sessionid = socket.id;
  336.         makeApiCall('declineTransaction', data);
  337.     });
  338.     socket.on('getTransactionsForReport', function (data) {
  339.         //console.log("getTransactionsForReport");
  340.         data.sessionid = socket.id;
  341.         makeApiCall('getTransactionsForReport', data);
  342.     });
  343.     socket.on('getReportByAgents', function (data) {
  344.         //console.log("getReportByAgents");
  345.         data.sessionid = socket.id;
  346.         makeApiCall('getReportByAgents', data);
  347.     });
  348.     socket.on('getTransactionHistory', function (data) {
  349.         //console.log("getTransactionHistory");
  350.         data.sessionid = socket.id;
  351.         makeApiCall('getTransactionHistory', data);
  352.     });
  353.     socket.on('sendManualTransaction', function (data) {
  354.         console.log("sendManualTransaction");
  355.         data.sessionid = socket.id;
  356.         makeApiCall('sendManualTransaction', data);
  357.     });
  358. });
  359.  
  360. var typesData = {
  361.     'payins':{
  362.         'agentUsernameField':'ceppayment_agent'
  363.     },
  364.     'qrs':{
  365.         'agentUsernameField':'agent'
  366.     },
  367.     'refs':{
  368.         'agentUsernameField':'agent'
  369.     },
  370.     'planetspayqrs':{
  371.         'agentUsernameField':'agent'
  372.     },
  373.     'payouts':{
  374.         'agentUsernameField':'ceppayment_agent'
  375.     }
  376. }
  377.  
  378. var getUnfinishedTransactionsForUser = function(user){
  379.     //console.log(user);
  380.     if(typeof(AvailableAmounts.data) != 'undefined' && AvailableAmounts.data){
  381.         var t = {};
  382.         for(var type in AvailableAmounts.data){
  383.             t[type] = {};
  384.             if((type == 'payins' && !user.allowed_payment_type.in_array('payins')) || (type == 'payouts' && !user.allowed_payment_type.in_array('payouts'))){
  385.                 t[type] = {};
  386.             }else{
  387.                 if(!user.tags.in_array('view_all_transactions')){
  388.                     //console.log(type);
  389.                     //console.log(t[type]);
  390.                     var newTransactions = {};
  391.                     for(var i in AvailableAmounts.data[type]){
  392.                         var transaction = AvailableAmounts.data[type][i];
  393.                         var ceppayment_agent = transaction.ceppayment_agent;
  394.  
  395.                         if((ceppayment_agent == '' || user.allowed_users.in_array(ceppayment_agent) || user.username == ceppayment_agent) && (user.allowed_brands.in_array(transaction.brandId))){
  396.                             if(type == 'payouts'){
  397.                                 if(!user.tags.in_array('show_100_1000_try_payouts') && transaction.amount < 1000){
  398.                                     continue;
  399.                                 }
  400.                             }
  401.                             newTransactions[transaction.id] = transaction;
  402.                         }
  403.                     }
  404.                     //console.log(newTransactions);
  405.                     t[type] = newTransactions;
  406.                 }else{
  407.                     t[type] = AvailableAmounts.data[type];
  408.                 }
  409.             }
  410.         }
  411.         var s = {};
  412.         if(user.tags.in_array('kick_agent_button')){
  413.             s.kick_agent_button = true;
  414.         }
  415.         if(user.tags.in_array('kick_pool_button')){
  416.             s.kick_pool_button = true;
  417.         }
  418.         s.data = t;
  419.         s.success = true;
  420.         return s;
  421.     }else{
  422.         return AvailableAmounts;
  423.     }
  424. }
  425.  
  426. var emitTransactionListToAllUsers = function(){
  427.     Object.keys(clients.sockets).forEach(function(client) {
  428.         if(typeof(loggedUser[client]) != 'undefined'){
  429.             //console.log(AvailableAmounts);
  430.             var transactions = getUnfinishedTransactionsForUser(loggedUser[client]);
  431.             //console.log(transactions);
  432.             //console.log(AvailableAmounts);
  433.             io.to(client).emit("updateTransactions",transactions);
  434.         }
  435.     });
  436. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement