index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env node
  2. const schema = require('./schema');
  3. const logger = require('./logger').global;
  4. const IP_RANGES_FETCH_ENABLED = process.env.IP_RANGES_FETCH_ENABLED !== 'false';
  5. async function appStart () {
  6. const migrate = require('./migrate');
  7. const setup = require('./setup');
  8. const app = require('./app');
  9. const internalCertificate = require('./internal/certificate');
  10. const internalIpRanges = require('./internal/ip_ranges');
  11. return migrate.latest()
  12. .then(setup)
  13. .then(schema.getCompiledSchema)
  14. .then(() => {
  15. if (IP_RANGES_FETCH_ENABLED) {
  16. logger.info('IP Ranges fetch is enabled');
  17. return internalIpRanges.fetch().catch((err) => {
  18. logger.error('IP Ranges fetch failed, continuing anyway:', err.message);
  19. return Promise.resolve();
  20. });
  21. } else {
  22. logger.info('IP Ranges fetch is disabled by environment variable');
  23. return Promise.resolve();
  24. }
  25. })
  26. .then(() => {
  27. internalCertificate.initTimer();
  28. internalIpRanges.initTimer();
  29. const server = app.listen(3000, () => {
  30. logger.info('Backend PID ' + process.pid + ' listening on port 3000 ...');
  31. process.on('SIGTERM', () => {
  32. logger.info('PID ' + process.pid + ' received SIGTERM');
  33. server.close(() => {
  34. logger.info('Stopping.');
  35. process.exit(0);
  36. });
  37. });
  38. });
  39. })
  40. .catch((err) => {
  41. logger.error(err.message, err);
  42. setTimeout(appStart, 1000);
  43. });
  44. }
  45. try {
  46. appStart();
  47. } catch (err) {
  48. logger.error(err.message, err);
  49. process.exit(1);
  50. }