Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

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