server.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. let express = require('express')
  2. let app = express()
  3. let sequelize = require('./models').sequelize
  4. let sockets = require('./lib/sockets')
  5. let config = require('./config/server.js')
  6. //Middle-ware
  7. let bodyParser = require('body-parser')
  8. let expressSession = require('express-session')
  9. let compression = require('compression')
  10. let path = require('path')
  11. let session = expressSession({
  12. secret: config.sessionSecret,
  13. resave: true,
  14. saveUninitialized: true
  15. })
  16. app.use(compression())
  17. app.use(bodyParser.json())
  18. app.use(bodyParser.urlencoded({ extended: true }))
  19. app.use(session)
  20. if(process.env.NODE_ENV !== 'test' && process.env.NODE_ENV !== 'production') {
  21. app.use(require('morgan')('dev'))
  22. }
  23. /*if(process.env.NODE_ENV === 'production') {
  24. app.set('trust proxy', 1);
  25. console.log(session)
  26. session.cookie.secure = 'auto'
  27. }*/
  28. app.use('/api/v1/user', require('./routes/user'))
  29. app.use('/api/v1/admin_token', require('./routes/admin_token'))
  30. app.use('/api/v1/category', require('./routes/category'))
  31. app.use('/api/v1/thread', require('./routes/thread'))
  32. app.use('/api/v1/notification', require('./routes/notification'))
  33. app.use('/api/v1/post', require('./routes/post'))
  34. app.use('/api/v1/settings', require('./routes/settings'))
  35. app.use('/api/v1/report', require('./routes/report'))
  36. app.use('/api/v1/ban', require('./routes/ban'))
  37. app.use('/api/v1/search', require('./routes/search'))
  38. app.use('/api/v1/log', require('./routes/log'))
  39. app.use('/api/v1/poll', require('./routes/poll'))
  40. app.use('/static', express.static(path.join(__dirname, 'frontend', 'dist', 'static')))
  41. app.get('*', (req, res) => {
  42. res.sendFile(path.join(__dirname, 'frontend', 'dist', 'index.html'))
  43. })
  44. function main () {
  45. let server = app.listen(config.port, () => {
  46. console.log('Listening on ' + config.port)
  47. app.locals.appStarted = true
  48. app.emit('appStarted')
  49. })
  50. sockets.init(app, server, session)
  51. }
  52. if(process.env.NODE_ENV === 'test') {
  53. sequelize.sync({ force: true }).then(main)
  54. } else {
  55. main()
  56. }
  57. module.exports = app