Jump to content
Sign in to follow this  
asha

ACHTUNG!!! Кто знает PERL

Recommended Posts

В общем, кто знает subj, просьба помочь разобраться.

пытаюсь поставить патч, чтобы не хакали.

есть проблема.

в общем, все сводится к следующему:

Suggested Fix :  

Sources/Lib/FUNC.pm, replace the line:

Code Sample  

 $sid =~ s/^(\d+)$/$1/;

 

with

Code Sample  

  if (length($sid) > 1)  

{  

$sid =~ s/^([\d\w]+)$/$1/

or die 'invalid sid value';

  }

 

AND :  

Find :

Code Sample  

$iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/;

 

replace with :

Code Sample  

if (length($iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'}) > 1) {

  $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/

      or die 'invalid lang cookie value';

}

 

После этих мероприятий начались проблемы: если у в настройках стоит русский langpack, то форум не работает. меняю в настройках на английский - начинает работать.

иначе пишет этот самый 'invalid lang cookie value'

подозреваю, что тут все просто, просто какая-то проверка, но т.к. не знаком с интаксисом перла - вопрос - как починить/что добавить в эти проверки.

З.Ы. Значение lang в cookie: LANG-2

поможите, ЫЫЫЫ...

Share this post


Link to post
Share on other sites

ну а чего на автомате-то патчем не получается? я ж тебе написал, что ibfix'ом все это уже прошил на двух ib-форумах с русским лангпаком.

я перл хреново знаю, но тут, кажется все понятно.

это скорее всего session id (sid) обрабатывается регулярным выражением

$sid =~ s/^(\d+)$/$1/;

"=~" - это результат обработки левой части правым выражением с последующей записью результата в левую переменную, т.е. перл не может записать в

$iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'}

это же, обработанное следующим регулярным выражением

s/^([\d\w]+)$/$1/

смусл тут в коде разбираться, в общем, когда ошибка есть 'invalid lang cookie value' Неверная кука языка. Предлагаю новый модуль руссиш ланг пак поставить и его дефолтным сделать или, как вариант (для теста), попробовать откатиться назад, но я (снова повторюсь) сильно сомневаюсь, что дело именно в русском пакете. Может он просто встал криво?

Share this post


Link to post
Share on other sites

$iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/

     or die 'invalid lang cookie value';

Это выражение выполняется для строки которая содержит только буквы, цифры и знак подчёркивания ("_"). В нашей строке ("LANG-2") есть знак минус ("-"), который не подходит под этот рекэксп, поэтому вылетает 'invalid lang cookie value'...

Чтобы пофиксить - нужно посмотреть код подробней, а у меня его сейчас под рукой нет.

Share this post


Link to post
Share on other sites

ну а здесь не получается. пришли мне тот ibfix, которым ты апдейтил, посмотрю, скорее всего что-то с ним.

thnx за помощь.

по любому сам разобрался уже. к этому момент патч успешно применен вручную с небольшими модификациями:

$iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w-]+)$/$1/

    or die 'invalid lang cookie value';

надеюсь, применил правильно, эта штуковина действительно ругалась на "минус" в лангпаке.

на sid не ругается - там все ок вроде бы.

<OFF>

того кто придумал этот censored perl убить мало на месте.

шаблон ^([\d\w]+)$

^ - начало строки

\d - одно цифра

\w - алфавитно-цифровой символ

+ - повторяется 1 или большее число раз

$ - конец строки

</OFF>

подождем, как теперь всхачат :)

Share this post


Link to post
Share on other sites

Ларри Уолл придумал Perl, но регулярные выражения, кажется, далеко не только в нем используются, т.е. убивать на месте надо кого-то другого :)

кстати, ^ и $ - это, вроде, начало и конец слова (а не строки), т.е. нечто имеющее пробелы (переносы строки) с обеих сторон. Если бы это началом и концом строки было - все бы работало. Если убрать оба эти символа из кода, то LANG-2 будет просто превращаться в LANG в cookie после обсуждаемого фрагмента кода и язык, получается, всегда будет в этом месте сбрасываться обратно на английский.

ну его нафиг, в общем :D

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

Share this post


Link to post
Share on other sites

а вот здесь

http://docs.com.ru/perl_1_6.phphttp://docs...ru/perl_1_6.php

написано, что конец строки.

сиравно, не хотю больше с этим гимором хотя бы севодня возица. да эсли ево придумал этот лари уол или там лари флинт.

Share this post


Link to post
Share on other sites

asha, ты забыл еще про квадратные скобочки написать, они обозначают перечисление. Так что в данном регэкспе можно смело убивать \d ;-)

P.S.> perl rulezzz ;-)

P.P.S.> what about mod_deflate ?

Share this post


Link to post
Share on other sites
пришли мне тот ibfix, которым ты апдейтил, посмотрю, скорее всего что-то с ним.

отправил мылом

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Интересные предложения

×
×
  • Create New...