Spaces:
Paused
Paused
var Database = require('./database.js'); | |
class CheckMilWare { | |
constructor() { | |
this.dbClient = new Database("AkenoXJs", "FastJsAPI"); | |
} | |
async handle(req, res, next) { | |
try { | |
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; | |
console.log(`Extracted Real IP: ${realIP}`); | |
const isBlocked = await this.dbClient.CheckIsBlocked(realIP); | |
console.log(`CheckIsBlocked result for ${realIP}:`, isBlocked); | |
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 this.dbClient.AddIpisBlocked(realIP); | |
return res.status(403).send("Access denied: IP is blocked.."); | |
} | |
// await this.dbClient.IPAddressAndUpdate(realIP); | |
console.log(`Real IP address is: ${realIP}, header used: ${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; |