// Other stuff const colors = require("colors"); const fs = require("fs"); const path = require('path'); const flags = require("./flags.js") // Color logs const log = { info(msg) { console.log(`${colors.cyan.bold("[INFO]")} ${msg}`); } } // dotenv require("dotenv").config(); // Express const express = require("express"); const app = new express(); const port = process.env.SERVER_PORT || 3000; app.use(express.json()); app.use((req, res, next) => { if (!process.env.LOGFILE) return next(); var requestIp = req.ip; if (process.env.TRUST_PROXY && (req.ip == `::ffff:${process.env.PROXY_IP}` || req.ip == process.env.PROXY_IP)) { requestIp = req.headers["x-forwarded-for"]; } fs.appendFileSync(process.env.LOGFILE, `${requestIp} - ${req.method} ${req.protocol}://${req.get('host')}${req.originalUrl} - ${req.headers["user-agent"]}\n`) console.log(req.headers) next() }); // Run migrations require("./migrations")().then(() => { // Load all route modules from the 'routes' folder const routesPath = path.join(__dirname, 'routes'); fs.readdirSync(routesPath).forEach((file) => { const route = require(path.join(routesPath, file)); const routeName = `/${file.replace('.js', '')}`; // Use filename as route base app.use(routeName, route); log.info(`Using ${routeName}`) }); app.listen(port, () => { log.info(`Listening on ${port}`) }) });