"use strict"; /*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2020*/ /** * App * @copyright 2020 Manaknightdigital Inc. * @link https://manaknightdigital.com * @license Proprietary Software licensing * @author Ryan Wong * */ require("dotenv").config(); const { getLocalPath } = require("./core/helpers"); const fs = require("fs"); const express = require("express"); const path = require("path"); const body_parser = require("body-parser"); const logger = require("morgan"); const helmet = require("helmet"); const PowerByService = require("./services/PowerByService"); const UploadService = require("./services/UploadService"); const cookieParser = require("cookie-parser"); const controllersEndpoints = require("./controllers/index"); const portalsEndpoints = require("./routes/index"); const db = require("./models"); const sessionClass = require("express-session"); const flash = require("connect-flash"); const cors = require("cors"); const sizeOf = require("image-size"); let app = express(); const expressip = require("express-ip"); if (process.NODE_ENV === "maintenance") { app.all("*", (req, res) => { res.status(503).json({ message: "website under maintenance" }); }); } app.set("iocContainer", process.env); app.set("db", db); app.use(expressip().getIpInfoMiddleware); app.use(logger("dev")); app.use( express.json({ limit: "50mb", verify: (req, res, buf) => { req.rawBody = buf; }, }) ); app.use( express.urlencoded({ extended: false, }) ); app.use(cors()); app.use(flash()); let session = { secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: true, name: "session", proxy: true, cookie: { maxAge: 60 * 60 * 1000 }, }; app.set("trust proxy", true); if (process.env.NODE_ENV === "production") { session.cookie.secure = true; // serve secure cookies } app.use(sessionClass(session)); app.set("view engine", "eta"); app.set("views", path.join(__dirname, "/views")); app.use(cookieParser()); app.use(helmet()); app.use(PowerByService); app.use(express.static(path.join(__dirname, "/public"))); app.get("/version", (req, res) => res.status(200).json({ version: process.env.VERSION })); app.get("/", (req, res, next) => { return res.send("