Перейти к контенту
  • 0

"Мухобойка" в форуме для админов


FatCat

Вопрос

Появился у меня один скучающий деятель: ходит по проксям, каждые 5-10 минут регистрирует вручную новый ник и пишет всякую фигню со скоростью 2 сообщения в минуту.

Забодало каждый раз лезть в админку удалять ник, чистить топики, банить очередной проксевый айпишник в эйчтиакцессе.

Сделал "мухобойку" в профиль. Удаляет от пользователя всё, в том числе и записи в mJournal'е.

 

lang_profile.php

'to_bioreactor' => "Удалить профиль и забанить по IP",

 

skin_profile.php

После

function show_profile($info) {
global $ibforums, $INFO;

добавил

if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] )$bioreactor = " · <a href='".$info['base_url']."act=modcp&CODE=bioreactor&mid=".$info['mid']."'>".$ibforums->lang['to_bioreactor']."</a>";

После

<a href='{$info['base_url']}act=Msg&CODE=02&MID={$info['mid']}'>{$ibforums->lang['add_to_contact']}</a> 

добавил

$bioreactor

 

 

lang_modcp.php

'cp_no_user'    => "Запрошенный пользователь не найден",

 

 

mod_cp.php

После

			case 'doip':
       		$this->do_ip();
       		break;

добавил

        	case 'bioreactor':
       		$this->bioreactor();
       		break;

 

И добавил функцию:

	function bioreactor()
{
	global $std, $ibforums, $DB, $print, $INFO;

	if ( $ibforums->member['mgroup'] != $ibforums->vars['admin_group'] )
	{
		$this->mod_error('cp_no_perms');
		return;
	}
	$DB->query("SELECT * FROM ibf_members WHERE id = ".$ibforums->input['mid']);
	if( $row = $DB->fetch_row() )
	{
		$del_topics = "";
		$del_full_topics = "";
		$del_topics_counter = "";
		$del_posts_in_topic = 0;
		$del_full_topics_counter = 0;
		$DB->query("SELECT t.tid, t.posts, p.pid, p.author_id, p.author_name, p.topic_id
		FROM ibf_topics t, ibf_posts p
		WHERE p.topic_id = t.tid and p.author_id = '".intval($ibforums->input['mid'])."'
		ORDER BY t.tid");
		$ibf_stats_count = $DB->get_num_rows();
		if($ibf_stats_count > 0)
		{
			while($mem = $DB->fetch_row())
			{
				$member_name = $mem['author_name'];
				if($mem['posts'] == '0')
				{
					$del_full_topics .= $mem['tid'].",";
					$del_full_topics_counter++;
				}
				else
				{
					if($del_topics_counter != $mem['tid'])
					{
						$del_topics .= "|".$del_posts_in_topic.", ".$mem['tid'];
						$del_posts_in_topic = 1;
					}
					else
					{
						$del_posts_in_topic++;
					}
					$del_topics_counter = $mem['tid'];
				}
			}
			$del_topics .= "|".$del_posts_in_topic;
			$del_topics = str_replace("|0, ","",$del_topics);
			$del_full_topics .= "endofstring";
			$del_full_topics = str_replace(",endofstring","",$del_full_topics);
			$del_full_topics = str_replace("endofstring","",$del_full_topics);

			if($del_full_topics)$DB->query("DELETE FROM ibf_topics WHERE tid IN ( ".$del_full_topics." )");
			$recall_topic_arr = explode(",", $del_topics);
			foreach ($recall_topic_arr as $r_string)
			{
				$r_string_topic = explode("|",$r_string);
				if($r_string_topic[0])$DB->query("UPDATE ibf_topics SET posts = ( posts - ".$r_string_topic[1]." ) WHERE tid = ".$r_string_topic[0]." LIMIT 1");
			}
			$DB->query("DELETE FROM ibf_posts WHERE author_id = ".intval($ibforums->input['mid']));
			$ibf_stats_count = $ibf_stats_count - $del_full_topics_counter;
			$DB->query("UPDATE ibf_stats SET TOTAL_REPLIES = (TOTAL_REPLIES - ".$ibf_stats_count.")");
			if($del_full_topics_counter > 0)$DB->query("UPDATE ibf_stats SET TOTAL_TOPICS = (TOTAL_TOPICS - ".$del_full_topics_counter.")");
		}

		$DB->query("DELETE FROM ibf_messages WHERE member_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE FROM ibf_tracker WHERE member_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE FROM ibf_forum_tracker WHERE member_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE FROM ibf_jposts WHERE journal_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE FROM ibf_jcomments WHERE owner_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE FROM ibf_moderators WHERE member_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE FROM ibf_calendar_events WHERE userid = ".intval($ibforums->input['mid']));
		$DB->query("DELETE from ibf_contacts WHERE member_id='".intval($ibforums->input['mid'])."' or contact_id='".intval($ibforums->input['mid'])."'");
		$DB->query("DELETE from ibf_members WHERE id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE from ibf_pfields_content WHERE member_id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE from ibf_member_extra WHERE id = ".intval($ibforums->input['mid']));
		$DB->query("DELETE from ibf_validating WHERE member_id = ".intval($ibforums->input['mid']));
		$DB->query("SELECT id, name FROM ibf_members ORDER BY joined DESC LIMIT 1");
		$memb = $DB->fetch_row();
		$DB->query("SELECT COUNT(id) as members from ibf_members");
		$r = $DB->fetch_row();
		$DB->query("UPDATE ibf_stats SET MEM_COUNT = '".$r['members']."', LAST_MEM_NAME = '".$memb['name']."', LAST_MEM_ID = '".$memb['id']."'");

		$std->Antibot_hard("<br><i>Модератор <a href='index.php?showuser=".$ibforums->member['id']."'>".$ibforums->member['name']."</a> вместе с удалением профиля <b>".$row['name']."</b></i>.",100,$row['ip_address']);

		$print->redirect_screen( "профиль пользователя полностью удален", "act=idx" );
	}
	else
	{
		$this->mod_error('cp_no_user');
		return;
	}
}

 

 

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

Изменено пользователем FatCat
Ссылка на комментарий
Поделиться на других сайтах

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

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.