MyDC.ru _ Программирование на Lua _ Модуль GeoCity
Автор: alex82 23.8.2009, 7:30
Модуль GeoCity
Версия: 1.00 Системные требования: Lua 5.1, MySQL 4.1 или новее Автор: alex82
Описание: Данный модуль предназначен для получения информации о местоположении IP-адреса с точностью до города. В качестве источника информации используется база данных GeoLite City, хранящаяся в бд MySQL. Дистрибутив модуля также включает в себя набор утилит, необходимых для его установки.
Установка модуля:
Для PtokaX: 1. Извлечь файл geocity.lua в папку libs, в папку scripts/libs, или в корневую папку PtokaX. 2. Открыть файл geocity.lua в блокноте, и прописать имя БД, имя пользователя и пароль.
Для Lua-AIO: 1. Извлечь файл geocity.lua в папку lib, или в корневую папку программы. 2. Открыть файл geocity.lua в блокноте, и прописать имя БД, имя пользователя и пароль.
Установка базы данных:
1. Скачать базу данных GeoLite City отсюда - http://mydc.ru/r/?http://www.maxmind.com/app/geolitecity. 2. Распаковать файлы GeoLiteCity-Blocks.csv и GeoLiteCity-Location.csv в папку geocity. 3. Создать базу данных в MySQL. 4. Открыть файл config.lua (находится в папке tools) и прописать имя БД, имя пользователя и пароль. 5. Запустить GeoCity Updater и нажать "Пуск"
Функции модуля
geocity.GetInfo(sIP or iIP) - Возвращает информацию об указанном IP-адресе. В случае успешного вызова возвращается двухбуквенный код страны и название города. В случае неудачи возвращается nil.
geocity.GetFullInfo(sIP or iIP) - Возвращает информацию об указанном IP-адресе. В случае успешного вызова возвращается таблица, которая может содержать поля loc_id, country, region, city, postal, lat, long. В случае неудачи возвращается nil.
geocity.GetLocId(sIP or iIP) - Возвращает Location ID для указанного IP-адреса. В случае неудачи возвращает nil.
geocity.GetInfoById(sLocID or iLocID) - Возвращает информацию о Location ID. В случае успешного вызова возвращается двухбуквенный код страны и название города. В случае неудачи возвращается nil.
geocity.GetFullInfoById(sLocID or iLocID) - Возвращает информацию о Location ID. В случае успешного вызова возвращается таблица, которая может содержать поля loc_id, country, region, city, postal, lat, long. В случае неудачи возвращается nil.
geocity.GetCountry(sCountryCode) - Возвращает название страны, соответствующее её двухбуквенному коду. В случае неудачи возвращает nil.
geocity.GetRegion(sCountryCode, sRegion) - Возвращает название региона. В случае неудачи возвращает nil.
geocity.Check() - Проверяет наличие соединения с MySQL, и, при необходимости, восстанавливает его. Если соединение имеется, или было восстановлено, возвращает true. В случае неудачи возвращает nil
Описание утилит
GeoCity Updater Предназначена для импорта базы данных GeoLite City, а также информации о странах и регионах, в БД MySQL.
GeoCity Test Небльшая программа для тестирования модуля GeoCity.
Country Select Программа, предназначенная для уменьшеня размера базы данных GeoLite City путем удаления из неё ненужной информации о странах.
Get Ranges Программа позволяет получить список диапазонов, отсутствующих в базе данных GeoLite City
Changelog
1.01
Изменен формат хранения названий регионов, благодаря чему упростился код выборки данных из соответствующей таблицы Названия стран теперь хранятся в таблице Lua
обновлятор. Проверял на убунте. Пока "бета версия" Дальше сделаю пакет для debian\ubuntu и установщик для других unix-систем
Автор: mariner 21.2.2010, 16:01
UP!
Работоспособность скрипта обновления из shell подтверждена. Но есть запрос в скрип обновления(добавления) базы. Хотелось бы опцию включения-выключения логирования и опцию куда складывать лог (то бишь директория). У меня все.
Автор: LoT 23.2.2010, 17:12
mariner Спасибо, на gentoo тоже все заработало, только... не до конца)) выкидывает ошибку об отсутствии luasql Есть ли вариант написать то же самн, только заменить функции работы с бд на стандартные VH:SQLQuery ? Или просто напиши))) пару строчек примера, дальше сам разберусь.
Зараннее спасибо)
Автор: mariner 23.2.2010, 17:14
Скрипт не мой, собственно. Я написал лишь shell-обертку, чтобы запускать из консоли. Думаю в генту есть таки liblua5.1-sql. Собери. Это привнесет как поддержку mysql в PtokaX, так и в shell-интерпретатор
Автор: Setuper 23.2.2010, 17:27
Вы про разное говорите. Один про верли, другой про птоху))))
Автор: mariner 23.2.2010, 17:29
То то меня напрягло VH: ^_^
Автор: LoT 23.2.2010, 19:02
mariner, ну, то что скрипт написал не ты, а только shell, я понял, а вот дальше ступил подумал, раз уже переделал обновлялку для линуха, то и луа-скрипт адаптировал))
P.S. liblua5.х-sql в gentoo нет. Буду думать, может, найду где-то.
Автор: alex82 20.9.2010, 12:08
Доступна версия 1.01. Подробности в первом посте.
PS. Чуть позже выложу класс php для работы с GeoCity.
Автор: alex82 5.10.2010, 2:03
У меня вопрос к форумчанам. Найдутся ли добровольцы, знающие географию России, и желающие помочь проекту?
Таки выложил обещанный класс php. В архиве также имеется тестовый скрипт.
Подробности в первом посте.
Автор: alex82 15.10.2010, 10:16
Доступен GeoCity Updater 1.02
Изменения:
Переписан интерфейс программы. Теперь утилита умеет самостоятельно скачивать архив с базами данных. Добавлена функция уплотнения БД, позволяющая удалить информацию о городах для определенных стран. Добавлена возможность перевода названий городов (В текущей версии переводятся только города Украины и России).
Утилита совместима с модулем GeoCity 1.01, и не совместима с версией 1.00