26 lines
674 B
JavaScript
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;
|
|
};
|