89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
require('dotenv').config();
|
|
|
|
require('./app/tasks/sync')();
|
|
|
|
const express = require("express");
|
|
const bodyParser = require("body-parser");
|
|
const cookieParser = require('cookie-parser');
|
|
const cors = require("cors");
|
|
const helmet = require("helmet");
|
|
const session = require('express-session');
|
|
const passport = require('passport');
|
|
|
|
const RedisStore = require("connect-redis")(session);
|
|
|
|
const ivaoRoutes = require('./app/routes/ivao');
|
|
const ltsRoutes = require('./app/routes/lts');
|
|
const adminRoutes = require('./app/routes/admin');
|
|
|
|
|
|
const app = express();
|
|
|
|
const whitelist = process.env.HOSTS_WHITELIST ? process.env.HOSTS_WHITELIST.split(',') : [];
|
|
|
|
// parse application/json
|
|
app.use(bodyParser.json());
|
|
app.use(cookieParser());
|
|
// parse application/x-www-form-urlencoded
|
|
app.use(bodyParser.urlencoded({ extended: true }));
|
|
var corsOptions = {
|
|
origin: function(origin, callback) {
|
|
if (whitelist.indexOf(origin) !== -1) {
|
|
callback(null, true)
|
|
} else {
|
|
callback(new Error('Not allowed by CORS'))
|
|
}
|
|
},
|
|
credentials: true
|
|
};
|
|
// use cors options
|
|
app.use(cors(corsOptions));
|
|
app.use(helmet.referrerPolicy({
|
|
policy: ["origin", "unsafe-url"],
|
|
}));
|
|
app.use(express.static('assets'));
|
|
|
|
const { createClient } = require("redis");
|
|
const redisClient = createClient({
|
|
socket: {
|
|
host: process.env.REDIS_HOST,
|
|
},
|
|
legacyMode: true
|
|
});
|
|
redisClient.connect().catch(console.error);
|
|
|
|
app.use(session({
|
|
secret: '94e353a57052a1bc1808a2010d74f8a5',
|
|
resave: false,
|
|
saveUninitialized: false,
|
|
store: new RedisStore({ client: redisClient }),
|
|
cookie: {
|
|
secure: false,
|
|
maxAge: 1000 * 60 * 60 * 24
|
|
}
|
|
}));
|
|
app.use(passport.authenticate('session'));
|
|
|
|
// routes
|
|
app.use('/api/v1/ivao', ivaoRoutes);
|
|
app.use('/api/v1', ltsRoutes);
|
|
app.use('/api/v1/admin', adminRoutes);
|
|
|
|
// app.use(function(req, res, next) {
|
|
// var msgs = req.session.messages || [];
|
|
// res.locals.messages = msgs;
|
|
// res.locals.hasMessages = !!msgs.length;
|
|
// req.session.messages = [];
|
|
// next();
|
|
// });
|
|
|
|
// app.use(passport.initialize());
|
|
// app.use(passport.session());
|
|
|
|
|
|
|
|
// listening port
|
|
const PORT = process.env.PORT || 3000;
|
|
app.listen(PORT, () => {
|
|
console.log(`Server is running on port ${PORT}.`);
|
|
}); |