Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 

97 Zeilen
2.7 KiB

  1. if (process.env.NODE_ENV !== 'production') {
  2. require('dotenv').config();
  3. }
  4. process.on('uncaughtException', (e) => {
  5. // prevent errors from killing the server and just log them
  6. console.error(e);
  7. });
  8. const config = require('./setup/config');
  9. const debug = require('debug')('server-connect:server');
  10. const secure = require('./setup/secure');
  11. const routes = require('./setup/routes');
  12. const sockets = require('./setup/sockets');
  13. const upload = require('./setup/upload');
  14. const cron = require('./setup/cron');
  15. const http = require('http');
  16. const express = require('express');
  17. const endmw = require('express-end');
  18. const cookieParser = require('cookie-parser');
  19. const session = require('./setup/session'); //require('express-session')(Object.assign({ secret: config.secret }, config.session));
  20. const cors = require('cors');
  21. const app = express();
  22. app.set('trust proxy', true);
  23. app.set('view engine', 'ejs');
  24. app.set('view options', { root: 'views', async: true });
  25. app.disable('x-powered-by')
  26. if (config.compression) {
  27. const compression = require('compression');
  28. app.use(compression());
  29. }
  30. if (config.abortOnDisconnect) {
  31. app.use((req, res, next) => {
  32. req.isDisconnected = false;
  33. req.on('close', () => {
  34. req.isDisconnected = true;
  35. });
  36. next();
  37. });
  38. }
  39. app.use(cors(config.cors));
  40. app.use(express.static('public', config.static));
  41. app.use(express.urlencoded({ extended: true }));
  42. app.use(express.json({
  43. verify: (req, res, buf) => {
  44. req.rawBody = buf.toString()
  45. }
  46. }));
  47. app.use(cookieParser(config.secret));
  48. app.use(session);
  49. app.use(endmw);
  50. secure(app);
  51. upload(app);
  52. routes(app);
  53. const server = http.createServer(app);
  54. const io = sockets(server, session);
  55. // Make sockets global available
  56. global.io = io;
  57. module.exports = {
  58. server, app, io,
  59. start: function(port) {
  60. // We add the 404 and 500 routes as last
  61. app.use((req, res) => {
  62. res.status(404).json({
  63. status: '404',
  64. message: `${req.url} not found.`
  65. });
  66. });
  67. app.use((err, req, res, next) => {
  68. debug(`Got error? %O`, err);
  69. res.status(500).json({
  70. status: '500',
  71. code: config.debug ? err.code : undefined,
  72. message: config.debug ? err.message || err : 'A server error occured, to see the error enable the DEBUG flag.',
  73. stack: config.debug ? err.stack : undefined,
  74. });
  75. });
  76. cron.start();
  77. server.listen(port || config.port, () => {
  78. console.log(`App listening at http://localhost:${config.port}`);
  79. });
  80. }
  81. };