mirror of
https://github.com/fosrl/pangolin.git
synced 2026-01-29 06:10:47 +00:00
- Add MaxMind ASN database integration - Implement ASN lookup and matching in resource rule verification - Add curated list of 100+ major ASNs (cloud, ISP, CDN, mobile carriers) - Add ASN dropdown selector in resource rules UI with search functionality - Support custom ASN input for unlisted ASNs - Add 'ALL ASNs' special case handling (AS0) - Cache ASN lookups with 5-minute TTL for performance - Update validation schemas to support ASN match type This allows administrators to create resource access rules based on Autonomous System Numbers, similar to existing country-based rules. Useful for restricting access by ISP, cloud provider, or mobile carrier.
30 lines
781 B
TypeScript
30 lines
781 B
TypeScript
import logger from "@server/logger";
|
|
import { maxmindAsnLookup } from "@server/db/maxmindAsn";
|
|
|
|
export async function getAsnForIp(ip: string): Promise<number | undefined> {
|
|
try {
|
|
if (!maxmindAsnLookup) {
|
|
logger.debug(
|
|
"MaxMind ASN DB path not configured, cannot perform ASN lookup"
|
|
);
|
|
return;
|
|
}
|
|
|
|
const result = maxmindAsnLookup.get(ip);
|
|
|
|
if (!result || !result.autonomous_system_number) {
|
|
return;
|
|
}
|
|
|
|
logger.debug(
|
|
`ASN lookup successful for IP ${ip}: AS${result.autonomous_system_number}`
|
|
);
|
|
|
|
return result.autonomous_system_number;
|
|
} catch (error) {
|
|
logger.error("Error performing ASN lookup:", error);
|
|
}
|
|
|
|
return;
|
|
}
|