Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var socket = require('socket.io');
  3. const cookieSession = require('cookie-session');
  4. const passport = require('passport');
  5. const authRoutes = require('./routes/auth-routes');
  6. const profileRoutes = require('./routes/profile-routes');
  7. const passportSetup = require('./config/passport-setup');
  8. const mongoose = require('mongoose');
  9. const keys = require('./config/keys');
  10. const mysql = require('mysql');
  11. const User = require('./models/user-model.js');
  12. var bundle = require('socket.io-bundle');
  13. var ioPassport = require('socket.io-passport');
  14. const session = require('express-session');
  15. const MongoStore = require('connect-mongo')(session);
  16. var passportSocketIo = require("passport.socketio");
  17. const Discord = require('discord.js');
  18. const client = new Discord.Client();
  19. const keyPublishable = 'pk_test_yntCy3sFi63sgvtAxK7344Il';
  20. const keySecret = 'sk_test_VUqFfoG7sKaGMuVPHQz88n1q';
  21. const stripe = require("stripe")(keySecret);
  22.  
  23. const SQL_CONFIG = {
  24.   host: 'localhost',
  25.   user: 'root',
  26.   password: '3pY%S9x%H)Db,HK',
  27.   database: 'tk',
  28. };
  29.  
  30. const APP_SESSION = {
  31.   key: 'ticketkingsisdabest',
  32.   secret: 'ticketkingsisdabest',
  33.   store: new MongoStore({ mongooseConnection: mongoose.connection })
  34. };
  35.  
  36. function onAuthorizeSuccess(data, accept){
  37.   console.log('successful connection to socket.io');
  38.   accept(null, true);
  39. }
  40. function onAuthorizeFail(data, message, error, accept){
  41.   if(error)
  42.     throw new Error(message);
  43.   console.log('failed connection to socket.io:', message);
  44.   accept(null, false);
  45. }
  46. const IO_CONFIG = {
  47.   key:          'ticketkingsisdabest',       // the name of the cookie where express/connect stores its session_id
  48.   secret:       'ticketkingsisdabest',    // the session_secret to parse the cookie
  49.   store:        new MongoStore({ mongooseConnection: mongoose.connection }),        // we NEED to use a sessionstore. no memorystore please
  50.   success:     onAuthorizeSuccess,  // *optional* callback on success - read more below
  51.   fail:        onAuthorizeFail,     // *optional* callback on fail/error - read more below
  52. }
  53.  
  54. var sql = mysql.createConnection(SQL_CONFIG);
  55.  
  56. sql.connect(err => {
  57.     if(err) console.log(err);
  58.     console.log('Connected to DB');
  59. });
  60.  
  61. // App setup
  62. var app = express();
  63. var server = app.listen(80, function(){
  64.     console.log('listening for requests on port 80');
  65. });
  66.  
  67. app.set('view engine', 'ejs');
  68. app.use(express.static(__dirname + '/views'));
  69. app.use(require('body-parser').raw({type: '*/*'}));
  70.  
  71. app.use(session(APP_SESSION));
  72.  
  73. // Socket setup & pass server
  74. var io = socket(server);
  75. io.use(passportSocketIo.authorize(IO_CONFIG));
  76.  
  77. // initialize passport
  78. app.use(passport.initialize());
  79. app.use(passport.session());
  80.  
  81.  
  82. // connect to mongodb
  83. mongoose.connect(keys.mongodb.dbURI, () => {
  84.     console.log('connected to mongodb');
  85. });
  86.  
  87. // set up routes
  88. app.use(authRoutes);
  89. app.use(profileRoutes);
  90.  
  91. const authCheckMain = (req, res, next) => {
  92.     if(!req.user) {
  93.         next();
  94.     } else {
  95.         res.redirect('/dashboard');
  96.     }
  97. };
  98.  
  99. app.get('/', authCheckMain, (req, res) => {
  100.   res.render('home', { user: req.user });
  101. });
  102.  
  103. app.post('/key/subscription/failed', (req, res) => {
  104.     const event = JSON.parse(req.body);
  105.     console.log(event.data.object.customer);
  106.     sql.query(`UPDATE users SET key_deactivated='true' WHERE user_stripe_id='${event.data.object.customer}';`, (error, result) => {
  107.       if(error) console.log(error);
  108.     });
  109.     res.sendStatus(200);
  110. });
  111.  
  112. app.post('/key/subscription/success', (req, res) => {
  113.     const event = JSON.parse(req.body);
  114.     var eDateToday = new Date();
  115.     eDateToday.setMonth(eDateToday.getMonth() + 1);
  116.     var eDate;
  117.     var edd = eDateToday.getDate();
  118.     var emm = eDateToday.getMonth() + 1;
  119.     var eyyyy = eDateToday.getFullYear();
  120.     if (edd < 10) {
  121.        edd = '0' + edd;
  122.     }
  123.     if (emm < 10) {
  124.       emm = '0' + emm;
  125.     }
  126.  
  127.     var eDate = edd + '/' + emm + '/' + eyyyy; //date of expiry
  128.     var ets = eDateToday.getTime(); //timestamp of expiry
  129.  
  130.     sql.query(`UPDATE users SET (user_key_expiry,user_key_expiry_timestamp) VALUES('${eDate}','${ets}') WHERE user_stripe_id='${event.data.object.customer}';`, (error, result) => {
  131.       if(error) console.log(error);
  132.     });
  133.  
  134.     res.sendStatus(200);
  135. });
  136.  
  137. app.post("/charge", (req, res) => {
  138.   stripe.sources.create({
  139.     type: 'card',
  140.     currency: 'usd',
  141.     owner: {
  142.         email: 'ramosterious@gmail.com',
  143.     },
  144.   }, function(err, source){
  145.     stripe.customers.create({
  146.         email: email,
  147.         source: source.id
  148.     }, function(error, customer) {
  149.         if(err) {
  150.             res.send('error in customer');
  151.         } else {
  152.             const {id} = customer;
  153.             stripe.subscriptions.create({
  154.                   customer: id,
  155.                   items: [
  156.                     {
  157.                       plan: "tk",
  158.                     },
  159.                   ],
  160.                 }, function(error, subscription) {
  161.                     if(error) res.send('error in subscription');
  162.                     else {
  163.                         let r = Math.random().toString(36).substr(2, 3).toUpperCase() + "-" + Math.random().toString(36).substr(2, 3).toUpperCase() + "-" + Math.random().toString(36).substr(2, 4).toUpperCase();
  164.                         let order = Math.random().toString(36).substr(2, 6).toUpperCase();
  165.                         var today = new Date();
  166.                           var oDate;
  167.                           var dd = today.getDate();
  168.                           var mm = today.getMonth() + 1;
  169.  
  170.                           var yyyy = today.getFullYear();
  171.                           if (dd < 10) {
  172.                             dd = '0' + dd;
  173.                           }
  174.                           if (mm < 10) {
  175.                             mm = '0' + mm;
  176.                           }
  177.                           var oDate = dd + '/' + mm + '/' + yyyy; //date of order
  178.                           var ots = today.getTime(); //timestamp of order
  179.                           var eDateToday = new Date();
  180.                           eDateToday.setMonth(eDateToday.getMonth() + 1);
  181.                           var eDate;
  182.                           var edd = eDateToday.getDate();
  183.                           var emm = eDateToday.getMonth() + 1;
  184.  
  185.                           var eyyyy = eDateToday.getFullYear();
  186.                           if (edd < 10) {
  187.                             edd = '0' + edd;
  188.                           }
  189.                           if (emm < 10) {
  190.                             emm = '0' + emm;
  191.                           }
  192.  
  193.                           var eDate = edd + '/' + emm + '/' + eyyyy; //date of expiry
  194.                           var ets = eDateToday.getTime(); //timestamp of expiry
  195.  
  196.                           var afterAmount = amount.toString();
  197.                           afterAmount = afterAmount.slice(0, -2);
  198.                           afterAmount = parseInt(afterAmount);
  199.  
  200.                           sql.query(`INSERT INTO users(user_id, user_username, user_email, user_key, user_key_expiry, user_stripe_id, user_stripe_sub_id, user_amount, user_order_id, user_order_date, user_key_expiry_timestamp) VALUES('${req.user.discordid}','${req.user.username}','${email}','${r}','${eDate}','${id}','${subscription.id}','${afterAmount}','${order}','${oDate}','${ets}');`, async (errsql, resultsql) => {
  201.                             if(errsql) console.log(errsql);
  202.  
  203.                           });
  204.                           res.render("charge.ejs", { key: r, ord: order, user: req.user });
  205.                     }                
  206.                 }
  207.                 );
  208.         }
  209.     })
  210.   })
  211.  
  212.   // stripe.customers.create({
  213.   //    email: email,
  214.   // }, function(err, customer) {
  215.   //    if(err) {
  216.   //        res.send('error');
  217.   //    } else {
  218.   //        const { id } = customer;
  219.   //        stripe.sources.create({
  220.         //   type: 'card',
  221.         //   currency: 'usd',
  222.         //   owner: {
  223.         //     email: email
  224.         //   }
  225.         // }, function(err1, source) {
  226.         //  console.log(source);
  227.         //  if(err1) console.log(err1);
  228.         //  stripe.customers.createSource(
  229.         //    id,
  230.         //    { source: source.id },
  231.         //    function(err2, card) {
  232.         //      if(err2) console.log(err2)
  233.         //    }
  234.         //  );
  235.              
  236.         // });
  237.   //    }
  238.   // })
  239.  
  240.  
  241.   //var amount = 5000;
  242.  
  243.  
  244.   // stripe.customers.create({
  245.   //    email: req.body.stripeEmail,
  246.   //   source: req.body.stripeToken
  247.   // })
  248.   // .then(customer =>
  249.   //   stripe.charges.create({
  250.   //     amount,
  251.   //     description: "Ticket Kings Membership Key",
  252.   //        currency: "usd",
  253.   //        customer: customer.id
  254.   //   }))
  255.   // .then((charge) => {
  256.   //     let r = Math.random().toString(36).substr(2, 3).toUpperCase() + "-" + Math.random().toString(36).substr(2, 3).toUpperCase() + "-" + Math.random().toString(36).substr(2, 4).toUpperCase();
  257.   //     let order = Math.random().toString(36).substr(2, 6).toUpperCase();
  258.   //     res.render("charge.ejs", { key: r, ord: order, user: req.user });
  259.   //     var today = new Date();
  260.   //     var oDate;
  261.   //     var dd = today.getDate();
  262.   //     var mm = today.getMonth() + 1;
  263.  
  264.   //     var yyyy = today.getFullYear();
  265.   //     if (dd < 10) {
  266.   //       dd = '0' + dd;
  267.   //     }
  268.   //     if (mm < 10) {
  269.   //       mm = '0' + mm;
  270.   //     }
  271.   //     var oDate = dd + '/' + mm + '/' + yyyy; //date of order
  272.   //     var ots = today.getTime(); //timestamp of order
  273.   //     var eDateToday = new Date();
  274.   //     eDateToday.setMonth(eDateToday.getMonth() + 1);
  275.   //     var eDate;
  276.   //     var edd = eDateToday.getDate();
  277.   //     var emm = eDateToday.getMonth() + 1;
  278.  
  279.   //     var eyyyy = eDateToday.getFullYear();
  280.   //     if (edd < 10) {
  281.   //       edd = '0' + edd;
  282.   //     }
  283.   //     if (emm < 10) {
  284.   //       emm = '0' + emm;
  285.   //     }
  286.  
  287.   //     var eDate = edd + '/' + emm + '/' + eyyyy; //date of expiry
  288.   //     var ets = eDateToday.getTime(); //timestamp of expiry
  289.  
  290.   //     var afterAmount = amount.toString();
  291.   //     afterAmount = afterAmount.slice(0, -2);
  292.   //     afterAmount = parseInt(afterAmount);
  293.  
  294.   //     sql.query(`INSERT INTO users(user_id, user_username, user_email, user_key, user_key_expiry, user_stripe_id, user_amount, user_order_id, user_order_date, user_key_expiry_timestamp) VALUES('${req.user.discordid}','${req.user.username}','${email}','${r}','${eDate}','${charge.customer}','${afterAmount}','${order}','${oDate}','${ets}');`, async (errsql, resultsql) => {
  295.   //       if(errsql) console.log(errsql);
  296.  
  297.   //     });
  298.    
  299.   // });
  300.  
  301. });
  302.  
  303. app.get('*', async (req, res) => {
  304.     res.render('404');
  305. });
  306.  
  307. io.on('connection', (socket) => {
  308.     console.log('made socket connection', socket.id);
  309.     console.log(socket.request.user);
  310. });
  311.  
  312. io.of('/activate').on('connection', (socket) => {
  313.   socket.on('activate', (data) => {
  314.     sql.query(`SELECT * FROM users WHERE user_key='${data.key}';`, function(err, res) {
  315.       if(err) console.log(err);
  316.       if(res.length < 1) {
  317.         io.sockets.emit('wrong', data);
  318.       } else {
  319.         sql.query(`UPDATE users SET key_activated='true' WHERE user_key='${data.key}';`, (error, result) => {
  320.           if(error) console.log(error);
  321.           io.sockets.emit('success', data);
  322.         });
  323.       }
  324.     })
  325.   });
  326. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement