Странные записи в redirector.err

Обсуждение программы редиректора
Slonic
Сообщения: 11
Зарегистрирован: Пн окт 29, 2007 14:58

Сообщение Slonic »

постараюсь проверить в ближайшее время...


PS: Если исходить из ограничений vars.h и parse_urls.c, то максимальная длинна url получается равной ML_PROTOKOL + ML_DIRS + ML_PORT + 2LD + ML_SUBDOMEN = 1454

Slonic
Сообщения: 11
Зарегистрирован: Пн окт 29, 2007 14:58

Сообщение Slonic »

пересобрал rejik с такими параметрами
#define ML_URL 4096

#define ML_PROTOKOL 20
#define ML_DIRS 3666
#define ML_PORT 10
#define ML_2LD 200
#define ML_SUBDOMEN 200
проверил check-redirector`ом вышеозначенные ограничения, генерируя url с превышением оных. Отработало правильно. Буду тестить на живых людях :) Если возникнут проблемы - отпишусь в этой теме.

PS: Если я хочу, чтобы url ни при каких обстоятельствах не проходили мимо правил rejika, достаточно изменить в redirector.c “printf ("%s",str)”
// If error in convert
printf ("%s",str); -- это пропуск объекта
fflush(stdout);
sprintf(etmp,"Error convert input string to input structure str=%s",str);
err_mes(etmp);
continue;
или есть еще лазейки? Ведь получается, что если у пользователя есть домен с длиной имени 210 символов, то он может спокойно работать с ним, не обращая внимания на ограничения режика?

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Сообщение Slava »

Думаю достаточно.
Попробуйте зарегистрировать домен в 210 символов.

Slonic
Сообщения: 11
Зарегистрирован: Пн окт 29, 2007 14:58

Сообщение Slonic »

Slava писал(а):Попробуйте зарегистрировать домен в 210 символов.
ну второго уровня не дадут, но с поддоменами уже такого жесткого контроля нет :)

Slonic
Сообщения: 11
Зарегистрирован: Пн окт 29, 2007 14:58

Сообщение Slonic »

У меня опять проблемы :( Пересобрал режик изменив printf ("%s",str) на printf ("http://192.168.1.1/img/1x1.gif 127.0.0.1/- - GET");. Добавил правило запрещающее заход на сайт указанный ниже.
Захожу на сайт

http://www.public-organization-capital- ... s-welcomes
-all-inhabitants.of-the-planet-and-invites-them-to-visit-our-ancient-city.yours-faithfully-chairman
-of-government-anatolij-kosjanchuk.epak.infocom.lviv.ua/a.htm


В redirector.err
REDIRECTOR: WARNING: Can't parse url: http://www.public-organi
zation-capital-of-the-world.which-establishes-world-records-welcomes-all-inhabitants.of-th
e-planet-and-invites-them-to-visit-our-ancient-city.yours-faithfully-chairman-of-governmen
t-anatolij-kosjanchuk.epak.infocom.lviv.ua/a.htm. Pass.

В redirector.log пусто. Страница замечательно открывается минуя правила :(

PS:url порезал, чтоб текст не расползался.

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Сообщение Slava »

Значит размер буфера все равно меньше данных.

Проверка в redirector.c:

Код: Выделить всё

           // Check for allow_urls
           #ifdef CASE_INDEPENDENT
           z=parse_urls(i_url,input_url_uc);
           if (z<0)
           {
            sprintf(etmp, "REDIRECTOR: WARNING: Can't parse url: %s. Pass.",input_url_uc);
            err_mes(etmp);
            pass();
            continue;
           }
           #else
           z=parse_urls(i_url,input_url_un);
           if (z<0)
           {
            sprintf(etmp, "REDIRECTOR: WARNING: Can't parse url: %s. Pass.",input_url_un);
            err_mes(etmp);
            pass();
            continue;
           }
           #endif

Можно вместо pass(); вписать printf ("http://192.168.1.1/img/1x1.gif 127.0.0.1/- - GET");

Что бы было понятнее, сделайте check-redirector с этим длинным урлом, раскоментарьте в vars.h DEBUG_PARSE_URL и DEBUG_CYCLE и запускайте check-redirecor.

Учтите, при включённых DEBUG переменных, режик будет выдавать на стандартный выход отладочную информацию. Если его в таком виде подключить к сквиду, то работать не будет.

Slonic
Сообщения: 11
Зарегистрирован: Пн окт 29, 2007 14:58

Сообщение Slonic »

Заменил все pass(). Погонял в дебаг режиме и в боевой версии. Все работает отлично. Большое спасибо за ответы.

SwitchOFF
Сообщения: 4
Зарегистрирован: Чт мар 06, 2008 9:58

Сообщение SwitchOFF »

Подниму старую тему.
Я правильно понимаю, что сейчас, если режик получает строку длиннее, чем может проверить, он ее просто пропускает?
Или все-таки проверяет ее по первым ML_XXX символам?

SwitchOFF
Сообщения: 4
Зарегистрирован: Чт мар 06, 2008 9:58

Сообщение SwitchOFF »

Проверил, пропускает.
http://mail.ru?q=qqqqqqqqq&q=qqqqqqqqq&........(до максимальной длины)
прекрасно открывается.
В чем проблема обрезать строку до максимально допустимой длины и проверить ее?

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Сообщение Slava »

SwitchOFF писал(а): В чем проблема обрезать строку до максимально допустимой длины и проверить ее?
Ни в чем, обрезайте.

SwitchOFF
Сообщения: 4
Зарегистрирован: Чт мар 06, 2008 9:58

Сообщение SwitchOFF »

Хм... Это меня так послали? :?
Ну спасибо...

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Сообщение Slava »

SwitchOFF писал(а):Хм... Это меня так послали? :?
Ну спасибо...
Это я так предложил модифицировать код, сделать его лучше, для Вас.

Ответить