mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
// Create test MaxMind DB database files containing information about
|
|
// just LBL's IPv4 ranges for testing.
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
"net"
|
|
"os"
|
|
|
|
"github.com/maxmind/mmdbwriter"
|
|
"github.com/maxmind/mmdbwriter/mmdbtype"
|
|
)
|
|
|
|
func writeDB(fname, name string, record mmdbtype.Map, nets ...*net.IPNet) {
|
|
writer, err := mmdbwriter.New(
|
|
mmdbwriter.Options{
|
|
DatabaseType: name,
|
|
},
|
|
)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
for _, n := range nets {
|
|
if err = writer.Insert(n, record); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
fh, err := os.Create(fname)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
_, err = writer.WriteTo(fh)
|
|
if err != nil {
|
|
fh.Close()
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fh.Close()
|
|
}
|
|
|
|
func main() {
|
|
_, net1, _ := net.ParseCIDR("128.3.0.0/16")
|
|
_, net2, _ := net.ParseCIDR("131.243.0.0/16")
|
|
_, net3, _ := net.ParseCIDR("2607:f140::/32")
|
|
|
|
// The ASN record.
|
|
asnRecord := mmdbtype.Map{}
|
|
asnRecord["autonomous_system_number"] = mmdbtype.Uint32(16)
|
|
asnRecord["autonomous_system_organization"] = mmdbtype.String("Lawrence Berkeley National Laboratory")
|
|
writeDB("GeoLite2-ASN.mmdb", "My-ASN-DB", asnRecord, net1, net2, net3)
|
|
|
|
// The Location record.
|
|
locRecord := mmdbtype.Map{
|
|
"country": mmdbtype.Map{
|
|
"iso_code": mmdbtype.String("US"),
|
|
"names": mmdbtype.Map{
|
|
"en": mmdbtype.String("United States"),
|
|
},
|
|
},
|
|
"location": mmdbtype.Map{
|
|
"latitude": mmdbtype.Float64(37.75100),
|
|
"longitude": mmdbtype.Float64(-97.822000),
|
|
},
|
|
"city": mmdbtype.Map{
|
|
"names": mmdbtype.Map{
|
|
"en": mmdbtype.String("Berkeley"),
|
|
},
|
|
},
|
|
}
|
|
writeDB("GeoLite2-City.mmdb", "My-City-DB", locRecord, net1, net2, net3)
|
|
}
|