app.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const htmlCreator = require("./htmlCreator.js");
  2. const express = require("express");
  3. const compression = require("compression");
  4. const mongoose = require("mongoose");
  5. const https = require("https");
  6. const fs = require("fs");
  7. const bodyParser = require("body-parser");
  8. const fileUpload = require("express-fileupload");
  9. const app = express();
  10. htmlCreator(app);
  11. let mongooseOptions = {
  12. useNewUrlParser: true,
  13. useUnifiedTopology: true,
  14. useFindAndModify: false,
  15. useCreateIndex: true
  16. };
  17. let httpsServer = {};
  18. if(process.env.NODE_ENV === "production"){
  19. httpsServer = https.createServer({
  20. key: fs.readFileSync("/etc/letsencrypt/live/leemorgan.io/privkey.pem", "utf8"),
  21. cert: fs.readFileSync("/etc/letsencrypt/live/leemorgan.io/fullchain.pem", "utf8")
  22. }, app);
  23. app.use((req, res, next)=>{
  24. if(req.secure === true){
  25. next();
  26. }else{
  27. res.redirect(`https://${req.headers.host}${req.url}`);
  28. }
  29. });
  30. mongooseOptions.auth = {authSource: "admin"};
  31. mongooseOptions.user = "website";
  32. mongooseOptions.pass = process.env.MONGODB_PASS;
  33. }
  34. mongoose.connect("mongodb://127.0.0.1/leemorgan", mongooseOptions);
  35. app.use(express.static(__dirname + "/content"));
  36. app.use(compression());
  37. app.use(express.json());
  38. app.use(bodyParser.urlencoded({extended: false}))
  39. app.use(fileUpload({limits: { fileSize: 1024 * 1024}}));
  40. require("./routes.js")(app);
  41. if(process.env.NODE_ENV === "production") httpsServer.listen(process.env.HTTPS_PORT);
  42. app.listen(process.env.PORT);