Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Dictionary<string, object> GetIPInfo(string IP, SxGeoInfoType InfoType)
- {
- Dictionary<string, object> data_city = new Dictionary<string, object>();
- Dictionary<string, object> data_country = new Dictionary<string, object>();
- Dictionary<string, object> data_region = new Dictionary<string, object>();
- if (!IsOpen)
- {
- ErrorMessage = "Database not open.";
- return null;
- }
- if (!IPConverter.IsIP(IP)) //проверяем IP ли это)
- {
- ErrorMessage = IP+" is not valid IP address.";
- return null;
- }
- //получаем ID IP-адреса
- uint ID = SearchID(IP);
- if (ID == 0) //не нашли
- {
- ErrorMessage = "Not found.";
- return null;
- }
- //создаем переменные для хранения ответа
- IPInfo = new Dictionary<string, object>();
- IPInfoTypes = new Dictionary<string, Type>();
- //добавляем сам адрес
- IPInfo.Add("ip", IP);
- IPInfoTypes.Add("ip", typeof(string));
- if (Header.IdLen == 1) //БД SxGeo, ничего кроме ISO-кода вывести не сможем
- {
- IPInfo.Add("country_iso", IdToIso(ID));
- IPInfoTypes.Add("country_iso", typeof(string));
- return IPInfo;
- }
- //БД SxGeoCountry, можем вывести много чего
- SxGeoUnpack Unpacker = null;
- byte[] buf = null;
- //если найденный 'ID' < размера справочника городов
- //город не найден - только страна
- if (ID < Header.CountrySize)
- {
- Unpacker = new SxGeoUnpack(Header.pack_country, Header.DBEncoding);
- buf = ReadDBDirs(Header.countries_begin, ID, Header.MaxCountry,cities_db);
- data_country = Unpacker.Unpack(buf);
- AddData(data_country, Unpacker.GetRecordTypes(), "country_");
- return IPInfo;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement