diff --git a/internal/common/common.go b/internal/common/common.go index cbed767..4dc83e1 100644 --- a/internal/common/common.go +++ b/internal/common/common.go @@ -26,12 +26,11 @@ type DataStruct struct { } type ASNDataResponse struct { - ASNDetails ASNDetails `json:"asn_details"` - Prefixes PrefixInfo `json:"prefixes"` - SourceDetails SourceDetails `json:"source_details"` + Details Details `json:"details"` + Prefixes PrefixInfo `json:"prefixes"` } -type ASNDetails struct { +type Details struct { ASN uint `json:"asn"` Name string `json:"name"` } @@ -41,10 +40,6 @@ type PrefixInfo struct { IPv6 []string `json:"ipv6"` } -type SourceDetails struct { - Source string `json:"source"` -} - // Global caches with 10 minute TTL var ipCache = NewIPCache(10 * time.Minute) var asnCache = NewASNCache(10 * time.Minute) @@ -214,7 +209,7 @@ func LookupASNData(geoIP *db.GeoIPManager, targetASN uint) (*ASNDataResponse, er sort.Strings(ipv6Prefixes) response := &ASNDataResponse{ - ASNDetails: ASNDetails{ + Details: Details{ ASN: targetASN, Name: orgName, }, @@ -222,9 +217,6 @@ func LookupASNData(geoIP *db.GeoIPManager, targetASN uint) (*ASNDataResponse, er IPv4: ipv4Prefixes, IPv6: ipv6Prefixes, }, - SourceDetails: SourceDetails{ - Source: "GeoLite2-ASN.mmdb", - }, } asnCache.Set(targetASN, response) diff --git a/readme.md b/readme.md index 4ec2705..4908334 100644 --- a/readme.md +++ b/readme.md @@ -38,6 +38,39 @@ $ curl https://ip.albert.lol/9.9.9.9/city } ``` +### Get details about an ASN +```sh +$ curl https://ip.albert.lol/AS13335 +{ + "details": { + "asn": 19281, + "name": "QUAD9-AS-1" + }, + "prefixes": { + "ipv4": [ + "149.112.112.0/24", + "149.112.149.0/24", + "199.249.255.0/24", + "9.9.9.0/24" + ], + "ipv6": [ + "2001:0:909:900::/56", + "2001:0:9570:7000::/56", + "2001:0:9570:9500::/56", + "2001:0:c7f9:ff00::/56", + "2002:909:900::/40", + "2002:9570:7000::/40", + "2002:9570:9500::/40", + "2002:c7f9:ff00::/40", + "2620:fe::/48", + "::909:900/120", + "::9570:7000/120", + "::9570:9500/120", + "::c7f9:ff00/120" + ] + } +} +``` ## Running Locally ### With Docker