-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.js
87 lines (73 loc) · 2.42 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const http = require('http');
const express = require('express');
const helmet = require('helmet');
const morgan = require('morgan');
const rateLimit = require("express-rate-limit");
const cookieParser = require('cookie-parser');
const cors = require('cors');
const package = require('./package.json');
// If process.env.NODE_ENV is not defined, check .env file
if (!process.env.NODE_ENV) {
console.log('NODE_ENV not defined, checking .env file');
require('dotenv').config();
}
// server configuration
const PORT = process.env.PORT || 3000;
const app = express();
// Apply rate limiter to all requests
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100, // limit each IP to 100 requests per windowMs
});
app.use(limiter);
// Middleware
const corsOptions = {
origin: [
'http://loopback.gmod:3000',
'http://loopback.gmod:3030',
'http://loopback.gmod:8080',
'http://localhost:3000',
'http://localhost:3030',
'http://localhost:8080',
'https://papi-staging.palominorp.com',
'https://papi.palominorp.com',
'https://pal-os.palominorp.com',
'https://auth.palominorp.com',
],
credentials: true,
}
app.use(cors(corsOptions));
app.use(morgan('combined')); // HTTP request logger
app.use(express.json()); // for parsing application/json
app.use(express.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(cookieParser());
const sequelize = require('./src/services/db');
// Create HTTP server
const server = http.createServer(app);
// Create WebSocket server
const setupWebSockets = require('./src/websockets'); // Import the WebSocket setup function
setupWebSockets(server); // Set up the WebSocket server
// serve static files
app.use('/public', express.static('public'));
// routes
const ui = require('./src/routes/client/uiRoutes');
app.use('/ui', ui);
const serverRoutes = require('./src/routes/serverRoutes');
app.use('/server', serverRoutes);
const clientRoutes = require('./src/routes/clientRoutes');
app.use('/client', clientRoutes);
// '/' route
app.get('/', (req, res) => {
res.json({
"version": package.version
});
});
// global error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
// Server start
server.listen(PORT, () => {
console.log(`P-API v${package.version} started on port ${PORT}`);
});