datacenter-ip-checker/checkIp.js

26 lines
674 B
JavaScript

import fs from "fs";
import { fileURLToPath } from "url";
import path from "path";
import ipCheck from "ip";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const ipDir = path.join(__dirname, "./ip_ranges");
const database = {};
for (const file of fs.readdirSync(ipDir)) {
database[path.basename(file, ".json")] = JSON.parse(
fs.readFileSync(path.join(ipDir, file)).toString()
)["NN"].map(({ prefix }) => prefix);
}
export const checkIp = (ip) => {
for (const [name, cidrs] of Object.entries(database)) {
for (const cidr of cidrs) {
if (ipCheck.cidrSubnet(cidr).contains(ip)) {
return name;
}
}
}
return null;
};