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}.`);
 | 
						|
}); |