ddosprotect
Version:
Simple ddos protection for express web applications
30 lines (26 loc) • 1.19 kB
JavaScript
const express = require("express");
const fs = require("fs-extra")
exports.antiddos = function (request, response, interval, maxrequests) {
// request & response = get/post function data | interval = user requests interval (ms)| maxrequests = Number of requests (max) accepted in the time interval
console.log("--> Cool ddos protection by Bxsic <--");
function getnbrequests(array, value) {
var count = 0;
array.forEach((v) => (v === value && count++));
return count;
}
setInterval(function() {
fs.writeFileSync("listconnections.txt", " ");
}, interval);
var ip = request.headers['x-forwarded-for'] || request.connection.remoteAddress;
ip = ip.split(",");
ip = ip['0'];
fs.appendFileSync("listconnections.txt", ip + "+");
let listip = fs.readFileSync("listconnections.txt", "utf-8").split('+');
let nbrq = getnbrequests(listip, ip);
if(nbrq > maxrequests){
response.redirect("http://" + ip);
console.log("❌" + ip + ", number of requests last " + interval/1000 + "s : " + nbrq + "/" + maxrequests);
} else {
console.log("✅ " + ip + ", number of requests last " + interval/1000 + "s : " + nbrq + "/" + maxrequests);
}
}