socialfi/server/app.js

70 lines
2.1 KiB
JavaScript

const express = require('express'),
path = require('path'),
session = require('express-session'),
bodyParse = require('body-parser'),
passport = require('./auth/passport'),
mongoose = require('mongoose'),
middleware = require('connect-ensure-login'),
MongoStore = require('connect-mongo');
config = require('./config/default'),
flash = require('connect-flash'),
port = config.server.port,
app = express(),
node_media_server = require('./media_server'),
thumbnail_generator = require('./cron/thumbnails');
//mongoose.connect('mongodb://127.0.0.1/nodeStream' , { useNewUrlParser: true });
const utils = require('./utils');
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, './views'));
app.use(express.static('public'));
app.use('/thumbnails', express.static('server/thumbnails'));
app.use(flash());
app.use(require('cookie-parser')());
app.use(bodyParse.urlencoded({extended: true}));
app.use(bodyParse.json({extended: true}));
app.use(session({
store: MongoStore.create({
mongoUrl: 'mongodb://127.0.0.1/nodeStream',
ttl: 14 * 24 * 60 * 60 // = 14 days. Default
}),
secret: config.server.secret,
maxAge : Date().now + (60 * 1000 * 30),
resave : true,
saveUninitialized : false,
}));
app.use(passport.initialize());
app.use(passport.session());
// Register app routes
app.use('/login', require('./routes/login'));
app.use('/register', require('./routes/register'));
app.use('/settings', require('./routes/settings'));
app.use('/streams', require('./routes/streams'));
app.use('/user', require('./routes/user'));
app.get('/logout', (req, res) => {
req.logout();
return res.redirect('/login');
});
app.get('*', middleware.ensureLoggedIn(), (req, res) => {
res.render('index');
});
app.listen(port, () => console.log(`App listening on ${port}!`));
node_media_server.run();
// Start thumbnail cron after a short delay to ensure media server APIs are mounted
setTimeout(() => {
try {
thumbnail_generator.start();
} catch (e) {
console.log('Failed to start thumbnail generator:', e.message);
}
}, 1000);