Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

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

 GeoCity_Updater_1.02.rar ( 2.38 мегабайт ) : 92

 geocity_1.01.7z ( 1.94 мегабайт ) : 93

 geocity_1.00.7z ( 1.94 мегабайт ) : 230


Класс php для работы с GeoCity:  php_geocity.rar ( 3.67 килобайт ) : 32


Скрипты, использующие модуль GeoCity:
http://mydc.ru/topic2360.html

Автор: mariner 5.1.2010, 2:02

 geocity.zip ( 74.29 килобайт ) : 52


обновлятор. Проверял на убунте. Пока "бета версия" Дальше сделаю пакет для 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, я понял, а вот дальше ступил big_smile1.gif
подумал, раз уже переделал обновлялку для линуха, то и луа-скрипт адаптировал))



P.S. liblua5.х-sql в gentoo нет. Буду думать, может, найду где-то.

Автор: alex82 20.9.2010, 12:08

Доступна версия 1.01. Подробности в первом посте.

PS. Чуть позже выложу класс php для работы с GeoCity.

Автор: alex82 5.10.2010, 2:03

У меня вопрос к форумчанам. Найдутся ли добровольцы, знающие географию России, и желающие помочь проекту?

Если да - обьясню суть проблемы подробнее.

Добровольцы могут отписываться в этой теме.

Автор: Setuper 5.10.2010, 7:16

а собственно в чем проблема то?

 locations.rar ( 291.07 килобайт ) : 13

Автор: alex82 5.10.2010, 17:48

Таки выложил обещанный класс php. В архиве также имеется тестовый скрипт.

Подробности в первом посте.

Автор: alex82 15.10.2010, 10:16

Доступен GeoCity Updater 1.02

Изменения:

Переписан интерфейс программы.
Теперь утилита умеет самостоятельно скачивать архив с базами данных.
Добавлена функция уплотнения БД, позволяющая удалить информацию о городах для определенных стран.
Добавлена возможность перевода названий городов (В текущей версии переводятся только города Украины и России).
Утилита совместима с модулем GeoCity 1.01, и не совместима с версией 1.00