app.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const express = require("express");
  2. const session = require("cookie-session");
  3. const mongoose = require("mongoose");
  4. const compression = require("compression");
  5. const https = require("https");
  6. const fs = require("fs");
  7. const cssmerger = require("cssmerger");
  8. const app = express();
  9. mongoose.connect(`mongodb://subline:${process.env.SUBLINE_DB_PASS}@localhost:27017/inventory-management?authSource=admin`, {
  10. useNewUrlParser: true,
  11. useUnifiedTopology: true,
  12. useFindAndModify: false,
  13. useCreateIndex: true
  14. });
  15. app.set("view engine", "ejs");
  16. let sessionOptions = {
  17. secret: "Super Secret Subline Subliminally Saving Secrets So Sneaky Snakes Stay Sullen. Simply Superb.",
  18. sameSite: "lax",
  19. saveUninitialized: true,
  20. resave: false,
  21. };
  22. app.use(express.static(__dirname + "/views"));
  23. let httpsServer = {};
  24. if(process.env.NODE_ENV === "production"){
  25. httpsServer = https.createServer({
  26. key: fs.readFileSync("/etc/letsencrypt/live/www.thesubline.com/privkey.pem", "utf8"),
  27. cert: fs.readFileSync("/etc/letsencrypt/live/www.thesubline.com/fullchain.pem", "utf8")
  28. }, app);
  29. app.use((req, res, next)=>{
  30. if(req.secure === true){
  31. next();
  32. }else{
  33. res.redirect(`https://${req.headers.host}${req.url}`);
  34. }
  35. });
  36. sessionOptions.domain = process.env.COOKIE_DOMAIN;
  37. sessionOptions.secure = true;
  38. }
  39. app.use(compression());
  40. app.use(express.urlencoded({extended: true}));
  41. app.use(express.json());
  42. app.use(session(sessionOptions));
  43. require("./routes")(app);
  44. console.time("time");
  45. cssmerger([
  46. // "./views/shared/shared.css",
  47. // "./views/dashboardPage/dashboard.css",
  48. "./views/dashboardPage/sidebars.css",
  49. "./views/shared/css/general.css",
  50. "./views/shared/css/loader.css",
  51. "./views/dashboardPage/css"
  52. ], "./views/dashboardPage/bundle.css");
  53. console.timeEnd("time");
  54. if(process.env.NODE_ENV === "production"){
  55. httpsServer.listen(process.env.HTTPS_PORT, ()=>{});
  56. }
  57. app.listen(process.env.PORT, ()=>{});