Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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