Skip to content

Instantly share code, notes, and snippets.

@5nyper
Created October 31, 2016 22:22
Show Gist options
  • Save 5nyper/2c910bd627f40f639fcfa8dbf01e2535 to your computer and use it in GitHub Desktop.
Save 5nyper/2c910bd627f40f639fcfa8dbf01e2535 to your computer and use it in GitHub Desktop.
"use strict"
var twit = require("twit");
var Promise = require('bluebird')
var file = Promise.promisifyAll(require('fs-extra'));
var request = Promise.promisify(require('request'));
var bodyParser = require('body-parser');
var hour = (60 * 1000)
setInterval(checkTime, hour)
var T = new twit({
consumer_key: 'd3UyTxZ2yOKBFOcilHMXNPnpB',
consumer_secret: 'pz0njvwKmXkbCXxaJvAYYeI0OhcjzRDpzAMXoyCo2inqgLRWBD',
access_token: '498173926-DdwNYHLFSMoWQjoG5dp8FqAsD2GFmbDjesxHruyc',
access_token_secret: '4U9IvHzZH7j5de2sNCklyaWJDpizmyhxAIThYWHFOjspI',
timeout_ms: 60 * 1000,
});
module.exports = function(express, router, passport) {
router.use(express.static('views/new'));
// normal routes ===============================================================
// show the home page (will also have our login links)
router.get('/new', function(req, res) {
res.render('new/pages/index.ejs')
})
router.get('/', function(req, res) {
//res.render('index.ejs');
res.redirect('/login')
});
// show the login form
router.get('/login', function(req, res) {
// render the page and pass in any flash data if it exists
res.render('login.ejs', {
message: req.flash('loginMessage')
});
});
router.post('/login', passport.authenticate('local-login', {
successRedirect: '/profile', // redirect to the secure profile section
failureRedirect: '/login', // redirect back to the signup page if there is an error
failureFlash: true // allow flash messages
}));
// process the login form
// router.post('/login', do all our passport stuff here);
// =====================================
// SIGNUP ==============================
// =====================================
// show the signup form
router.get('/signup', function(req, res) {
// render the page and pass in any flash data if it existscd icomeup
res.render('signup.ejs', {
message: req.flash('signupMessage')
});
});
router.post('/signup', passport.authenticate('local-signup', {
successRedirect: '/profile', // redirect to the secure profile section
failureRedirect: '/signup', // redirect back to the signup page if there is an error
failureFlash: true // allow flash messages
}));
// PROFILE SECTION =========================
router.get('/profile', isLoggedIn, function(req, res) {
res.render('profile.ejs', {
user: req.user
});
});
// LOGOUT ==============================
router.get('/logout', function(req, res) {
req.logout();
res.redirect('/');
});
// =============================================================================
// AUTHENTICATE (FIRST LOGIN) ==================================================
// =============================================================================
// twitter --------------------------------
// send to twitter to do the authentication
router.get('/auth/twitter', passport.authenticate('twitter', {
scope: 'email'
}));
// handle the callback after twitter has authenticated the user
router.get('/auth/twitter/callback',
passport.authenticate('twitter', {
successRedirect: '/profile',
failureRedirect: '/'
}));
// instagram ---------------------------------
router.get('/auth/instagram', passport.authenticate('instagram'));
router.get('/auth/instagram/callback',
passport.authenticate('instagram', {
successRedirect: '/profile',
failureRedirect: '/'
}));
// twitter --------------------------------
// send to twitter to do the authentication
router.get('/connect/twitter', passport.authorize('twitter', {
scope: 'email'
}));
// handle the callback after twitter has authorized the user
router.get('/connect/twitter/callback',
passport.authorize('twitter', {
successRedirect: '/profile',
failureRedirect: '/'
}));
// INSTAGRAM ---------------------------------
router.get('/connect/instagram', passport.authorize('instagram'));
router.get('/connect/instagram/callback',
passport.authorize('instagram', {
successRedirect: '/profile',
failureRedirect: '/'
}));
// =============================================================================
// UNLINK ACCOUNTS =============================================================
// =============================================================================
// used to unlink accounts. for social accounts, just remove the token
// for local account, remove email and password
// user account will stay active in case they want to reconnect in the future
// twitter --------------------------------
router.get('/unlink/twitter', isLoggedIn, function(req, res) {
var user = req.user;
user.twitter.token = undefined;
user.save(function(err) {
res.redirect('/profile');
});
});
// instagram ---------------------------------
router.get('/unlink/instagram', isLoggedIn, function(req, res) {
var user = req.user;
user.instagram.token = undefined;
file.removeSync('users/' + req.user.local.email + '/' + req.user.instagram.username)
user.save(function(err) {
res.redirect('/profile');
});
});
router.get('/analytics', isLoggedIn, function(req, res) {
var view = req.query.view
if (req.query.social == 'instagram') {
if (view == "week") {
Promise.all([
getInstaPics(req.user.instagram.username, 0),
getInstaPics(req.user.instagram.username, 1),
getInstaPics(req.user.instagram.username, 2),
getInstaPics(req.user.instagram.username, 3)
]).then((obj) => {
var data = file.readFileSync('users/' + req.user.local.email + '/' + req.user.instagram.username + '/instagram.json', "utf-8")
data = JSON.parse(data);
res.render('new/pages/index.ejs', {
day1: data.WEEKLY_FOLLOWERS[0].DAYS[0],
day2: data.WEEKLY_FOLLOWERS[0].DAYS[1],
day3: data.WEEKLY_FOLLOWERS[0].DAYS[2],
day4: data.WEEKLY_FOLLOWERS[0].DAYS[3],
day5: data.WEEKLY_FOLLOWERS[0].DAYS[4],
day6: data.WEEKLY_FOLLOWERS[0].DAYS[5],
day7: data.WEEKLY_FOLLOWERS[0].DAYS[6],
avg1: data.WEEKLY_LIKES[0].DAYS[0],
avg2: data.WEEKLY_LIKES[0].DAYS[1],
avg3: data.WEEKLY_LIKES[0].DAYS[2],
avg4: data.WEEKLY_LIKES[0].DAYS[3],
avg5: data.WEEKLY_LIKES[0].DAYS[4],
avg6: data.WEEKLY_LIKES[0].DAYS[5],
avg7: data.WEEKLY_LIKES[0].DAYS[6],
hour1: data.DAILY_FOLLOWERS[0].HOURS[0],
hour2: data.DAILY_FOLLOWERS[0].HOURS[1],
hour3: data.DAILY_FOLLOWERS[0].HOURS[2],
hour4: data.DAILY_FOLLOWERS[0].HOURS[3],
hour5: data.DAILY_FOLLOWERS[0].HOURS[4],
hour6: data.DAILY_FOLLOWERS[0].HOURS[5],
hour7: data.DAILY_FOLLOWERS[0].HOURS[6],
hour8: data.DAILY_FOLLOWERS[0].HOURS[7],
hour9: data.DAILY_FOLLOWERS[0].HOURS[8],
hour10: data.DAILY_FOLLOWERS[0].HOURS[9],
hour11: data.DAILY_FOLLOWERS[0].HOURS[10],
hour12: data.DAILY_FOLLOWERS[0].HOURS[11],
hour13: data.DAILY_FOLLOWERS[0].HOURS[12],
user: req.user.instagram.username,
weekly_min_followers: (data.WEEKLY_LIKES[0].DAYS[0] - 50),
weekly_max_followers: (data.STARTING_COUNTS[0].DAY + 100),
daily_min_followers: (data.STARTING_COUNTS[0].DAY - 10),
daily_max_followers: (data.STARTING_COUNTS[0].DAY + 50),
url0: obj[0].url,
url1: obj[1].url,
url2: obj[2].url,
url3: obj[3].url,
photo_likes0: obj[0].likes,
photo_likes1: obj[1].likes,
photo_likes2: obj[2].likes,
photo_likes3: obj[3].likes,
comment_count0: obj[0].comment_count,
comment_count1: obj[1].comment_count,
comment_count2: obj[2].comment_count,
comment_count3: obj[3].comment_count,
date: data.STARTING_COUNTS[2].DATE,
starting_followers: data.STARTING_COUNTS[2].MONTH,
starting_follows: data.STARTING_COUNTS[2].FOLLOWS,
email: req.user.local.email
});
})
}
else if (view == "day") {
Promise.all([
getInstaPics(req.user.instagram.username, 0),
getInstaPics(req.user.instagram.username, 1),
getInstaPics(req.user.instagram.username, 2),
getInstaPics(req.user.instagram.username, 3)
]).then((obj) => {
var data = file.readFileSync('users/' + req.user.local.email + '/' + req.user.instagram.username + '/instagram.json', "utf-8")
data = JSON.parse(data);
res.render('new/pages/index.ejs', {
day1: data.WEEKLY_FOLLOWERS[0].DAYS[0],
day2: data.WEEKLY_FOLLOWERS[0].DAYS[1],
day3: data.WEEKLY_FOLLOWERS[0].DAYS[2],
day4: data.WEEKLY_FOLLOWERS[0].DAYS[3],
day5: data.WEEKLY_FOLLOWERS[0].DAYS[4],
day6: data.WEEKLY_FOLLOWERS[0].DAYS[5],
day7: data.WEEKLY_FOLLOWERS[0].DAYS[6],
avg1: data.WEEKLY_LIKES[0].DAYS[0],
avg2: data.WEEKLY_LIKES[0].DAYS[1],
avg3: data.WEEKLY_LIKES[0].DAYS[2],
avg4: data.WEEKLY_LIKES[0].DAYS[3],
avg5: data.WEEKLY_LIKES[0].DAYS[4],
avg6: data.WEEKLY_LIKES[0].DAYS[5],
avg7: data.WEEKLY_LIKES[0].DAYS[6],
hour1: data.DAILY_FOLLOWERS[0].HOURS[0],
hour2: data.DAILY_FOLLOWERS[0].HOURS[1],
hour3: data.DAILY_FOLLOWERS[0].HOURS[2],
hour4: data.DAILY_FOLLOWERS[0].HOURS[3],
hour5: data.DAILY_FOLLOWERS[0].HOURS[4],
hour6: data.DAILY_FOLLOWERS[0].HOURS[5],
hour7: data.DAILY_FOLLOWERS[0].HOURS[6],
hour8: data.DAILY_FOLLOWERS[0].HOURS[7],
hour9: data.DAILY_FOLLOWERS[0].HOURS[8],
hour10: data.DAILY_FOLLOWERS[0].HOURS[9],
hour11: data.DAILY_FOLLOWERS[0].HOURS[10],
hour12: data.DAILY_FOLLOWERS[0].HOURS[11],
hour13: data.DAILY_FOLLOWERS[0].HOURS[12],
user: req.user.instagram.username,
weekly_min_followers: (data.WEEKLY_LIKES[0].DAYS[0] - 50),
weekly_max_followers: (data.STARTING_COUNTS[0].DAY + 100),
daily_min_followers: (data.STARTING_COUNTS[0].DAY - 10),
daily_max_followers: (data.STARTING_COUNTS[0].DAY + 50),
url0: obj[0].url,
url1: obj[1].url,
url2: obj[2].url,
url3: obj[3].url,
photo_likes0: obj[0].likes,
photo_likes1: obj[1].likes,
photo_likes2: obj[2].likes,
photo_likes3: obj[3].likes,
comment_count0: obj[0].comment_count,
comment_count1: obj[1].comment_count,
comment_count2: obj[2].comment_count,
comment_count3: obj[3].comment_count,
date: data.STARTING_COUNTS[2].DATE,
starting_followers: data.STARTING_COUNTS[2].MONTH,
starting_follows: data.STARTING_COUNTS[2].FOLLOWS,
email: req.user.local.email
});
})
}
} else if (req.query.social == 'twitter') {
//var data = file.readFileSync('users/' + req.user.local.email + '/' + req.user.twitter.username + '/twitter.json', "utf-8")
res.send('twitter coming soon')
} else {
res.send('please specify the social')
}
});
};
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/');
}
function getHour() {
var date = new Date();
return (date.getHours() + 24) % 12 || 12;
}
function getInstaPics(userid, index) {
return new Promise((resolve, reject) => {
var obj = {};
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) {
var res = JSON.parse(response.body);
obj.comment_count = res.user.media.nodes[index].comments.count;
obj.likes = res.user.media.nodes[index].likes.count;
obj.url = res.user.media.nodes[index].display_src;
resolve(obj);
}).catch((error) => {
reject(error)
})
})
}
function updateUsers() {
console.log("Updating User Data Across Server!")
let date = new Date();
let users = file.readdirSync('users/')
for (let i = 0; i<users.length; i++) {
let links = file.readdirSync('users/' + users[i])
for (let k = 0; k<links.length; k++) {
let files = file.readdirSync('users/' + users[i] + '/' + links[k])
if (files == "instagram.json") {
let data = file.readFileSync('users/' + users[i] + '/' + links[k] + '/instagram.json', "utf-8")
data = JSON.parse(data)
if (date.getDay() != data.WEEKLY_FOLLOWERS[0].DATE) {
getWeeklyInstaLikes(users[i], links[k]).then(() => {
console.log("For Followers function: " +users[i] + " " + links[k])
getWeeklyInstaFollowers(users[i], links[k], date.getDay())
});
}
if (data.DAILY_FOLLOWERS[0].HOUR != getHour()) {
data.DAILY_FOLLOWERS[0].HOUR = getHour();
getDailyFollowers(users[i], links[k])
file.writeFileSync('users/' + users[i] + '/' + links[k] + '/instagram.json', JSON.stringify(data))
}
}
else {
;
}
}
}
}
function checkTime() {
updateUsers()
}
function getWeeklyInstaFollowers(email, userid, date) {
file.readFileAsync('users/' + email + '/' + userid + '/instagram.json', "utf-8").then((data) => {
data = JSON.parse(data);
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) {
var res = JSON.parse(response.body);
//var media = res.user.media
var result = res.user.followed_by.count
console.log("Got instas")
for (var i = 0; i < data.WEEKLY_FOLLOWERS[0].DAYS.length; i++) {
if (data.WEEKLY_FOLLOWERS[0].DAYS[i] == null) {
data.WEEKLY_FOLLOWERS[0].DATE = date;
data.WEEKLY_FOLLOWERS[0].DAYS[i] = result;
break;
} else {
continue;
}
}
file.writeFileAsync('users/' + email + '/' + userid + '/instagram.json', JSON.stringify(data)).catch((error) => {
console.log(error);
})
}).catch((error) => {
console.log(error)
})
}).catch((error) => {
console.log(error)
})
}
function getWeeklyInstaLikes(email, userid) {
console.log("For likes function: " + email + " " + userid)
return new Promise((resolve, reject) => {
file.readFileAsync('users/' + email + '/' + userid + '/instagram.json', "utf-8").then((data) => {
data = JSON.parse(data);
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) {
var results = [];
var res = JSON.parse(response.body);
var media = res.user.media
for (var i = 0; i < media.nodes.length; i++) {
results[i] = media.nodes[i].likes.count
}
var total = results.reduce(function(a, b) {
return a + b
});
var avg = total / results.length
for (var i = 0; i < data.WEEKLY_LIKES[0].DAYS.length; i++) {
if (data.WEEKLY_LIKES[0].DAYS[i] == null) {
data.WEEKLY_LIKES[0].DAYS[i] = Math.ceil(avg);
break;
} else {
continue;
}
}
console.log("got avg likes")
file.writeFileAsync('users/' + email + '/' + userid + '/instagram.json', JSON.stringify(data)).then(() => {
resolve(null);
}).catch((error) => {
reject(error);
})
}).catch((error) => {
reject(error)
})
}).catch((error) =>{
console.log("or here?")
reject(error)
})
})
}
function getDailyFollowers(email, userid) {
file.readFileAsync('users/' + email + '/' + userid + '/instagram.json', "utf-8").then((data) => {
data = JSON.parse(data);
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) {
var res = JSON.parse(response.body);
//var media = res.user.media
var result = res.user.followed_by.count
console.log("Got instas")
for (var i = 0; i < data.DAILY_FOLLOWERS[0].HOURS.length; i++) {
if (data.DAILY_FOLLOWERS[0].HOURS[i] == null) {
data.DAILY_FOLLOWERS[0].HOURS[i] = result;
break;
} else {
continue;
}
}
file.writeFileAsync('users/' + email + '/' + userid + '/instagram.json', JSON.stringify(data)).catch((error) => {
console.log(error);
})
}).catch((error) => {
console.log(error)
})
})
}
var nodemailer = require('nodemailer');
var file = require('fs');
module.exports = function(express, app, io) {
app.use(express.static('views/html/public'));
var auth = false;
var trialcounter = 803;
app.get('/', function(req, res) {
res.render("html/public/index.ejs", {
counter: trialcounter
})
})
io.on('connection', function(socket) {
console.log("User connected");
socket.on('load', function() {
socket.emit('loading');
console.log("loading");
})
socket.on('load1', function() {
socket.emit('loading1');
console.log("loading");
})
socket.on('disconnect', function() {
console.log("User disconnected");
});
});
io.of('/mbs').on('connection', function(socket) {
console.log("User connected");
socket.on('load', function() {
socket.emit('loading');
console.log("loading");
})
socket.on('load1', function() {
socket.emit('loading1');
console.log("loading");
})
socket.on('disconnect', function() {
console.log("User disconnected");
});
});
app.get('/mindbootyspirit', function(req, res) {
res.render('mbs.ejs', {
message: ''
})
})
app.get('/mbs', function(req, res) {
if (auth === false) {
res.redirect('/mindbootyspirit')
}
res.render('mind.ejs')
auth = false;
})
app.post('/mindbootyspirit', function(req, res) {
var data = req.body;
if (data.password !== "MBS30".toLowerCase() && data.password !== "MBS30") {
req.flash('error', 'Wrong Access Code!')
res.render('mbs.ejs', {
message: req.flash('error')
});
} else {
auth = true;
res.redirect('/mbs')
}
})
app.post('/subscribe', function(req, res, next) {
req.io = io
next()
var data = JSON.parse(file.readFileSync("emails.json", "utf-8"))
var dat = req.body;
console.log(data.emails)
if (data.emails.length > 0) {
var body = "";
var transporter = nodemailer.createTransport('smtps://icomeupwp%40gmail.com:success1234$@smtp.gmail.com');
for (var i = 0; i < 5; i++) {
body += data.emails[i] + "<br>"
}
var mailOptions = {
from: '"iComeUp" <icomeupwp@gmail.com>',
to: 'codydavidkerns@gmail.com, cody@icomeupmarketing.com, kyle@icomeupmarketing.com, j.robertsonpoi@gmail.com, river@icomeupmarketing.com', // list of receivers
subject: 'Email Lists',
html: body
};
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
data.emails = [];
file.writeFileSync("emails.json", JSON.stringify(data));
} else {
data.emails.push(dat.email);
file.writeFileSync("emails.json", JSON.stringify(data));
req.io.sockets.emit('success')
console.log("LOGGED")
}
})
app.post('/freetrial', function(req, res, next) {
trialcounter += 1;
req.io = io
next();
console.log(req.body)
var dat = req.body;
var transporter = nodemailer.createTransport('smtps://icomeupwp%40gmail.com:success1234$@smtp.gmail.com');
var mailOptions = {
from: '"iComeUp" <icomeupwp@gmail.com>',
to: 'codydavidkerns@gmail.com, cody@icomeupmarketing.com, kyle@icomeupmarketing.com, j.robertsonpoi@gmail.com, river@icomeupmarketing.com', // list of receivers
subject: 'Free Trial Notification!',
html: 'Representative\'s Name: ' + dat.Rep_Name + '<br>Username: ' + dat.Username + '<br>Password: ' + dat.Password + '<br>Social: ' + dat.Social + '<br>Phone Number: ' + dat.phone + '<br>Niche: ' + dat.niche +
'<br>Age group: ' + dat.Age + '<br>Interests: ' + dat.interests
};
req.io.sockets.emit('success1')
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: ' + info.response);
req.io.sockets.emit('success1')
});
})
app.post('/mindbootyspirit/freetrial', function(req, res) {
console.log(req.body)
var dat = req.body;
var transporter = nodemailer.createTransport('smtps://icomeupwp%40gmail.com:success1234$@smtp.gmail.com');
var mailOptions = {
from: '"iComeUp" <icomeupwp@gmail.com>',
to: 'codydavidkerns@gmail.com, cody@icomeupmarketing.com, kyle@icomeupmarketing.com, j.robertsonpoi@gmail.com, river@icomeupmarketing.com', // list of receivers
subject: 'MindBootySpirit Trial Notification!',
html: 'Representative\'s Name: ' + dat.Rep_Name + '<br>Username: ' + dat.Username + '<br>Password: ' + dat.Password + '<br>Social: ' + dat.Social + '<br>Phone Number: ' + dat.phone + '<br>Niche: ' + dat.niche +
'<br>Age group: ' + dat.Age + '<br>Interests: ' + dat.interests
};
// req.io.sockets.emit('success1')
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: ' + info.response);
//req.io.sockets.emit('success1')
});
})
app.get('/db', function(req, res) {
res.render('db.ejs', {message: '', total: getTotal()})
})
app.post('/add', function(req, res) {
var current;
var flag = false;
var user = req.body.username.toLowerCase();
var aff = req.body.affiliate.toLowerCase();
var data = JSON.parse(file.readFileSync("clients.json", "utf-8"))
var affs = Object.keys(data.clients[0])
affs.forEach(function (owner) {
data.clients[0][owner].forEach(function (client) {
if (client == user) {
flag = true
current = owner
}
})
})
if (!flag) {
if (affs.includes(aff) == false)
data.clients[0][aff] = []
data.clients[0][aff].push(user)
file.writeFileSync("clients.json", JSON.stringify(data));
res.render('db.ejs', { message: "Success", reason: '', total: getTotal()})
}
else {
res.render('db.ejs', { message: "Unavailable", reason: (user + " Is used by " + current), total: getTotal()})
}
})
app.post('/delete', function(req, res) {
var flag = false;
var user = req.body.username.toLowerCase();
var aff = req.body.affiliate.toLowerCase();
var data = JSON.parse(file.readFileSync("clients.json", "utf-8"))
var affs = Object.keys(data.clients[0])
affs.forEach(function (owner) {
data.clients[0][owner].forEach(function (client, index) {
if (client == user) {
flag = true
data.clients[0][owner].splice(index, index)
file.writeFileSync("clients.json", JSON.stringify(data));
}
})
})
if (!flag) {
res.render('db.ejs', { message: "Can't Delete", reason: '', total: getTotal()})
}
else {
res.render('db.ejs', { message: "Deleted", reason: '', total: getTotal()})
}
})
app.post('/check', function(req, res) {
var current;
var flag = false;
var user = req.body.username.toLowerCase();
var aff = req.body.affiliate.toLowerCase();
var data = JSON.parse(file.readFileSync("clients.json", "utf-8"))
var affs = Object.keys(data.clients[0])
affs.forEach(function (owner) {
console.log(owner)
data.clients[0][owner].forEach(function (client) {
if (client == user) {
flag = true
current = owner
}
})
})
if (!flag) {
res.render('db.ejs', { message: "Available", reason: '', total: getTotal()})
}
else {
res.render('db.ejs', { message: "Unavailable", reason: (user + " Is used by " + current), total: getTotal()})
}
})
console.log("Listening")
function getTotal() {
var total = 0;
var data = JSON.parse(file.readFileSync("clients.json", "utf-8"))
var affs = Object.keys(data.clients[0])
affs.forEach(function (owner) {
total += data.clients[0][owner].length;
})
return total;
}
}
// server.js
// set up ======================================================================
// get all the tools we need
let express = require('express');
let app = express();
let server = app.listen(8080)
let io = require('socket.io')(server);
let mongoose = require('mongoose');
let passport = require('passport');
let flash = require('connect-flash');
let nodemailer = require('nodemailer');
let subdomain = require('express-subdomain')
let file = require('fs');
let router = express.Router();
let morgan = require('morgan');
let cookieParser = require('cookie-parser');
let bodyParser = require('body-parser');
let session = require('express-session');
let configDB = require('./config/database.js');
// configuration ===============================================================
mongoose.connect(configDB.url); // connect to our database
require('./config/passport')(passport); // pass passport for configuration
// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');// set up ejs for templating
// required for passport
app.use(session({
secret: 'icomeupmarketing', // session secret
resave: false,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session
// routes ======================================================================
require('./app/routes_analytics.js')(express, router, passport); // load our routes and pass in our app and fully configured passport
require('./app/routes_root.js')(express, app, io);
app.use(subdomain('analytics', router));
// launch ======================================================================
console.log('The magic happens on port 8080');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment