From: Aki Tuomi Date: Wed, 3 Jan 2018 21:36:16 +0000 (+0200) Subject: geoipbackend: Add mmdb support for regression test X-Git-Tag: dnsdist-1.3.0~85^2~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bfb22bf583a97e31e4acfc3fff58ecbdff5c36c5;p=pdns geoipbackend: Add mmdb support for regression test --- diff --git a/.gitignore b/.gitignore index b96b924d4..a2c07bf03 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ pdns_recursor.pid *.gcno *.gcov modules/geoipbackend/regression-tests/GeoLiteCity.dat +modules/geoipbackend/regression-tests/GeoLiteCity.mmdb diff --git a/modules/geoipbackend/regression-tests/GeoLiteCity.mmdb.b64 b/modules/geoipbackend/regression-tests/GeoLiteCity.mmdb.b64 new file mode 100644 index 000000000..bee561f26 --- /dev/null +++ b/modules/geoipbackend/regression-tests/GeoLiteCity.mmdb.b64 @@ -0,0 +1,33 @@ +AAABAAAAoAAAAgAAAKAAAAMAAACgAAAEAAAAoAAABQAAAKAAAAYAAACgAAAHAAAAoAAACAAAAKAA +AAkAAACgAAAKAAAAoAAACwAAAKAAAAwAAACgAAANAAAAoAAADgAAAKAAAA8AAACgAAAQAAAAoAAA +EQAAAKAAABIAAACgAAATAAAAoAAAFAAAAKAAABUAAACgAAAWAAAAoAAAFwAAAKAAABgAAACgAAAZ +AAAAoAAAGgAAAKAAABsAAACgAAAcAAAAoAAAHQAAAKAAAB4AAACgAAAfAAAAoAAAIAAAAKAAACEA +AACgAAAiAAAAoAAAIwAAAKAAACQAAACgAAAlAAAAoAAAJgAAAKAAACcAAACgAAAoAAAAoAAAKQAA +AKAAACoAAACgAAArAAAAoAAALAAAAKAAAC0AAACgAAAuAAAAoAAALwAAAKAAADAAAACgAAAxAAAA +oAAAMgAAAKAAADMAAACgAAA0AAAAoAAANQAAAKAAADYAAACgAAA3AAAAoAAAOAAAAKAAADkAAACg +AAA6AAAAoAAAOwAAAKAAADwAAACgAAA9AAAAoAAAPgAAAKAAAD8AAACgAABAAAAAoAAAQQAAAKAA +AEIAAACgAABDAAAAoAAARAAAAKAAAEUAAACgAABGAAAAoAAARwAAAKAAAEgAAACgAABJAAAAoAAA +SgAAAKAAAEsAAACgAABMAAAAoAAATQAAAKAAAE4AAACgAABPAAAAoAAAUAAAAKAAAFEAAACgAABS +AAAAoAAAUwAAAKAAAFQAAACgAABVAAAAoAAAVgAAAKAAAFcAAACgAABYAAAAoAAAWQAAAKAAAFoA +AACgAABbAAAAoAAAXAAAAKAAAF0AAACgAABeAAAAoAAAXwAAAKAAAGAAAACgAABhAAAAoAAAYgAA +AIEAAGMAAACgAABkAAAAoAAAZQAAAKAAAGYAAACgAABnAAAAoAAAoAAAAGgAAGkAAACgAABqAAAA +oAAAawAAAKAAAGwAAACgAABtAAAAoAAAbgAAAKAAAG8AAAB4AACgAAAAcAAAcQAAAKAAAHIAAACg +AABzAAAAoAAAdAAAAKAAAHUAAACgAAB2AAAAoAAAdwAAAKAAAKAAAACwAAB5AAAAoAAAegAAAKAA +AHsAAACgAAB8AAAAoAAAfQAAAKAAAH4AAACgAAB/AAAAoAAAoAAAAIAAAKAAAAFsAACgAAAAggAA +oAAAAIMAAKAAAACEAACgAAAAhQAAoAAAAIYAAKAAAACHAACIAAAAoAAAiQAAAKAAAIoAAACgAACL +AAAAoAAAjAAAAKAAAI0AAACgAACOAAAAoAAAjwAAAKAAAJAAAACgAACRAAAAoAAAkgAAAKAAAJMA +AACgAACUAAAAoAAAlQAAAKAAAJYAAACgAACXAAAAoAAAmAAAAKAAAJkAAACgAACaAAAAoAAAmwAA +AKAAAJwAAACgAACdAAAAoAAAngAAAJ8AAKAAAAHmAAIwAAACbwAAAAAAAAAAAAAAAAAAAADkRGNp +dHniSmdlb25hbWVfaWTDINUmRW5hbWVz4UJlbkhSZXNlYXJjaEljb250aW5lbnTjRGNvZGVCT0Mg +B8Nfci8gFuFCZW5HT2NlYW5pYUdjb3VudHJ54yAHwx+zEEhpc29fY29kZUJBVSAW4UJlbklBdXN0 +cmFsaWFIbG9jYXRpb27jT2FjY3VyYWN5X3JhZGl1c6EBSGxhdGl0dWRlaD/wAAAAAAAASWxvbmdp +dHVkZWg/8AAAAAAAAOQgAeIgB8NYkRIgFuFCZW5ITXVraWx0ZW8gKeMgNEJOQSAHw19yLSAW4UJl +bk1Ob3J0aCBBbWVyaWNhIFDjIAfDX2XhIF9CVVMgFuFCZW5NVW5pdGVkIFN0YXRlcyB74yCFoQEg +l2hAR/TdLxqfviCpaMBek3gDRtxd4yAB4iAHwQEgFuFCZW5CQzEgUOMgB8EBIF9CTzEgFuFCZW5D +TyAxTHN1YmRpdmlzaW9ucwEE4yAHwQEgX0JMMSAW4UJlbkNMIDHjIAHiIAfBAiAW4UJlbkJDMiBQ +4yAHwQIgX0JPMSAW4UJlbkNPIDIhXQEE4yAHwQIgX0JMMiAW4UJlbkNMIDLjIAHiIAfBAyAW4UJl +bkJDMyBQ4yAHwQMgX0JPMSAW4UJlbkNPIDMhXQEE4yAHwQMgX0JMMyAW4UJlbkNMIDOrze9NYXhN +aW5kLmNvbelbYmluYXJ5X2Zvcm1hdF9tYWpvcl92ZXJzaW9uoQJbYmluYXJ5X2Zvcm1hdF9taW5v +cl92ZXJzaW9uoEtidWlsZF9lcG9jaAQCWk1MMk1kYXRhYmFzZV90eXBlTEdlb0NpdHktTGl0ZUtk +ZXNjcmlwdGlvbuFCZW5TTW9jayBnZW9pcCBkYXRhYmFzZUppcF92ZXJzaW9uoQZJbGFuZ3VhZ2Vz +AQRCZW5Kbm9kZV9jb3VudMGgS3JlY29yZF9zaXploRw= diff --git a/modules/geoipbackend/regression-tests/write-mmdb.pl b/modules/geoipbackend/regression-tests/write-mmdb.pl new file mode 100644 index 000000000..9a7d1c1c6 --- /dev/null +++ b/modules/geoipbackend/regression-tests/write-mmdb.pl @@ -0,0 +1,77 @@ +use MaxMind::DB::Writer::Tree; + +my %types = ( + city => 'map', + names => 'map', + en => 'utf8_string', + geoname_id => 'uint32', + location => 'map', + latitude => 'double', + longitude => 'double', + accuracy_radius => 'uint16', + continent => 'map', + country => 'map', + code => 'utf8_string', + iso_code => 'utf8_string', + subdivisions => ['array', 'map'], +); + +my $tree = MaxMind::DB::Writer::Tree->new( + ip_version => 6, + record_size => 28, + database_type => 'GeoCity-Lite', + languages => ['en'], + description => { en => 'Mock geoip database' }, + map_key_type_callback => sub { $types{ $_[0] } }, + remove_reserved_networks => 0, +); + +$tree->insert_network( + '1.1.1.0/24', + { + 'city' => { "geoname_id" => 2151718, "names" => { "en" => "Research" } }, + 'continent' => { "code" => "OC", "geoname_id" => 6255151, "names" => { "en" => "Oceania" } }, + 'country' => { "geoname_id" => 2077456, "iso_code" => "AU", "names" => { "en" => "Australia" } }, + 'location' => { "latitude" => 1.0, "longitude" => 1.0, accuracy_radius => 1 }, + } +); + +$tree->insert_network( + '1.2.3.0/24', + { + 'city' => { "geoname_id" => 5804306, "names" => { "en" => "Mukilteo" } }, + 'continent' => { "code" => "NA", "geoname_id" => 6255149, "names" => { "en" => "North America" } }, + 'country' => { "geoname_id" => 6252001, "iso_code" => "US", "names" => { "en" => "United States" } }, + 'location' => { "latitude" => 47.913000, "longitude" => -122.304200, accuracy_radius => 1 }, + } +); + +$tree->insert_network( + '127.0.0.1/32', + { + 'country' => { "geoname_id" => 1, "iso_code" => "O1", "names" => { "en" => "O 1" } }, + 'city' => { "geoname_id" => 1, "names" => { "en" => "C1" } }, + 'subdivisions' => [{ "geoname_id" => 1, "iso_code" => "L1", "names" => { "en" => "L 1" } }], + } +); + +$tree->insert_network( + '127.0.0.2/32', + { + 'country' => { "geoname_id" => 2, "iso_code" => "O1", "names" => { "en" => "O 2" } }, + 'subdivisions' => [{ "geoname_id" => 2, "iso_code" => "L2", "names" => { "en" => "L 2" } }], + 'city' => { "geoname_id" => 2, "names" => { "en" => "C2" } }, + } +); + +$tree->insert_network( + '127.0.0.3/32', + { + 'country' => { "geoname_id" => 3, "iso_code" => "O1", "names" => { "en" => "O 3" } }, + 'subdivisions' => [{ "geoname_id" => 3, "iso_code" => "L3", "names" => { "en" => "L 3" } }], + 'city' => { "geoname_id" => 3, "names" => { "en" => "C3" } }, + } +); + +open my $fh, '>:raw', 'GeoLiteCity.mmdb'; +$tree->write_tree($fh); diff --git a/regression-tests/backends/geoip-master b/regression-tests/backends/geoip-master index a6a1456e2..fe35442ca 100644 --- a/regression-tests/backends/geoip-master +++ b/regression-tests/backends/geoip-master @@ -84,6 +84,7 @@ EOF fi base64 -d < $testsdir/GeoLiteCity.dat.b64 > $testsdir/GeoLiteCity.dat + base64 -d < $testsdir/GeoLiteCity.mmdb.b64 > $testsdir/GeoLiteCity.mmdb geoipdatabase=${geoipdatabase:-$testsdir/GeoLiteCity.dat}