Advertisement
Guest User

Untitled

a guest
Jan 27th, 2019
147
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_';
  20. const keySecret = 'sk_test_';
  21. const stripe = require("stripe")(keySecret);
  22. const bodyParser = require('body-parser');
  23.  
  24. const SQL_CONFIG = {
  25.   host: 'localhost',
  26.   user: 'root',
  27.   password: 'maybe_no',
  28.   database: 'tk',
  29. };
  30.  
  31. const APP_SESSION = {
  32.   key: 'ticketkingsisdabest',
  33.   secret: 'ticketkingsisdabest',
  34.   store: new MongoStore({ mongooseConnection: mongoose.connection })
  35. };
  36.  
  37. function onAuthorizeSuccess(data, accept){
  38.   console.log('successful connection to socket.io');
  39.   accept(null, true);
  40. }
  41. function onAuthorizeFail(data, message, error, accept){
  42.   if(error)
  43.     throw new Error(message);
  44.   console.log('failed connection to socket.io:', message);
  45.   accept(null, false);
  46. }
  47. const IO_CONFIG = {
  48.   key:          'ticketkingsisdabest',       // the name of the cookie where express/connect stores its session_id
  49.   secret:       'ticketkingsisdabest',    // the session_secret to parse the cookie
  50.   store:        new MongoStore({ mongooseConnection: mongoose.connection }),        // we NEED to use a sessionstore. no memorystore please
  51.   success:     onAuthorizeSuccess,  // *optional* callback on success - read more below
  52.   fail:        onAuthorizeFail,     // *optional* callback on fail/error - read more below
  53. }
  54.  
  55. var sql = mysql.createConnection(SQL_CONFIG);
  56.  
  57. sql.connect(err => {
  58.     if(err) console.log(err);
  59.     console.log('Connected to DB');
  60. });
  61.  
  62. // App setup
  63. var app = express();
  64. var server = app.listen(80, function(){
  65.     console.log('listening for requests on port 80');
  66. });
  67.  
  68. app.set('view engine', 'ejs');
  69. app.use(express.static(__dirname + '/views'));
  70. app.use(bodyParser.urlencoded({
  71.   extended: false
  72. }));
  73.  
  74. app.use(session(APP_SESSION));
  75.  
  76. // Socket setup & pass server
  77. var io = socket(server);
  78. io.use(passportSocketIo.authorize(IO_CONFIG));
  79.  
  80. // initialize passport
  81. app.use(passport.initialize());
  82. app.use(passport.session());
  83.  
  84.  
  85. // connect to mongodb
  86. mongoose.connect(keys.mongodb.dbURI, () => {
  87.     console.log('connected to mongodb');
  88. });
  89.  
  90. // set up routes
  91. app.use(authRoutes);
  92. app.use(profileRoutes);
  93.  
  94. const authCheckMain = (req, res, next) => {
  95.     if(!req.user) {
  96.         next();
  97.     } else {
  98.         res.redirect('/dashboard');
  99.     }
  100. };
  101.  
  102. app.get('/', authCheckMain, (req, res) => {
  103.   res.render('home', { user: req.user });
  104. });
  105.  
  106. app.post('/key/subscription/failed', (req, res) => {
  107.     const event = JSON.parse(req.body);
  108.     console.log(event.data.object.customer);
  109.     sql.query(`UPDATE users SET key_deactivated='true' WHERE user_stripe_id='${event.data.object.customer}';`, (error, result) => {
  110.       if(error) console.log(error);
  111.     });
  112.     res.sendStatus(200);
  113. });
  114.  
  115. app.post("/charge", (req, res) => {
  116.     const stripeToken = req.body.stripeToken;
  117.     const email = req.body.stripeEmail;
  118.   stripe.sources.create({
  119.     type: 'card',
  120.     token: stripeToken,
  121.     currency: 'usd'
  122.   }, function(err, source){
  123.     stripe.customers.create({
  124.         email: email,
  125.         source: source.id
  126.     }, function(error, customer) {
  127.         if(err) {
  128.             res.send('error in customer');
  129.         } else {
  130.             const {id} = customer;
  131.             stripe.subscriptions.create({
  132.                   customer: id,
  133.                   items: [
  134.                     {
  135.                       plan: "tk",
  136.                     },
  137.                   ],
  138.                 }, function(error, subscription) {
  139.                     if(error) res.send('error in subscription');
  140.                     else {
  141.                         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();
  142.                         let order = Math.random().toString(36).substr(2, 6).toUpperCase();
  143.                         var today = new Date();
  144.                           var oDate;
  145.                           var dd = today.getDate();
  146.                           var mm = today.getMonth() + 1;
  147.  
  148.                           var yyyy = today.getFullYear();
  149.                           if (dd < 10) {
  150.                             dd = '0' + dd;
  151.                           }
  152.                           if (mm < 10) {
  153.                             mm = '0' + mm;
  154.                           }
  155.                           var oDate = dd + '/' + mm + '/' + yyyy; //date of order
  156.                           var ots = today.getTime(); //timestamp of order
  157.                           var eDateToday = new Date();
  158.                           eDateToday.setMonth(eDateToday.getMonth() + 1);
  159.                           var eDate;
  160.                           var edd = eDateToday.getDate();
  161.                           var emm = eDateToday.getMonth() + 1;
  162.  
  163.                           var eyyyy = eDateToday.getFullYear();
  164.                           if (edd < 10) {
  165.                             edd = '0' + edd;
  166.                           }
  167.                           if (emm < 10) {
  168.                             emm = '0' + emm;
  169.                           }
  170.  
  171.                           var eDate = edd + '/' + emm + '/' + eyyyy; //date of expiry
  172.                           var ets = eDateToday.getTime(); //timestamp of expiry
  173.  
  174.                           var amount = subscription.plan.amount;
  175.  
  176.                           var afterAmount = amount.toString();
  177.                           afterAmount = afterAmount.slice(0, -2);
  178.                           afterAmount = parseInt(afterAmount);
  179.  
  180.                           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) => {
  181.                             if(errsql) console.log(errsql);
  182.  
  183.                           });
  184.                           res.render("charge.ejs", { key: r, ord: order, user: req.user });
  185.                     }                
  186.                 }
  187.                 );
  188.         }
  189.     })
  190.   })
  191. });
  192.  
  193. app.get('*', async (req, res) => {
  194.     res.render('404');
  195. });
  196.  
  197. io.on('connection', (socket) => {
  198.     console.log('made socket connection', socket.id);
  199.     console.log(socket.request.user);
  200. });
  201.  
  202. io.of('/activate').on('connection', (socket) => {
  203.   socket.on('activate', (data) => {
  204.     sql.query(`SELECT * FROM users WHERE user_key='${data.key}';`, function(err, res) {
  205.       if(err) console.log(err);
  206.       if(res.length < 1) {
  207.         io.sockets.emit('wrong', data);
  208.       } else {
  209.         sql.query(`UPDATE users SET key_activated='true' WHERE user_key='${data.key}';`, (error, result) => {
  210.           if(error) console.log(error);
  211.           io.sockets.emit('success', data);
  212.         });
  213.       }
  214.     })
  215.   });
  216. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement