index.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const config = require('./config');
  2. const {initLogger, getLog} = require('./core/getLogger');
  3. initLogger(config);
  4. const log = getLog();
  5. const fs = require('fs-extra');
  6. const path = require('path');
  7. const express = require('express');
  8. const compression = require('compression');
  9. const SqliteConnectionPool = require('./core/SqliteConnectionPool');
  10. async function init() {
  11. await fs.ensureDir(config.dataDir);
  12. await fs.ensureDir(config.uploadDir);
  13. await fs.ensureDir(config.tempDir);
  14. await fs.emptyDir(config.tempDir);
  15. }
  16. async function main() {
  17. const connPool = new SqliteConnectionPool(20, config);
  18. log('Initializing');
  19. await init();
  20. log('Opening database');
  21. await connPool.init();
  22. //servers
  23. for (let server of config.servers) {
  24. if (server.mode !== 'none') {
  25. const app = express();
  26. const serverConfig = Object.assign({}, config, server);
  27. let devModule = undefined;
  28. if (serverConfig.branch == 'development') {
  29. const devFileName = './dev.js'; //ignored by pkg -50Mb executable size
  30. devModule = require(devFileName);
  31. devModule.webpackDevMiddleware(app);
  32. }
  33. app.use(compression({ level: 1 }));
  34. app.use(express.json());
  35. if (devModule)
  36. devModule.logQueries(app);
  37. app.use(express.static(serverConfig.publicDir, {
  38. maxAge: '30d',
  39. setHeaders: (res, filePath) => {
  40. if (path.basename(path.dirname(filePath)) == 'tmp') {
  41. res.set('Content-Type', 'text/xml');
  42. res.set('Content-Encoding', 'gzip');
  43. }
  44. }
  45. }));
  46. require('./routes').initRoutes(app, connPool, serverConfig);
  47. if (devModule) {
  48. devModule.logErrors(app);
  49. } else {
  50. app.use(function(err, req, res, next) {// eslint-disable-line no-unused-vars
  51. log(LM_ERR, err.stack);
  52. res.sendStatus(500);
  53. });
  54. }
  55. app.listen(serverConfig.port, serverConfig.ip, function() {
  56. log(`Server-${serverConfig.serverName} is ready on ${serverConfig.ip}:${serverConfig.port}, mode: ${serverConfig.mode}`);
  57. });
  58. }
  59. }
  60. }
  61. main();