var Database = require('./database.js'); const CheckMilWare = async (app) => { return async (req, res, next) => { try { const dbClient = new Database("AkenoXJs", "FastJsAPI"); const xForwardedFor = req.headers['x-forwarded-for']; const xRealIP = req.headers['x-real-ip']; const cfConnectingIP = req.headers['cf-connecting-ip']; let realIP = req.ip; if (xForwardedFor) { realIP = xForwardedFor.split(',')[0].trim(); } else if (xRealIP) { realIP = xRealIP; } else if (cfConnectingIP) { realIP = cfConnectingIP; } req.realIP = realIP; const isBlocked = await dbClient.CheckIsBlocked(realIP); if (isBlocked && isBlocked.blocked === true) { return res.status(403).send("Access denied: IP is blocked"); } if (req.path === '/env') { console.log("Check path /env"); await dbClient.AddIpisBlocked(realIP); return res.status(403).send("Access denied: IP is blocked.."); } await dbClient.IPAddressAndUpdate(realIP); console.log(`Real IP address is: ${realIP}, header: ${xForwardedFor ? "x-forwarded-for" : xRealIP ? "x-real-ip" : cfConnectingIP ? "cf-connecting-ip" : "req.ip"}`); next(); } catch (error) { console.error("Error in middleware: " + error); res.status(500).send("Something bad happened"); } }; }; module.exports = { CheckMilWare };