app.js 1.4 KB

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