lts-stats-api/index.js

91 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

2023-01-06 00:58:55 +01:00
require('dotenv').config();
2023-09-09 18:24:57 +02:00
const sync = require('./app/tasks/sync');
2023-01-06 00:58:55 +01:00
const express = require("express");
const bodyParser = require("body-parser");
2023-01-22 00:02:30 +01:00
const cookieParser = require('cookie-parser');
2023-01-06 00:58:55 +01:00
const cors = require("cors");
2023-01-15 18:42:26 +01:00
const helmet = require("helmet");
2023-01-22 00:02:30 +01:00
const session = require('express-session');
const passport = require('passport');
const RedisStore = require("connect-redis")(session);
2023-01-06 00:58:55 +01:00
const ivaoRoutes = require('./app/routes/ivao');
2023-01-15 18:42:26 +01:00
const ltsRoutes = require('./app/routes/lts');
const adminRoutes = require('./app/routes/admin');
2023-09-09 18:24:57 +02:00
const acarsRoutes = require('./app/routes/acars');
2023-01-06 00:58:55 +01:00
2023-09-09 18:24:57 +02:00
sync.sync();
2023-01-22 00:02:30 +01:00
2023-01-06 00:58:55 +01:00
const app = express();
2023-01-22 00:02:30 +01:00
const whitelist = process.env.HOSTS_WHITELIST ? process.env.HOSTS_WHITELIST.split(',') : [];
2023-01-06 19:12:43 +01:00
2023-01-06 00:58:55 +01:00
// parse application/json
app.use(bodyParser.json());
2023-01-22 00:02:30 +01:00
app.use(cookieParser());
2023-01-06 00:58:55 +01:00
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
2023-01-22 00:02:30 +01:00
var corsOptions = {
origin: function(origin, callback) {
2023-09-09 18:24:57 +02:00
if (origin === undefined || whitelist.indexOf(origin) !== -1) {
2023-01-22 00:02:30 +01:00
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
},
credentials: true
};
2023-01-06 00:58:55 +01:00
// use cors options
2023-01-22 00:02:30 +01:00
app.use(cors(corsOptions));
2023-01-15 18:42:26 +01:00
app.use(helmet.referrerPolicy({
policy: ["origin", "unsafe-url"],
}));
2023-01-06 00:58:55 +01:00
app.use(express.static('assets'));
2023-01-22 00:02:30 +01:00
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'));
2023-01-06 00:58:55 +01:00
// routes
app.use('/api/v1/ivao', ivaoRoutes);
2023-01-15 18:42:26 +01:00
app.use('/api/v1', ltsRoutes);
app.use('/api/v1/admin', adminRoutes);
2023-09-09 18:24:57 +02:00
app.use('/api/v1/acars', acarsRoutes);
2023-01-06 00:58:55 +01:00
2023-01-22 00:02:30 +01:00
// 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());
2023-01-06 00:58:55 +01:00
// listening port
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`);
});