ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] mod_geo =?KOI8-R?Q?=C9_mod=5Frealip?=




Alex Tutubalin wrote:

>>Надо просто, чтобы mod_realip был раньше в списке модулей,
>>чтобы он восстановил нужную переменную REMOTE_IP раньше, чем ее
>>прочитает mod_geo.
>>
>>Т.е. если они static, то надо пересобирать апач так, чтобы mod_realip был
>>раньше, если DSO, то просто загрузить раньше.
> 
> mod_geo использует r->connection->remote_addr.sin_addr.s_addr;
> 
> Причем делает это дважды  - на post-read (добавляя переменную в enviroment,
> дабы все прочие модули могли ее использовать) и на fixup (добавляя аргумент
> к query-string). По прикидкам, patricia lookup быстрее, чем линейный
> поиск в enviroment :)
> 
> Если realip правит именно это место, то ваша рекомендация сработает
> (при условии работы realip на post-read, а не позже).

нет, перестановка не помогла, ибо сказано в README к mod_realip:
"Модуль изменяет IP адрес клиента в поле r->connection->remote_ip
..
Нужно заметить, что эта замена никак не влияет на модули mod_access и
mod_status, поскольку они используют поле r->connection->remote_addr."

> 
> Если просто выставляет $REMOTE_IP более правильно, то нужно mod_geo
> похачить, заменив вышеупомянутую конструкцию на inet_aton(значение переменной)

mod_realip действительно работает на post-read, но попытка подправить
mod_geo пока не увенчалась успехом, замена
p.add.sin.s_addr = r->connection->remote_addr.sin_addr.s_addr;
на inet_aton(p.add.sin.s_addr , r->connection->remote_ip);
в static int geo_postread(request_rec *r)
приводит к странным результатам, придется учить матчасть :)

> 
> Алексей Тутубалин
> mailto: lexa@lexa.ru
> Web: http://www.lexa.ru/lexa 
> 

BR




 




Copyright © Lexa Software, 1996-2009.