Discord-Captcha-Verification/modules/network/blacklist.js
2024-04-28 21:44:05 +02:00

43 lines
No EOL
1.1 KiB
JavaScript

const fs = require('fs');
const readline = require('readline');
class Blacklist {
constructor() {
this.blacklist = [];
}
async loadBlacklist() {
// https://github.com/josephrocca/is-vpn/blob/main/vpn-or-datacenter-ipv4-ranges.txt
const files = ["blacklist.txt"];
const folder = "./modules/network/";
for (const file of files) {
const fileStream = fs.createReadStream(folder + file);
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
this.add(line);
}
}
return new Promise((resolve) => {
return resolve(this.blacklist);
});
}
add(ip) {
if(!this.isBlacklisted(ip))
this.blacklist.push(ip);
}
remove(ip) {
this.blacklist = this.blacklist.filter(blacklistedIp => blacklistedIp !== ip);
}
isBlacklisted(ip) {
return this.blacklist.includes(ip);
}
}
module.exports = new Blacklist();