UBS/index.js
2024-12-04 20:57:28 -07:00

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}`)
})
});