require('dotenv').load(); var fs = require('fs') var app, express = require('express'); var http = require('http'); var https = require('https'); var bodyParser = require('body-parser') var cookieParser = require('cookie-parser') var csurf = require('csurf') var path = require('path') var multiparty = require('multiparty') var ejs = require('ejs') var passport = require('passport') var sessionstore = require('sessionstore') var session = require('express-session') var multer = require('multer') var db = require('./db') var auth = require('./auth') var middleware = require('./middleware') var fortune = require('./fortune') var bucky = require('./bucky') var app, server var mongodb = require('mongodb') var site = module.exports = {} site.init = function(){ app = express() app.set('port', 5000) app.set('view engine', 'ejs') app.set('views', path.join(__dirname, '../views')) app.use(express.static(path.join(__dirname, '../public'))) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) app.use( multer({ dest:'./uploads/' }).single("file") ) app.use(session({ key: 'bucky.sid', secret: 'argonauts', cookie: { domain: '.' + process.env.HOST_NAME, maxAge: 43200000000 }, store: sessionstore.createSessionStore({ type: 'mongodb', host: 'localhost', port: 27017, dbName: 'sessionDb', collectionName: 'sessions', timeout: 10000 }), resave: true, saveUninitialized: false, })) app.use(csurf({ cookie: false })) app.use(express.query()) app.use(passport.initialize()) app.use(passport.session()) app.all('*', middleware.ensureLocals) server = http.createServer(app).listen(5000, function () { console.log('Bucky listening at http://5.k:%s', server.address().port) }) site.route() } site.route = function(){ auth.init() app.get("/", middleware.ensureAuthenticated, function(req, res){ res.redirect('/index') }) app.get("/login", function(req, res){ res.render("pages/login", { title: "" }) }) app.get("/index", middleware.ensureAuthenticated, function(req, res){ res.render("pages/index", { title: fortune("titles") }) }) app.post("/api/login", auth.loggedInLocal) app.get("/api/index", bucky.ensureLatestThreads, bucky.ensureCommentCountsForThreads, bucky.ensureFileCountsForThreads, bucky.ensureFileSizeForThreads, bucky.ensureHootbox, function(req, res){ res.json({ threads: res.threads, hootbox: res.hootbox, }) } ) app.get("/api/thread/:id", function(req, res){ bucky.ensureThread, bucky.ensureKeywordForThread, bucky.ensureCommentsForThread, bucky.ensureFilesForThread, function(req, res){ res.json({ thread: res.thread, comments: res.comments, files: res.files, keyword: res.keyword, }) } }) app.post("/api/thread/:id", function(req, res){ }) }