server.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. var express = require('express');
  2. var path = require('path');
  3. var logger = require('morgan');
  4. var compression = require('compression');
  5. var methodOverride = require('method-override');
  6. var session = require('express-session');
  7. var flash = require('express-flash');
  8. var bodyParser = require('body-parser');
  9. var expressValidator = require('express-validator');
  10. var dotenv = require('dotenv');
  11. var nunjucks = require('nunjucks');
  12. var markdown = require('nunjucks-markdown');
  13. var marked = require('marked');
  14. var mongoose = require('mongoose');
  15. var elasticsearch = require('elasticsearch');
  16. var passport = require('passport');
  17. var routes = require('./routes');
  18. var processImage = require('express-processimage');
  19. var i18n = require("i18n");
  20. var cookieParser = require('cookie-parser');
  21. var minifyHTML = require('express-minify-html');
  22. var device = require('express-device');
  23. // Load environment variables from .env file
  24. dotenv.load();
  25. // Passport OAuth strategies
  26. require('./config/passport');
  27. var app = express()
  28. app.use(cookieParser())
  29. app.use(device.capture())
  30. mongoose.connect(process.env.DB_PATH);
  31. mongoose.set('debug', false);
  32. mongoose.connection.on('error', function() {
  33. console.log('MongoDB Connection Error. Please make sure that MongoDB is running.');
  34. process.exit(1);
  35. });
  36. // view engine setup
  37. var njks = nunjucks.configure('views', {
  38. autoescape: true,
  39. express: app,
  40. marked: true
  41. });
  42. markdown.register(njks, marked);
  43. // i18n options
  44. i18n.configure({
  45. locales:['pt', 'en', 'es'],
  46. defaultLocale: 'pt',
  47. queryParameter: 'lang',
  48. cookie: 'siteLang',
  49. directoryPermissions: '775',
  50. autoReload: true,
  51. updateFiles: false,
  52. directory: __dirname + '/public/locales',
  53. api: {
  54. '__': 't', //now req.__ becomes req.t
  55. }
  56. });
  57. app.use(i18n.init);
  58. /* Minify options */
  59. // app.use(minifyHTML({
  60. // override: true,
  61. // exception_url: true,
  62. // htmlMinifier: {
  63. // removeComments: false,
  64. // collapseWhitespace: false,
  65. // collapseBooleanAttributes: false,
  66. // removeAttributeQuotes: false,
  67. // removeEmptyAttributes: false,
  68. // minifyJS: true
  69. // }
  70. // }));
  71. app.set('view engine', 'html');
  72. app.set('port', process.env.PORT || 3998);
  73. app.use(compression());
  74. app.use(logger('dev'));
  75. app.use(bodyParser.json());
  76. app.use(bodyParser.urlencoded({ extended: false }));
  77. app.use(expressValidator());
  78. app.use(methodOverride('_method'));
  79. app.use(session({ secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: true }));
  80. app.use(flash());
  81. app.use(passport.initialize());
  82. app.use(passport.session());
  83. app.use(function(req, res, next) {
  84. res.locals.user = req.user;
  85. next();
  86. });
  87. /*
  88. * https://www.npmjs.com/package/express-processimage
  89. * pacote de thumb pra corrigir o issue: https://libregit.org/libreflix/libreflix/issues/19
  90. * instrução pra recortar uma imagem https://github.com/papandreou/express-processimage/issues/14
  91. */
  92. app.use(processImage(path.join(__dirname, 'public')));
  93. app.use(express.static(path.join(__dirname, 'public')));
  94. /**
  95. * Setup Routes
  96. */
  97. routes.init(app, passport);
  98. uploadDir = path.join(__dirname, '/public/media/');
  99. // Production error handler
  100. if (app.get('env') === 'production') {
  101. app.use(function(err, req, res, next) {
  102. console.error(err.stack);
  103. res.sendStatus(err.status || 500);
  104. });
  105. }
  106. app.listen(app.get('port'), function() {
  107. console.log('Express server listening on port ' + app.get('port'));
  108. });
  109. module.exports = app;