[ Сообщений: 4 ] 
Начать новую тему Ответить на тему
Автор Сообщение
СообщениеДобавлено: 13 июл 2010, 12:56 
Аватара пользователя

Сообщения: 28
Поблагодарили: 1 раз.
Строка из базы айпи адресов по странам
20971520,"23068671","AU","AUS","AUSTRALIA"
Что обозначают 20971520,"23068671" ? Какой диапазон айпи адресов?

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 июл 2010, 17:01 
Эксперт
Аватара пользователя

Сообщения: 2192
Поблагодарили: 2 раз.
inline, программисты интересуются, где вы такое нашли.
Говорят, это не наш формат.

_________________
Денис Иванов, экс-Миксмаркет
upyrj@ya.ru

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 июл 2010, 17:11 
Аватара пользователя

Сообщения: 28
Поблагодарили: 1 раз.
http://mixmarket.biz/geohelp.doc
http://ip-to-country.webhosting.info/do ... ry.csv.zip

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 июл 2010, 17:39 
Сотрудник Миксмаркета
Аватара пользователя

Сообщения: 79
Поблагодарили: 1 раз.
inline, вы можете воспользоваться скриптом
Код:
#!/usr/bin/perl -w

# (c) Andrei Nigmatulin, 2005
#
# this script provided "as is", without any warranties. use it at your own risk.
#
# special thanx to Andrew Sitnikov for perl port
#
# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country)
# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx)
#
# for example, line with ip range
#
#   "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation"
#
# will be converted to four subnetworks:
#
#   62.16.68.0/22 RU;
#   62.16.72.0/21 RU;
#   62.16.80.0/20 RU;
#   62.16.96.0/19 RU;


use warnings;
use strict;

while( <STDIN> ){
   if (/"([^"]+)","([^"]+)","([^"]+)"/){
      print_subnets($1, $2, $3);
   }
}

sub  print_subnets {
   my ($a1, $a2, $c) = @_;
   my $l;
    while ($a1 <= $a2) {
      for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){};
      print long2ip($a1) . "/" . (32 - $l) . ":" . $c . ";\n";
       $a1 += (1 << $l);
   }
}

sub long2ip {
   my $ip = shift;

   my $str = 0;

   $str = ($ip & 255);

   $ip >>= 8;
   $str = ($ip & 255).".$str";

   $ip >>= 8;
   $str = ($ip & 255).".$str";

   $ip >>= 8;
   $str = ($ip & 255).".$str";
}


и перевести исходную базу в формат, подходящий для nginx

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему
 [ Сообщений: 4 ] 



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
cron


О проекте Новости Пресса о нас Сотрудничество Вакансии Контакты
2005–2011 Партнерская сеть Миксмаркет
Разработка сайта — iji-design / AdLabs
Powered by phpBB Group