lts-stats-api/index.js
2023-09-09 18:24:57 +02:00

91 lines
2.3 KiB
JavaScript

require('dotenv').config();
const sync = 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 acarsRoutes = require('./app/routes/acars');
sync.sync();
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 (origin === undefined || 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('/api/v1/acars', acarsRoutes);
// 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}.`);
});