Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Стандартный Антиспам-сервис IPB: "зависает" php-команда fgets()

Опубликовано:

Что имеем:

1) Срок активности лицензии истёк и как следствие, антиспам-фильтр от IP.Board не работает (не должен работать)

2) В настройках IP.Board включаем антиспам-фильтр (почему-то IP.Board разрешает это сделать при истёкшей лицензии)

 

Что получаем:

При попытке регистрации нового пользователя на странице регистрации (шаг 1) нажимаем кнопку "Регистрация" и... ждём 3 мин, после чего получаем от сервера ошибку "Internal Server Error"

Первое, что пришло в голову - бесконечный цикл где-то в глубинах исходных кодов IP.Board

 

Локализация причины

1) /admin/sources/base/ipsController.php => ipsController::init():

protected function init()
{
   $this->registry = ipsRegistry::instance();
   $this->registry->init();
}

2) /admin/sources/base/ipsController.php => ipsController::handleRequest():

self::$cmd->execute( $this->registry )

3) /admin/applications/core/modules_public/global/register.php => public_core_global_register::_completeRegistrationSave():

//-----------------------------------------
// Pass twitter/facebook via spam service
//-----------------------------------------
...
/* Query the service */
$spamCode = IPSMember::querySpamService( $member['email'] );

4) /admin/sources/base/ipsMember.php => IPSMember::querySpamService():

/* Query the service */
$response = $query->postFileContents( "https://remoteservices.invisionpower.com/spam/{$type}", array( 'email' => $email, 'ip' => $ip ), $key, $key );

5) /kernel/classFileManagement.php => classFileManagement::postFileContents():

//-------------------------------
// Is URL, try curl and then fall back
//-------------------------------
...			
$contents = $this->_getContentsWithSocket( $file_location );

6) /kernel/classFileManagement.php => classFileManagement::_getContentsWithSocket():

while( ! feof($fp) && ! $status['timed_out'] )		
{
   $data .= fgets( $fp, 8192 );
   $status = stream_get_meta_data($fp);
}

Вот здесь команда fgets "зависает". При этом поток $fp проинициализирован:

print_r($fp) = "Resource id #35"

 

По каким-то причинам IP.Board'овский сервер не отдаёт ни EOF, ни EOL ?

Рекомендованные сообщения

Опубликовано:

http://ipbskins.ru/forum/topic10798.html/page__view__findpost__p__88545

 

Если речь о Registration / Spam service timing out on 3.4.7, то его я откатил

На самом деле даже без патча вы никакой разницы не почусвуете потому, что post запрос с бейсик авторизации на форуме встречается очень редко, и то, на многих хостингах есть курл который отрабатывает вместо сокетов. Более того, если у вас установлена локализация от ибр, то там используется другой антиспам сервис и то, что отправляются запросы на ипс это означает, что либо вы вручную поменяли сервис в файле, либо вы заменили этот файл оригинальным, например при установке патча с ИПС.

  • 2 недели спустя...
Опубликовано:
  • Автор
> Если речь о Registration / Spam service timing out on 3.4.7, то его я откатил

На самом деле даже без патча вы никакой разницы не почусвуете потому, что post запрос с бейсик авторизации на форуме встречается очень редко, и то, на многих хостингах есть курл который отрабатывает вместо сокетов.

Тем не менее, ни один пользователь ни с одного компьютера не мог зарегистрироваться из-за сабжевого "подвисания".

 

А вот этот вопрос остаётся в силе:

2) Где искать сабжевый патч "Registration / Spam service timing out on 3.4.7" в варианте IBResource ?

Опубликовано:
  • Автор

Я тут нашёл работу для модераторов:

Перенести сообщения 19-23 в отдельную тему, тему назвать так: Обновление IP.Board 3.4.5

А то по ветке обновления, чувствую, сейчас дискуссия разрастётся...

Опубликовано:
  • Автор
А, учитывая то, что Вы используете локализацию от ибр, то вообще кричи "Караул!".

Что касается оригинального англоязычного патча 3_4_x_patch_nov_14, то предварительно я его откатил (до варианта, имевшего место после установки и локализации IP.Board 3.4.5).

После отката проверил сабжевый глюк при включенном антиспам-сервисе: регистрация проходит нормально, без "подвисаний". Значит, сабжевая проблема наблюдается только при коннекте к антиспам-сервису IPS. В ходе работы с антиспам-сервисом от IBResource ошибка себя никак не проявляет.

 

В любом случае, сабжевую ошибку (сокеты + basic-авторизация) желательно устранить. Только IBResource-адаптированной версии патча Registration / Spam service timing out on 3.4.7, похоже, не существует...

Опубликовано:

В ходе работы с антиспам-сервисом от IBResource ошибка себя никак не проявляет.

Потому что там не требуется бейсик авторизация.

 

В любом случае, сабжевую ошибку (сокеты + basic-авторизация) желательно устранить.

http://ipbskins.ru/forum/topic13693.html#entry91040

Опубликовано:
  • Автор
> В любом случае, сабжевую ошибку (сокеты + basic-авторизация) желательно устранить.

http://ipbskins.ru/forum/topic13693.html#entry91040

Этот патч (classFileManagement.php) не содержит локализованных фраз ?

 

В любом случае, на форуме IBResource в разделе "Новости" должна быть тема с описанием этого патча (в разделе "Новости" размещаются все патчи, включая те, которые не затрагивают файлы локализации). Но её там нет. Или есть ? Я не нашёл.

Изменено пользователем siv1987

Опубликовано:

В любом случае, на форуме IBResource в разделе "Новости" должна быть тема с описанием этого патча

Они выпускают только патчи безопасности. И то по моему когда речь касается измененных файлов ибр, иначе дают ссылку на скачку с ипс.

 

Этот патч (classFileManagement.php) не содержит локализованных фраз ?

Нет.

Опубликовано:
  • Автор
Они выпускают только патчи безопасности. И то по моему когда речь касается измененных файлов ибр, иначе дают ссылку на скачку с ипс.

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

Но в любом случае они создают отдельную тему в разделе "Новости". Под любой патч (даже если патч не затрагивает локализованные файлы). Но в случае с Registration / Spam service timing out on 3.4.7 - они этого почему-то не сделали...

 

P.S. Почему вы удаляете ссылки на www.invisionpower.com ? Они нарушают правила форума ?

Изменено пользователем cyrax_02

Опубликовано:

P.S. Почему вы удаляете ссылки на www.invisionpower.com ? Они нарушают правила форума ?

Зачем повторять их стопиццот раз в этой теме? Один раз упомянули и хватит. И это касается не только ссылок на ипс. Не надо публиковать 1000 ссылок одного и того же адреса.

Опубликовано:
  • Автор

Это зафиксировано в правилах форума ?

Думаю, со мной согласится большинство форумчан - в том, что ссылки по возможности нужно оформлять всегда и везде. Даже если одним или несколькими постами выше эта ссылка уже присутствует. Люди же не будут искать по всем сообщениям темы, нет ли где нужной им ссылки. Более того, нужная им ссылка может иметь иной текст.

Вообще, это всё - прописные истины. Я не понимаю вашей логики. "Не как у людей"...

 

P.S. На своём форуме я эту логику планирую сделать рекомендацией.

Изменено пользователем cyrax_02

Опубликовано:

Но в любом случае они создают отдельную тему в разделе "Новости". Под любой патч (даже если патч не затрагивает локализованные файлы). Но в случае с Registration / Spam service timing out on 3.4.7 - они этого почему-то не сделали...

Где это? Не вижу ничего кроме тем, связанных с патчами безопасности, и тем, относящихся к Ибр.

Или Вы хотите, чтобы разработчики для каждого бага публиковали решение.

Опубликовано:
  • Автор

Что-то я нигде не могу найти упоминания, какой антиспам-фильтр работает - IPS или IBResource.

 

Хотя нет. Настройка "Защита от Спама" сопровождается комментарием: "Настройки для антиспам сервиса от IPS".

Только этот комментарий не соответствует действительности (в случае IBResource-локализации)...

Изменено пользователем cyrax_02

Опубликовано:

Люди же не будут искать по всем сообщениям темы, нет ли где нужной им ссылки.

Вот по этому и не надо захамлять топик ссылками, ища нужную среди тысячу однообразных ссылок. Вы первый из большинство форумчан за кем замечена такая привычка. На этом офф топик можно закончить, иначе можно долго спорить кто как у себя на форуме делает.

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.