app.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 app = express();
  8. mongoose.connect(`${process.env.DB}/inventory-management`, {
  9. useNewUrlParser: true,
  10. useUnifiedTopology: true,
  11. useFindAndModify: false,
  12. useCreateIndex: true
  13. });
  14. app.set("view engine", "ejs");
  15. let sessionOptions = {
  16. secret: "Super Secret Subline Subliminally Saving Secrets So Sneaky Snakes Stay Sullen. Simply Superb.",
  17. cookie: {secure: true},
  18. saveUninitialized: true,
  19. resave: false,
  20. }
  21. app.use(express.static(__dirname + "/views"));
  22. let httpsServer = {};
  23. if(process.env.NODE_ENV === "production"){
  24. httpsServer = https.createServer({
  25. key: fs.readFileSync("/etc/letsencrypt/live/www.thesubline.com/privkey.pem", "utf8"),
  26. cert: fs.readFileSync("/etc/letsencrypt/live/www.thesubline.com/fullchain.pem", "utf8")
  27. }, app);
  28. app.use((req, res, next)=>{
  29. if(req.secure === true){
  30. next();
  31. }else{
  32. res.redirect(`https://${req.headers.host}${req.url}`);
  33. }
  34. });
  35. sessionOptions.domain = process.env.COOKIE_DOMAIN;
  36. }
  37. app.use(compression());
  38. app.use(express.urlencoded({extended: true}));
  39. app.use(express.json());
  40. app.use(session(sessionOptions));
  41. require("./routes")(app);
  42. if(process.env.NODE_ENV === "production"){
  43. httpsServer.listen(process.env.HTTPS_PORT, ()=>{});
  44. }
  45. app.listen(process.env.PORT, ()=>{});