Просмотр файла includes/main_forum/rootkit.php

Размер файла: 8.58Kb
<?php
$command=substr($addmsg,1);
//Команда не опознана...
$sysmsg='<b>Команда не опознана ['.cyr2utf(str_replace("$","$$",htmlspecialchars(stripslashes($command)))).']</b><br/>';
$access_denied='<b>Недостаточно прав... ['.cyr2utf(str_replace("$","$$",htmlspecialchars(stripslashes($command)))).']</b><br/>';
for ($k=1;$k<10;$k++) $command=str_replace('  ',' ',$command);
$command=explode(" ",$command,2);

$q=@mysql(DBName,"SELECT `status` FROM `$tableu` WHERE `login` = '".$command[1]."'");
$s=round(mysql_num_rows($q));
$f=mysql_fetch_array($q);
$status_=$f['status'];

switch (strtolower($command[0]))
	{
    case 'noop':
		$sysmsg='<b>Пустая команда.</b><br/>';
        break;
    case 'ban':
		//Недостаточно прав...
		if ($status<1) {$sysmsg=$access_denied;break;}
		//Пользователь не найден
        if ($s<1) {$sysmsg='<b>Пользователь '.cyr2utf(str_replace("$","$$",htmlspecialchars(stripslashes($command[1])))).' не найден...</b><br/>';break;}
		//Конфликт статусов
		if ($status<=$status_) {$sysmsg='<b>Конфликт статусов...</b><br/>';break;}

		@mysql(DBName,"UPDATE `$tableu` SET `status` = '-1' WHERE `login` = '".$command[1]."' LIMIT 1");
		$sysmsg='<b>Для '.$command[1].' установлен бан (написанеи в форум запрещено).</b><br/>';
        break;
    case 'user':
		//Недостаточно прав...
		if ($status<1) {$sysmsg=$access_denied;break;}
		//Пользователь не найден
        if ($s<1) {$sysmsg='<b>Пользователь '.cyr2utf(str_replace("$","$$",htmlspecialchars(stripslashes($command[1])))).' не найден...</b><br/>';break;}
		//Конфликт статусов
		if ($status<=$status_) {$sysmsg='<b>Конфликт статусов...</b><br/>';break;}

		@mysql(DBName,"UPDATE `$tableu` SET `status` = '0' WHERE `login` = '".$command[1]."' LIMIT 1");
		$sysmsg='<b>Для '.$command[1].' установлен статус обычного пользователя (написанеи в форум разрешено).</b><br/>';
        break;
    case 'moder':
		//Недостаточно прав...
		if ($status<2) {$sysmsg=$access_denied;break;}
		//Пользователь не найден
        if ($s<1) {$sysmsg='<b>Пользователь '.cyr2utf(str_replace("$","$$",htmlspecialchars(stripslashes($command[1])))).' не найден...</b><br/>';break;}
		//Конфликт статусов
		if ($status<=$status_) {$sysmsg='<b>Конфликт статусов...</b><br/>';break;}

		@mysql(DBName,"UPDATE `$tableu` SET `status` = '1' WHERE `login` = '".$command[1]."' LIMIT 1");
		$sysmsg='<b>Для '.$command[1].' установлен статус "Модератор".</b><br/>';
        break;
/*
    case 'admin':
		//Недостаточно прав...
		if ($status<2) {$sysmsg=$access_denied;break;}
		//Пользователь не найден
        if ($s<1) {$sysmsg='<b>Пользователь '.cyr2utf(str_replace("$","$$",htmlspecialchars(stripslashes($command[1])))).' не найден...</b><br/>';break;}

		@mysql(DBName,"UPDATE `$tableu` SET `status` = '2' WHERE `login` = '".$command[1]."' LIMIT 1");
		$sysmsg='<b>Для '.$command[1].' установлен статус "Администратор".</b><br/>';
        break;
*/
	# Закрытие темы
    case 'lock':
        # Статус темы
	    $q=mysql(DBName,"SELECT `status` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic AND `l3` = 0 LIMIT 0, 1");
        $f=mysql_fetch_array($q);
	    $topic_status=$f['status'];
		if ($topic_status==1) {$sysmsg='<b>Тема уже закрыта!</b><br/>';include($rootpath."messages.php");}

		# Логин автора темы
	    $q=mysql(DBName,"SELECT `l3`, `login` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic AND `l3` = 0");
	    $s=mysql_num_rows($q)+0;
	    $f=mysql_fetch_array($q);
	    $flogin=$f['login'];
		if (($status<1)&&($flogin!=$login)) {$sysmsg='<b>Нельзя закрыть чужую тему!</b><br/>';include($rootpath."messages.php");}

		# Колличество сообщений не автора
	    $q=mysql(DBName,"SELECT `l3` FROM `$table` WHERE `login` != $login AND `l1` = $razdel AND `l2` = $topic");
	    $s=mysql_num_rows($q)+0;
		if (($status<1)&&($s==0)) {$sysmsg='<b>Темы содержащие только ваши сообщения можно только удалять.</b><br/>';include($rootpath."messages.php");}

		# Номер последнего сообщения в теме
	    $q=mysql(DBName,"SELECT `l3` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic ORDER BY `l3` DESC  LIMIT 0, 1");
        $f=mysql_fetch_array($q);
	    $message=$f['l3']+1;

        $sysmsg='<b>Тема закрыта.</b><br/>';
        @mysql(DBName,"UPDATE `$table` SET `status` = '1', `time` = '".time()."' WHERE `l1` = '$razdel' AND `l2` = '$topic' AND `l3` = '0' LIMIT 1");
        @mysql(DBName,"INSERT INTO `$table` ( `l1` , `l2` , `l3` , `status` , `login` , `time` , `text` ) VALUES ( '$razdel', '$topic', '$message', '0', '$login', '".time()."', 'Тема закрыта: ".$command[1]." ".$command[2]." ".$command[3]."')");
	    include($rootpath."messages.php");
        break;
	# Открытие темы
    case 'unlock':
		if ($status<1) {$sysmsg=$access_denied;include($rootpath."messages.php");}

        # Статус темы
	    $q=mysql(DBName,"SELECT `status` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic AND `l3` = 0 LIMIT 0, 1");
        $f=mysql_fetch_array($q);
	    $topic_status=$f['status'];
		if ($topic_status==0) {$sysmsg='<b>Тема не закрыта!</b><br/>';include($rootpath."messages.php");}

		# Номер последнего сообщения в теме
	    $q=mysql(DBName,"SELECT `l3` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic ORDER BY `l3` DESC  LIMIT 0, 1");
        $f=mysql_fetch_array($q);
	    $message=$f['l3'];

        $sysmsg='<b>Тема открыта.</b><br/>';
        @mysql(DBName,"UPDATE `$table` SET `status` = '0', `time` = '".time()."' WHERE `l1` = '$razdel' AND `l2` = '$topic' AND `l3` = '0' LIMIT 1");
        @mysql(DBName,"DELETE FROM `$table` WHERE `l1` = '$razdel' AND `l2` = '$topic' AND `l3` = '$message' LIMIT 1");
	    include($rootpath."messages.php");
        break;
# Приклеить тему
    case 'fix':
		if ($status<2) {$sysmsg=$access_denied;include($rootpath."messages.php");}

        # Статус темы
	    $q=mysql(DBName,"SELECT `fixed` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic AND `l3` = 0 LIMIT 0, 1");
        $f=mysql_fetch_array($q);
	    $topic_fixed=$f['fixed'];
		if ($topic_fixed==1) {$sysmsg='<b>Тема уже приклеена!</b><br/>';include($rootpath."messages.php");}

        $sysmsg='<b>Тема приклеена.</b><br/>';
        @mysql(DBName,"UPDATE `$table` SET `fixed` = '1', `time` = '".time()."' WHERE `l1` = '$razdel' AND `l2` = '$topic' AND `l3` = '0' LIMIT 1");
	    include($rootpath."messages.php");
        break;
# Освободить тему
    case 'unfix':
		if ($status<2) {$sysmsg=$access_denied;include($rootpath."messages.php");}

        # Статус темы
	    $q=mysql(DBName,"SELECT `fixed` FROM `$table` WHERE `l1` = $razdel AND `l2` = $topic AND `l3` = 0 LIMIT 0, 1");
        $f=mysql_fetch_array($q);
	    $topic_fixed=$f['fixed'];
		if ($topic_fixed==0) {$sysmsg='<b>Тема не приклеена!</b><br/>';include($rootpath."messages.php");}

        $sysmsg='<b>Тема освобождена.</b><br/>';
        @mysql(DBName,"UPDATE `$table` SET `fixed` = '0', `time` = '".time()."' WHERE `l1` = '$razdel' AND `l2` = '$topic' AND `l3` = '0' LIMIT 1");
	    include($rootpath."messages.php");
        break;
    case 'del':
	    $q=mysql(DBName,"SELECT `l3`, `login` FROM `$table` WHERE 1 AND `l1` = $razdel AND `l2` = $topic");
	    $s=mysql_num_rows($q)+0;
	    if ($s<1)
	        {$sysmsg='<b>Тема не существует (уже удалена).</b><br/>';}
	    else
	        {
	        $q=mysql(DBName,"SELECT `l3`, `login` FROM `$table` WHERE 1 AND `l1` = $razdel AND `l2` = $topic AND `l3` = 0");
	        $f=mysql_fetch_array($q);
	        $flogin=$f['login'];
	        if (($status<2)&&($flogin!=$login)) {$sysmsg='<b>Нельзя удалить чужую тему.</b><br/>';include($rootpath."messages.php");}
	        if (($status<2)&&($flogin==$login)&&(($s>2))) {$sysmsg='<b>Для удаления в теме должно быть не более одного сообщения.</b><br/>';include($rootpath."messages.php");}
	        $f=mysql_fetch_array($q);
	        @mysql(DBName,"DELETE FROM `$table` WHERE `l1` = '$razdel' AND `l2` = '$topic'");
	        $sysmsg='<b>Тема удалена.</b><br/>';
	        }
        $message=0;
        $topic=0;
	    include($rootpath."topics.php");
        break;
    }
?>