2024-08-01 21:26:01 +00:00
|
|
|
const express = require('express');
|
2024-08-04 22:30:33 +00:00
|
|
|
const http = require('http')
|
|
|
|
const socketIo = require('socket.io');
|
2024-08-01 21:26:01 +00:00
|
|
|
const app = express();
|
|
|
|
const cookieParser = require('cookie-parser');
|
|
|
|
const bodyParser = require('body-parser');
|
|
|
|
const mongoose = require('mongoose');
|
|
|
|
const fs = require('fs');
|
|
|
|
const path = require('path');
|
|
|
|
const morgan = require('morgan');
|
|
|
|
const cors = require('cors');
|
|
|
|
const passport = require('passport');
|
2024-08-04 22:30:33 +00:00
|
|
|
const server = http.createServer(app);
|
2024-09-14 00:10:05 +00:00
|
|
|
const config = JSON.parse(fs.readFileSync("config.json"));
|
2024-10-09 13:43:58 +00:00
|
|
|
const database = require('./services/database');
|
2024-08-04 22:30:33 +00:00
|
|
|
|
2024-10-01 12:57:53 +00:00
|
|
|
const pluginManager = require('./services/plugins')
|
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// SET CONSTANTS
|
2024-10-09 13:43:58 +00:00
|
|
|
let PORT = 8081;
|
|
|
|
if(process.env.NODE_ENV == 'test')
|
|
|
|
PORT = 8082;
|
|
|
|
|
2024-08-01 21:26:01 +00:00
|
|
|
global.appRoot = path.resolve(__dirname);
|
2024-09-14 00:10:05 +00:00
|
|
|
let mongo_final_ip = "";
|
2024-08-01 21:26:01 +00:00
|
|
|
console.log("Production? " + !process.env.DEBUG);
|
|
|
|
if(process.env.DEBUG){
|
|
|
|
mongo_final_ip = "mongodb://" + config.mongo_ip_debug + "/dragonroll";
|
|
|
|
} else {
|
|
|
|
mongo_final_ip = "mongodb://" + config.mongo_ip + "/dragonroll";
|
|
|
|
}
|
2024-09-14 00:10:05 +00:00
|
|
|
console.log("Db ip: " + mongo_final_ip)
|
2024-08-01 21:26:01 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// CONFIGURE SOCKET IO
|
|
|
|
const socket = require('./io/socket')
|
|
|
|
const io = socketIo(server, {
|
|
|
|
cors: {
|
|
|
|
origin: '*',
|
|
|
|
}
|
|
|
|
});
|
|
|
|
socket.setIo(io);
|
|
|
|
|
|
|
|
// CONNECT TO MONGODB
|
2024-10-09 13:43:58 +00:00
|
|
|
|
|
|
|
if(process.env.NODE_ENV != 'test')
|
|
|
|
database.connectDB();
|
2024-08-01 21:26:01 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// PASSPORT
|
2024-08-01 21:26:01 +00:00
|
|
|
app.use(morgan('tiny'));
|
|
|
|
app.use(passport.initialize());
|
2024-10-09 13:43:58 +00:00
|
|
|
require('./services/passport')(passport);
|
2024-08-01 21:26:01 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// PUBLIC
|
2024-08-01 21:26:01 +00:00
|
|
|
app.use("/public", express.static(__dirname + '/public'));
|
2024-09-14 00:10:05 +00:00
|
|
|
app.use('/public', express.static('uploads'));
|
2024-08-01 21:26:01 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// JSON LIMIT EXPRESS
|
2024-08-01 21:26:01 +00:00
|
|
|
app.use(express.json({limit: '50mb'}));
|
|
|
|
app.use(express.urlencoded({
|
|
|
|
extended : false,
|
|
|
|
limit: '50mb'
|
|
|
|
}));
|
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// CORS
|
2024-08-01 21:26:01 +00:00
|
|
|
app.use(cookieParser());
|
|
|
|
app.use(bodyParser.urlencoded({ extended: true }));
|
|
|
|
app.use(cors());
|
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// ROUTES (NO AUTH)
|
2024-08-01 21:26:01 +00:00
|
|
|
app.use('/user', require('./routes/user'));
|
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// AUTH
|
|
|
|
checkAuth = passport.authenticate('jwt', {session: false});
|
|
|
|
app.use(checkAuth);
|
2024-08-04 22:30:33 +00:00
|
|
|
|
2024-10-09 13:43:58 +00:00
|
|
|
if(process.env.NODE_ENV != 'test')
|
|
|
|
pluginManager.init();
|
2024-10-01 12:57:53 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// ROUTES WITH AUTH
|
|
|
|
app.use('/campaign', require('./routes/campaign'));
|
|
|
|
app.use('/maps', require('./routes/map'))
|
|
|
|
app.use('/concept', require('./routes/concept'))
|
2024-09-27 23:41:47 +00:00
|
|
|
app.use('/admin', require('./routes/admin'))
|
2024-09-14 00:10:05 +00:00
|
|
|
// GET localhost:8081/concept/list
|
2024-08-04 22:30:33 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// SETUP IO
|
|
|
|
require('./io/campaign')(socket.getIo());
|
2024-08-04 22:30:33 +00:00
|
|
|
|
2024-09-14 00:10:05 +00:00
|
|
|
// LISTEN
|
2024-08-04 22:30:33 +00:00
|
|
|
server.listen(PORT, () => {
|
2024-08-01 21:26:01 +00:00
|
|
|
console.log("Dragonroll backend started");
|
|
|
|
});
|
2024-10-09 13:43:58 +00:00
|
|
|
|
|
|
|
module.exports = { app, server }
|