cl-maxminddb
В общем, нужно было делать запрос к базам MaxMind. Не нашёл ничего вменяемого под CL. Хотел было быстренько сделать биндинги к си библиотеке, но там были передачи значений на стеке, что-то я запутался и подумал, что можно и нативно налабать. В общем, накидал. Читает, правда без всякой обработки ошибок в том плане, что версия БД и т.д. прочие вещи, которые можно было бы сделать. Но он работает. :) Вот код. Собственно, небольшой пример:
> (with-mmdb (mmdb "/var/lib/GeoIP/GeoLite2-City.mmdb")
(mmdb-query mmdb "8.8.8.8"))
(("continent" ("code" . "NA") ("geoname_id" . 6255149)
("names" ("de" . "Nordamerika") ("en" . "North America")
("es" . "Norteamérica") ("fr" . "Amérique du Nord") ("ja" . "北アメリカ")
("pt-BR" . "América do Norte") ("ru" . "Северная Америка")
("zh-CN" . "北美洲")))
("country" ("geoname_id" . 6252001) ("iso_code" . "US")
("names" ("de" . "USA") ("en" . "United States") ("es" . "Estados Unidos")
("fr" . "États-Unis") ("ja" . "アメリカ合衆国") ("pt-BR" . "Estados Unidos")
("ru" . "США") ("zh-CN" . "美国")))
("location" ("accuracy_radius" . 1000) ("latitude" . 37.751d0)
("longitude" . -97.822d0) ("time_zone" . "America/Chicago"))
("registered_country" ("geoname_id" . 6252001) ("iso_code" . "US")
("names" ("de" . "USA") ("en" . "United States") ("es" . "Estados Unidos")
("fr" . "États-Unis") ("ja" . "アメリカ合衆国") ("pt-BR" . "Estados Unidos")
("ru" . "США") ("zh-CN" . "美国"))))
Комментариев нет:
Отправить комментарий