index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 express = require('express');
  7. const compression = require('compression');
  8. const SqliteConnectionPool = require('./core/SqliteConnectionPool');
  9. async function init() {
  10. await fs.ensureDir(config.dataDir);
  11. await fs.ensureDir(config.tempDir);
  12. }
  13. async function main() {
  14. const connPool = new SqliteConnectionPool(20, config);
  15. log('Initializing');
  16. await init();
  17. log('Opening database');
  18. await connPool.init();
  19. //servers
  20. for (let server of config.servers) {
  21. if (server.mode !== 'none') {
  22. const app = express();
  23. const serverConfig = Object.assign({}, config, server);
  24. let devModule = undefined;
  25. if (serverConfig.branch == 'development') {
  26. const devFileName = './dev.js'; //ignored by pkg -50Mb executable size
  27. devModule = require(devFileName);
  28. devModule.webpackDevMiddleware(app);
  29. }
  30. app.use(compression({ level: 1 }));
  31. app.use(express.json());
  32. if (devModule)
  33. devModule.logQueries(app);
  34. app.use(express.static(serverConfig.publicDir, { maxAge: '30d' }));
  35. require('./routes').initRoutes(app, connPool, serverConfig);
  36. if (devModule) {
  37. devModule.logErrors(app);
  38. } else {
  39. app.use(function(err, req, res, next) {// eslint-disable-line no-unused-vars
  40. log(LM_ERR, err.stack);
  41. res.sendStatus(500);
  42. });
  43. }
  44. app.listen(serverConfig.port, serverConfig.ip, function() {
  45. log(`Server-${serverConfig.serverName} is ready on ${serverConfig.ip}:${serverConfig.port}, mode: ${serverConfig.mode}`);
  46. });
  47. }
  48. }
  49. }
  50. main();