48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
// 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}`)
|
|
})
|
|
}); |