From 05922132b3687b41a55f9ec691859b70b87a9af4 Mon Sep 17 00:00:00 2001 From: Arne Welzel Date: Mon, 23 Oct 2023 23:19:09 +0200 Subject: [PATCH] btest/files: Add mmdb testing databases and generator code --- testing/btest/Files/mmdb/.gitignore | 1 + testing/btest/Files/mmdb/GeoLite2-ASN.mmdb | Bin 0 -> 2908 bytes testing/btest/Files/mmdb/GeoLite2-City.mmdb | Bin 0 -> 2923 bytes testing/btest/Files/mmdb/README | 13 ++++ testing/btest/Files/mmdb/go.mod | 11 +++ testing/btest/Files/mmdb/go.sum | 16 +++++ testing/btest/Files/mmdb/main.go | 71 ++++++++++++++++++++ 7 files changed, 112 insertions(+) create mode 100644 testing/btest/Files/mmdb/.gitignore create mode 100644 testing/btest/Files/mmdb/GeoLite2-ASN.mmdb create mode 100644 testing/btest/Files/mmdb/GeoLite2-City.mmdb create mode 100644 testing/btest/Files/mmdb/README create mode 100644 testing/btest/Files/mmdb/go.mod create mode 100644 testing/btest/Files/mmdb/go.sum create mode 100644 testing/btest/Files/mmdb/main.go diff --git a/testing/btest/Files/mmdb/.gitignore b/testing/btest/Files/mmdb/.gitignore new file mode 100644 index 0000000000..b4daca1937 --- /dev/null +++ b/testing/btest/Files/mmdb/.gitignore @@ -0,0 +1 @@ +testmmdb diff --git a/testing/btest/Files/mmdb/GeoLite2-ASN.mmdb b/testing/btest/Files/mmdb/GeoLite2-ASN.mmdb new file mode 100644 index 0000000000000000000000000000000000000000..65ade5917effcd34fe314d8bafa61ce7a0993d64 GIT binary patch literal 2908 zcmZYA1#}cw6oBD7A%sAY;1(dbCU|g38YGGY352kj-JK+xWM`JyU0_oe>h4BM>MeEm z7V1LXm8MFKy4#!ilO0Z*bM}1a-uv!-@9oTe)HZp#T=a zVpsx8p%99o7)qcN%3v8RhZQ37r^rg8a##hcVGXQ>3Rnm0p%OMg6>J0_RD-Ve+alsu zG>8O92EkCtI*}TpS{LW~&L@~r*vWFE>5z|{@iA3nz1a`94))%9_b;{

{dwmUqWOv)pC6T3uq)9@%f29LWqeewh=pA>nD+SBlix8&L6 z_qoSQJ}>fu7riL*5`8ZxlWM%X!>b~%QF|TUfH&3d@3Q1Ak+(^{+jfDj z&Wy$OHyQj1J0X!rtF+>Gtk;>ETRullif)&usaiWC&*&KhP`)16jW^3 zdlwPA*n1_xh7G&eeKUWu!!hUV`OdxX-uvF$nLQEFM6{SlhN4EKkz%GuCQ)O^f+o;Z zag<0iqUN9yZhH%83E9vJT0)H}rwN&=2~< z02l~^U@#1Up)d?`ArFSb2p9>YU^I+@u`mwC!vvTJlVCDTfvGSJrb9l=fB>jx=RSu5 zm<6+84g{ePil7+gLI~!;d{_VrMdUA$MMNdA7)oIYEQMvT99BRXtb|pt8p5y!bhY2n zBISy8A`y~NFjTTiq=Kl@!@a)yG1HN(^%5%S=0&~iaYa(Z@=I)yYWmhgBE8no=g?k1 zWkbVE*{FtHE0R*2C$fq5W8hdgPOY6Pay-#yH~~(Cli*}H#lt)97B&JojYFIcXTX_o zmdM$(pX0Zm>#b>9M9%k<7l>S_j&zmCMSk*Prd$G-!ewwdTme_YRuA`(+t~JMxCXYv z4iC4={agpv!%lUGgCaL5-VnKwm=i{f#ST_kUX+u(M%1MY;o;BL4F?uGl{ zet1BQeoW*+qKDvNcmy8xs6Twe9iB)hWjEi%lOlU)cnbEy(;jZ0JVWKPBG0k*JiOqS zyqNwz_xZ_}MPBivS4Cc<@AY(2jrVqVQ{*ky-iCMJUA6m%l)NYMKFJR}>Tl$=e8kp4S&Nw@UMqPv8EAaKqJV6#*hU~peZzi<{q*}v=(gJ z60)Hcw1zg&7TQ63=l~s|6Lf|y&=tBtcjy5&pZ|DPkp&#^z0Wc5-!C)8yLtz-? zLLLl<5ik-)!Dtu*V__VOhY2tdCc$Kw0#jicOox1!0Rd2Nocq8FU>3}VIS_X^A+oO(hEdeNOBRBz+xy>tPyPq(Nb6j%V7nS!Ae*Kt0C;6UMKG=?u~TO%Ka$9 zS)!sDezJmOB~*!KvbNSQQIn3C8K=?$8>(SFBt%R4?fn1qeoJ!X-+_XN>7;6BS$f<^ z)&>kK7%&p+jF^#{6R~S7Cy}ZPnn^nxv7<(yv?QlVZBBNm)G{3-np5KFj*$$;?1=7| zwpAC5DV>_AQI#LqpR;%C&I5%p+o~kBdzqsWC5LzII~3A4hDDG NA{tJbn~WXZ{{zLA!eRgb literal 0 HcmV?d00001 diff --git a/testing/btest/Files/mmdb/README b/testing/btest/Files/mmdb/README new file mode 100644 index 0000000000..269a36c045 --- /dev/null +++ b/testing/btest/Files/mmdb/README @@ -0,0 +1,13 @@ +These .mmdb databases were created with the mmdbwriter from MaxMind [1] for +testing purposes. See the main.go file. They only contain information about +LBL's network ranges: + + 128.3.0.0/16 + 131.243.0.0/16 + +Rebuild with: + + go build + ./testmmdb + +[1] https://github.com/maxmind/mmdbwriter diff --git a/testing/btest/Files/mmdb/go.mod b/testing/btest/Files/mmdb/go.mod new file mode 100644 index 0000000000..5aa1c9679c --- /dev/null +++ b/testing/btest/Files/mmdb/go.mod @@ -0,0 +1,11 @@ +module testmmdb + +go 1.21.0 + +require github.com/maxmind/mmdbwriter v1.0.0 + +require ( + github.com/oschwald/maxminddb-golang v1.12.0 // indirect + go4.org/netipx v0.0.0-20220812043211-3cc044ffd68d // indirect + golang.org/x/sys v0.10.0 // indirect +) diff --git a/testing/btest/Files/mmdb/go.sum b/testing/btest/Files/mmdb/go.sum new file mode 100644 index 0000000000..a7e4aa9667 --- /dev/null +++ b/testing/btest/Files/mmdb/go.sum @@ -0,0 +1,16 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/maxmind/mmdbwriter v1.0.0 h1:bieL4P6yaYaHvbtLSwnKtEvScUKKD6jcKaLiTM3WSMw= +github.com/maxmind/mmdbwriter v1.0.0/go.mod h1:noBMCUtyN5PUQ4H8ikkOvGSHhzhLok51fON2hcrpKj8= +github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs= +github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +go4.org/netipx v0.0.0-20220812043211-3cc044ffd68d h1:ggxwEf5eu0l8v+87VhX1czFh8zJul3hK16Gmruxn7hw= +go4.org/netipx v0.0.0-20220812043211-3cc044ffd68d/go.mod h1:tgPU4N2u9RByaTN3NC2p9xOzyFpte4jYwsIIRF7XlSc= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/testing/btest/Files/mmdb/main.go b/testing/btest/Files/mmdb/main.go new file mode 100644 index 0000000000..ecad3ea8db --- /dev/null +++ b/testing/btest/Files/mmdb/main.go @@ -0,0 +1,71 @@ +// 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) + } + defer fh.Close() + + _, err = writer.WriteTo(fh) + if err != nil { + log.Fatal(err) + } +} + +func main() { + _, net1, _ := net.ParseCIDR("128.3.0.0/16") + _, net2, _ := net.ParseCIDR("131.243.0.0/16") + + // The ASN record. + asn_record := mmdbtype.Map{} + asn_record["autonomous_system_number"] = mmdbtype.Uint32(16) + asn_record["autonomous_system_organization"] = mmdbtype.String("Lawrence Berkeley National Laboratory") + writeDb("GeoLite2-ASN.mmdb", "My-ASN-DB", asn_record, net1, net2) + + // The Location record. + loc_record := 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", loc_record, net1, net2) +}