Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

[dev] Антиспамер

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 15 лет 4 месяца
Откуда: Москва

Сообщение avm »

Хорошо, разберем код по порядку:

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

1) if( $userdata['user_level'] == ADMIN ) return $message; // админов не банить и не чистить их мессаги...

2) include($phpbb_root_path . 'includes/adcerber_config.'.$phpEx); // загрузить конфиг прямо в теле процедуры. Поэтому добавлять эти переменные в объявление глобалей бессмысленно.

3)
if(  !$userdata['session_logged_in']  ) {
   баним...
} else {
   if ( $userdata['user_posts'] > $ad_minpost ) $mustdie=false;  // чтобы потом вернуть очищеное от спама сообщение вместо бана.
   } else {
       баним...
   }
}

4) отправляем  емэйл админу.

5) if(!$mustdie) return $clear; // вернем очищенное от спама сообщение.

6) message_die(CRITICAL_MESSAGE, 'You_been_banned')
Теперь насчет "$ad_minpost" - общее кол-во сообщений залогиненого пользователя должно быть больше этого числа, поэтому я и предложил поставить -1 ...

Теперь в соответствии с этим описанием, проверьте все условия, при которых вас банит -- какое у вас кол-во постов в форуме, и т.д.
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948

Ивaн

Сообщение Ивaн »

я писал в гостевом режиме.
и как насчет тех, кто пишет спам в гостевом режиме

Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 15 лет 4 месяца
Откуда: Москва

Сообщение avm »

Ивaн, вам что именно нужно? чтоб вообще никого не банило и не отсылало почту админу? А просто вырезало спам?, тогда код:

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

// This function clears message for SPAM 
function ad_cerber($message) 
{ 
   global $userdata,$phpEx, $phpbb_root_path,$user_ip,$db,$board_config; 

   if( $userdata['user_level'] == ADMIN ) return $message; 

    include($phpbb_root_path . 'includes/adcerber_config.'.$phpEx); 

    $clear=str_replace($ad_list,$ad_replace,$message); 

    return $clear; 
}
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948

Ивaн

Сообщение Ивaн »

спасибо... уже что-то другое :)

в моем adcerber_config.php напсиано так:

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

<?php 
$ad_minpost=0; // До этого числа баним, свыше только информируем Админа и забиваем спам 
$ad_replace='[SPAM]';
$ad_list=array('армия'); 
?>
Создаю я сообщение "Армия - это круто!" и оно заменяется на "[SPAM] - это круто!"

Получившийся мод подобен опции "цензор" в админке. У меня постоянные спам "Недживижмость в Черногории - www.ля-ля-ля.ru". В цензоре поставил замену урл на пробел... а толку-то? :lol: Теперь форум захламляется обрубленным спамом.

avm, подскажи код, чтобы пост со словом "армия" вообще болокировался и выдавалось сообщение типа "В вашем сообщении обнаружен спам. Если это ошибка, обратитесь к админу."

Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 15 лет 4 месяца
Откуда: Москва

Сообщение avm »

Ивaн писал(а):чтобы пост со словом "армия" вообще болокировался и выдавалось сообщение...
Пожалуйста:

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

function ad_cerber($message) 
{ 
   global $userdata,$phpEx, $phpbb_root_path,$user_ip,$db,$board_config; 
   if( $userdata['user_level'] == ADMIN ) return $message; 
   include($phpbb_root_path . 'includes/adcerber_config.'.$phpEx); 
   $clear=str_replace($ad_list,$ad_replace,$message); 
   if($clear==$message) return $message; // OK. No AD or SPAM 
   message_die(CRITICAL_MESSAGE, 'В вашем сообщении обнаружен спам. Если это ошибка, обратитесь к админу.'); 
}
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948

Ивaн

Сообщение Ивaн »

avm, работает! :D

как правильно ввести слюда, чтобы блокировалось "армия", "недвижимость", "пирамида"?

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

<?php 
$ad_minpost=0; // До этого числа баним, свыше только информируем Админа и забиваем спам 
$ad_replace='[SPAM]'; 
$ad_list=array('армия'); 
?>
Вчера пустой кошелек пополнили на 5 баков )) С меня пиво! Скажи свой wmz - я те скину...

Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 15 лет 4 месяца
Откуда: Москва

Сообщение avm »

Ивaн писал(а):чтобы блокировалось "армия", "недвижимость", "пирамида"?

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

<?php 
$ad_minpost=0; // До этого числа баним, свыше только информируем Админа и забиваем спам 
$ad_replace='[SPAM]'; 
$ad_list=array( "армия", "недвижимость", "пирамида" ); 
?>
P.S. wmz у меня нету, только e-port ;) (кстати надо бы завести, только их прога-"кошелек" под эмулятором в lin глючит страшно)
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948

imasmoker
phpBB 1.4.1
Сообщения: 48
Стаж: 14 лет 11 месяцев

Сообщение imasmoker »

offtop:

Я так по ламерски ворвусь со своей проблемой - уже 15-й раз примерно баню какого то чудилу с сайта hxp:/linger.org.ru не сочтите за рекламу, создает сообщение где пишет тупо каталог ссылок. Не лень человеку регаться снова и снова постить сообщение, хотя оно живет не больше 10часов.

Подскажите как его забанить раз и навсегда. Была мысль всю подсеть срубить, но оказалось у нас из неё пользователи есть и много.

Вносит слова для фильтра для меня не вариант, так как на форуме используются все слова :)
phpBB 2.0.19

Ивaн

Сообщение Ивaн »

я не слова для фильтра воожу, а целые фразы, в которых не менее 4 слов...

Аватара пользователя
lex
phpBB 1.2.1
Сообщения: 24
Стаж: 15 лет

Сообщение lex »

imasmoker писал(а):Я так по ламерски ворвусь со своей проблемой - уже 15-й раз примерно баню какого то чудилу с сайта hxp:/linger.org.ru не сочтите за рекламу, создает сообщение где пишет тупо каталог ссылок. Не лень человеку регаться снова и снова постить сообщение, хотя оно живет не больше 10часов.

Подскажите как его забанить раз и навсегда.
http://www.phpbbguru.net/community/view ... 9557#59557
Видео плеер FSP - Каталог софта - Рейтинг сайтов
Mail.ru Agent - общаемся, отправка бесплатных sms.

Art
phpBB 1.0.0
Сообщения: 5
Стаж: 15 лет 6 месяцев

Сообщение Art »

Ребята, а мне при попытке добавить новую тему выдаёт ошибку в файле function_post.php

Вот в этой строке:
global $userdata,$phpEx, $phpbb_root_path,$user_ip,$db,$board_config;

Я в пхп не рублю вообще. Чё делать?

global $ad_minpost, $ad_replace, $ad_list; - такую штуку тоже добавлял. Или её нужно вместо? Короче без жбана пива не разобраться. Хелп!
Спамеры уже заколебали!

Аватара пользователя
Admin_777
phpBB 1.4.4
Сообщения: 190
Стаж: 14 лет 7 месяцев
Откуда: Moscow

Сообщение Admin_777 »

Что-то у меня мод не работает. Пожалуйста проверьте код на первой странице и подправьте, если есть ошибки. Не работает. Рассказываю как дело было:
Для пробы создал тестовую запись, зашел в тему и запостил 10 ссылок. Выдала предупреждение:
Warning: Cannot modify header information - headers already sent by (output started at .../includes/adcerber_config.php:7) in .../posting.php on line 600
Warning: Cannot modify header information - headers already sent by (output started at .../includes/adcerber_config.php:7) in .../includes/page_header.php on line 483
Warning: Cannot modify header information - headers already sent by (output started at .../includes/adcerber_config.php:7) in .../includes/page_header.php on line 485
Warning: Cannot modify header information - headers already sent by (output started at .../includes/adcerber_config.php:7) in .../includes/page_header.php on line 486

Чего там не так, понять не могу:
<?php
$ad_minpost=3; // До этого числа баним, свыше только информируем Админа и забиваем спам
$ad_replace='[SPAM]';
$ad_list=array('откосить от армии');
?>

И главное, что не сработало. Подскажите пожалуйста в чем дело. Какую доп. информацию запостить?

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4396
Стаж: 15 лет 4 месяца
Откуда: Питер
Благодарил (а): 123 раза
Поблагодарили: 512 раз

Сообщение Siava »

Admin_777
в файле adcerber_config.php после ?> пустых строк нет?
Еще одно нарушение правил и будете забанены. © Mr. Anderson
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Аватара пользователя
Admin_777
phpBB 1.4.4
Сообщения: 190
Стаж: 14 лет 7 месяцев
Откуда: Moscow

Сообщение Admin_777 »

Это первое, что пришло мне в голову. Действительно были путсые строки, я их удалил. Судя по всему, из-за этого сообщения больше не появлялись.
Но и МОД, увы, не работает. Пробовал создавать и по 3 ссылки, 5, 10, 20 - разрешает постить. :(

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4396
Стаж: 15 лет 4 месяца
Откуда: Питер
Благодарил (а): 123 раза
Поблагодарили: 512 раз

Сообщение Siava »

Admin_777
Я немного изменил этот мод, сделал так, чтобы спамеры банились, которые ссылки оставляют + убрал из кода проверку и уведомления по email'у для случая, когда запрещенные фразы постит пользователь с сообщениями больше заданного.

Работает отлично :)

adcerber_config.php

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

<?php
$ad_minpost=1; // До этого числа баним, свыше только информируем Админа и забиваем спам
$ad_replace='[SPAM]';
$ad_list=array("http://","www.");
?>
в оригинальную функцию переделал на:
functions_post.php

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

// This function check message for SPAM
function ad_cerber($message)
{
   global $ad_minpost, $ad_replace, $ad_list;
   global $userdata,$phpEx, $phpbb_root_path,$user_ip,$db,$board_config;
   if( $userdata['user_level'] == ADMIN ) return $message;
    include($phpbb_root_path . 'includes/adcerber_config.'.$phpEx);
    $clear=str_replace($ad_list,$ad_replace,$message);
    if($clear==$message) return $message; // OK. No AD or SPAM
    $mustdie=false;
    if( !$userdata['session_logged_in'] )
    {
        $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_ip)
            VALUES ('" . $user_ip . "')";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql);
      }
      $sql = "DELETE FROM " . SESSIONS_TABLE . "
         WHERE session_ip ='$user_ip'";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Shit happens");
      }
        $mustdie=true;

    include($phpbb_root_path . 'includes/emailer.'.$phpEx);
    $emailer = new emailer($board_config['smtp_delivery']);
    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);
    $emailer->use_template('ad_cerber', $board_config['default_lang']);
    $emailer->email_address($board_config['board_email']);
    $emailer->set_subject('AD Cerber report');
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'MESSAGE' => $message,
    'ACTION'=>($mustdie)?'***USER BANNED***':'',
    'USERNAME' => $userdata['username'],
    'IP' =>  decode_ip($user_ip)));
     $emailer->send();
     $emailer->reset();
    }
   else
   {
     if($userdata['user_posts']>$ad_minpost)$mustdie=false;
     else
     {
        $user_id=$userdata['user_id'];
        $sql = "UPDATE " . USERS_TABLE . " SET user_active=0
            WHERE user_id=$user_id";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Couldn't change user status", "", __LINE__, __FILE__, $sql);
      }
      $sql = "DELETE FROM " . SESSIONS_TABLE . "
         WHERE  session_user_id=$user_id";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Shit happens");
      }
        $mustdie=true;

    include($phpbb_root_path . 'includes/emailer.'.$phpEx);
    $emailer = new emailer($board_config['smtp_delivery']);
    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);
    $emailer->use_template('ad_cerber', $board_config['default_lang']);
    $emailer->email_address($board_config['board_email']);
    $emailer->set_subject('AD Cerber report');
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'MESSAGE' => $message,
    'ACTION'=>($mustdie)?'***USER BANNED***':'',
    'USERNAME' => $userdata['username'],
    'IP' =>  decode_ip($user_ip)));
     $emailer->send();
     $emailer->reset();
     }
   }
//     if(!$mustdie) return $clear;
     if(!$mustdie) return $message;
     if($userdata['session_logged_in']) message_die(CRITICAL_MESSAGE, 'You_been_blocked');
     message_die(CRITICAL_MESSAGE, 'You_been_banned');
}
Еще одно нарушение правил и будете забанены. © Mr. Anderson
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.5.x)

Вернуться в «Бета-версии модов для phpBB 2.0.x»