server.js 1.5 KB

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