asha Опубликовано 25 августа, 2004 Поделиться Опубликовано 25 августа, 2004 В общем, кто знает 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 поможите, ЫЫЫЫ... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sevat Опубликовано 25 августа, 2004 Поделиться Опубликовано 25 августа, 2004 ну а чего на автомате-то патчем не получается? я ж тебе написал, что ibfix'ом все это уже прошил на двух ib-форумах с русским лангпаком. я перл хреново знаю, но тут, кажется все понятно. это скорее всего session id (sid) обрабатывается регулярным выражением $sid =~ s/^(\d+)$/$1/; "=~" - это результат обработки левой части правым выражением с последующей записью результата в левую переменную, т.е. перл не может записать в $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} это же, обработанное следующим регулярным выражением s/^([\d\w]+)$/$1/ смусл тут в коде разбираться, в общем, когда ошибка есть 'invalid lang cookie value' Неверная кука языка. Предлагаю новый модуль руссиш ланг пак поставить и его дефолтным сделать или, как вариант (для теста), попробовать откатиться назад, но я (снова повторюсь) сильно сомневаюсь, что дело именно в русском пакете. Может он просто встал криво? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
CyberDem0n Опубликовано 25 августа, 2004 Поделиться Опубликовано 25 августа, 2004 $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/ or die 'invalid lang cookie value'; Это выражение выполняется для строки которая содержит только буквы, цифры и знак подчёркивания ("_"). В нашей строке ("LANG-2") есть знак минус ("-"), который не подходит под этот рекэксп, поэтому вылетает 'invalid lang cookie value'... Чтобы пофиксить - нужно посмотреть код подробней, а у меня его сейчас под рукой нет. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
asha Опубликовано 25 августа, 2004 Автор Поделиться Опубликовано 25 августа, 2004 ну а здесь не получается. пришли мне тот 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> подождем, как теперь всхачат Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sevat Опубликовано 25 августа, 2004 Поделиться Опубликовано 25 августа, 2004 Ларри Уолл придумал Perl, но регулярные выражения, кажется, далеко не только в нем используются, т.е. убивать на месте надо кого-то другого кстати, ^ и $ - это, вроде, начало и конец слова (а не строки), т.е. нечто имеющее пробелы (переносы строки) с обеих сторон. Если бы это началом и концом строки было - все бы работало. Если убрать оба эти символа из кода, то LANG-2 будет просто превращаться в LANG в cookie после обсуждаемого фрагмента кода и язык, получается, всегда будет в этом месте сбрасываться обратно на английский. ну его нафиг, в общем хорошо, что все пашет и что на форуме есть собственные силы решать такие задачи. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
asha Опубликовано 25 августа, 2004 Автор Поделиться Опубликовано 25 августа, 2004 а вот здесь http://docs.com.ru/perl_1_6.phphttp://docs...ru/perl_1_6.php написано, что конец строки. сиравно, не хотю больше с этим гимором хотя бы севодня возица. да эсли ево придумал этот лари уол или там лари флинт. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
CyberDem0n Опубликовано 26 августа, 2004 Поделиться Опубликовано 26 августа, 2004 asha, ты забыл еще про квадратные скобочки написать, они обозначают перечисление. Так что в данном регэкспе можно смело убивать \d ;-) P.S.> perl rulezzz ;-) P.P.S.> what about mod_deflate ? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sevat Опубликовано 26 августа, 2004 Поделиться Опубликовано 26 августа, 2004 пришли мне тот ibfix, которым ты апдейтил, посмотрю, скорее всего что-то с ним. отправил мылом Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.