server.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import express from 'express';
  2. import session from 'express-session';
  3. import memorystore from 'memorystore';
  4. import ejs from 'ejs';
  5. import Docker from 'dockerode';
  6. import { router } from './router/index.js';
  7. import { sequelize } from './database/models.js';
  8. export var docker = new Docker();
  9. const app = express();
  10. const MemoryStore = memorystore(session);
  11. const port = process.env.PORT || 8000;
  12. const connection = process.env.HTTPS || false;
  13. // Session middleware
  14. const sessionMiddleware = session({
  15. store: new MemoryStore({ checkPeriod: 86400000 }), // Prune expired entries every 24h
  16. secret: "keyboard cat",
  17. resave: false,
  18. saveUninitialized: false,
  19. cookie:{
  20. secure: connection,
  21. httpOnly: connection,
  22. maxAge:3600000 * 8 // Session max age in milliseconds. 3600000 = 1 hour.
  23. }
  24. });
  25. // Express middleware
  26. app.set('view engine', 'html');
  27. app.engine('html', ejs.renderFile);
  28. app.use([
  29. express.static('public'),
  30. express.urlencoded({ extended: true }),
  31. sessionMiddleware,
  32. router
  33. ]);
  34. // Initialize server
  35. app.listen(port, async () => {
  36. async function init() {// I made sure the console.logs and emojis lined up
  37. try { await sequelize.authenticate().then(
  38. () => { console.log('DB Connection: ✔️') }); }
  39. catch { console.log('DB Connection: ❌'); }
  40. try { await sequelize.sync().then(
  41. () => { console.log('Synced Models: ✔️') }); }
  42. catch { console.log('Synced Models: ❌'); } }
  43. await init().then(() => {
  44. console.log(`Listening on http://localhost:${port}`);
  45. });
  46. });