define("NO_USERLOAD",1);
include_once("__dima.php");
include_once("__other.php");
include_once("src/msg.php");
include "admin_contact_conf.inc";
echo "";
if (!defined('DIMA')) exit("?");
mainsecure();
checkref();
if (!$s[2] || $s['authnick']=='' || $s[3]<$admcmd['crazy'])
exit("Не хватает уровня доступа для использования этой страницы.
Вы должны быть авторизированы с логином администратора уровня $admcmd[admin].");
if (isset($s['tempadmin']) || $s[3]!=$admlist[$s['authnick']])
exit("Вы не можете пользоваться этой страницей, т.к. являетесь временным,
а не постоянным администратором.");
if (isset($ni)) $ni=substr(trim(html(@strip_tags($ni))),0,100);
$uni=ue(@$ni);
$hni=html(@$ni);
$trnames=array(
"connect"=>"Все соединения",
"connect_chat"=>"Соединение успешно, вход в чат",
"connect_err"=>"Соединение с ошибкой",
"connect_ignore"=>"Соединение под игнором",
"out"=>"Исходящий трафик",
"in"=>"Входящий трафик",
"line_out"=>"Разослано сообщений",
"line_in"=>"Считано сообщений"
);
function small_stats() {
global $serverpath, $trnames;
$height=50;
if (!file_exists($serverpath."/stats.tmp")) {
echo "Файл $serverpath/stats.tmp не найден (возможно, чат-сервер не запущен)
";
return;
}
$f=fopen($serverpath."/stats.tmp","r") or err("Не могу открыть (r) $serverpath/stats.tmp");
$buf=fgets($f,2000);
$timestart=intval(fgets($f,2000));
$opensocks=intval(fgets($f,2000));
$numignore=intval(fgets($f,2000));
$hostuptime=trim(fgets($f,2000));
$hostname=trim(fgets($f,2000));
$hostosname=trim(fgets($f,2000));
$chatversion=trim(fgets($f,2000));
$chattcl=trim(fgets($f,2000));
$chatpwd=trim(fgets($f,2000));
fclose($f);
if (!isset($showstat))
echo "Убрать статистику";
else {
small_stats();
stats();
}
echo "
О сервере, где запущен чат-сервер, известно:"; echo "
Общая статистика за все время работы чат-сервера: "; preg_match_all("!([a-z_]+) ([0-9]+)!",$buf,$ok); foreach ($ok[1] as $k=>$v) { echo "
";
}
function stats() {
global $serverpath, $trnames;
$height=50;
if (!file_exists($serverpath."/traffic.tmp")) {
echo "Файл $serverpath/traffic.tmp не найден (возможно, чат-сервер не запущен)
";
return;
}
$f=fopen($serverpath."/traffic.tmp","r") or err("Не могу открыть (r) $serverpath/traffic.tmp");
while (!feof($f)) {
$tmp=explode(" ",fgets($f,10000));
if (count($tmp==1441)) {
$buf[$tmp[0]]=$tmp;
unset($buf[$tmp[0]][0]);
}
}
fclose($f);
//echo "
";print_r($buf);
if (count($buf)>2) {
echo"Подробная статистика: ";
echo "
Статистика поделена на часы и 5-ти минутные отрезки. Первое число: максимум за 5 минут, второе (ниже) - сумма за час.
| |||||||||||||||||||||||
| $v | |||||||||||||||||||||||
| |||||||||||||||||||||||
| |||||||||||||||||||||||
|
Управление Daemon Chat Server"; if (!$system_run) echo "": "Ручной запуск запрещен (см. \$system_manual_run)"); echo "\n ": "Ручное завершение запрещено (см. \$system_manual_run)"); echo "\n ": "Перезапуск запрещен (см. \$system_manual_restart)"); } echo " WARNING: Если вы нехрена не шарите для чего эти каманды не лезьте лучше сюда,а то руки отломаю."; echo " |
работает ";
else
echo "
Сдох!последний раз работал ".duration($diff)." назад. ";
echo "| Ник: | $vladel_nik |
| E-Mail: | |
| ICQ: | $icq |
| Сайт: | $home_cite |
| Skype: | $skype |
готово"; refresh("$PHP_SELF?c=$sess",2,__FILE__,__LINE__); exit; case "findusers": if ($s[3]<150) { exit("Доступ запрещен"); } set_time_limit(6000); include("z-web-part1.php"); echo backlinks(array('admin'))."Поиск по базе пользователей"; // Инициализация массива $_GET if (!isset($_GET['send'])) { $_GET=array( 'send'=>'', 'mail'=>'', // 'pass'=>'', 'location'=>'', 'height'=>'', 'icq'=>'', 'name'=>'', 'last_ip'=>'', 'last_brcode'=>'', 'last_referer'=>'' ); } print '
| ".$nick." | E-mail: ".$info['mail']." |
| ".$nick." | Имя: ".$info['name']." |
| ".$nick." | Город: ".$info['location']." |
| ".$nick." | Рост: ".$info['height']." |
| ".$nick." | icq: ".$info['icq']." |
| ".$nick." | LAST IP: ".$info[11]["last_ip"]." |
| ".$nick." | ID компьютера: ".$info[11]["last_brcode"]." |
| ".$nick." | Реферер: ".$info[11]["last_referer"]." |
"; ob_start(); $tmp=`$tmp`; $obtmp=ob_get_contents(); ob_end_clean(); if ($obtmp!="") exit("Увы, system() не работает. PHP вернул ошибку на вызов этой фунции:
".$obtmp. "
Это не ошибка чата. Обратитесь к администратору сервера, который
заблокировал вызов этой функции из ваших PHP-скриптов.");
echo "Работает! Пробую запустить чат-сервер:
"; $curdir=getcwd(); chdir($dpath); $tmp=`$system_cmdrun`; chdir($curdir); echo "Гарантировать запуск нельзя, но попытка запуска завершилась без ошибки!
"; echo "Через 10 секунд вы вернетесь назад (нажмите сюда)"; refresh("$PHP_SELF?c=$sess",10,__FILE__,__LINE__); exit(); case "die": needuser(); mainsecure(); if (!$s[2] || $s[3]<$admcmd['system_die']) die("Access denied: you not admin level $admcmd[system_die]"); putlogadmin("DIE, останов чат-сервера"); loaduser(1); foreach ($user as $k=>$v) { if ($k==$s['nick']) continue; include_once("src/misc.php"); quituser($k,"Chat-server shutdown. Sorry."); } saveuser(); include_once("src/msg.php"); m_all(SERVER,""); m_all(SERVER,""); m_all(SERVER,"
"; echo "Через 10 секунд вы вернетесь назад (нажмите сюда)"; refresh("$PHP_SELF?c=$sess",10,__FILE__,__LINE__); exit(); case "restart": mainsecure(); if ($s[2]!=1 || $s[3]<$admcmd['system_die']) die("Access denied: you not admin level $admcmd[system_die]"); putlogadmin("RESTART, перезагрузка чат-сервера"); m_cmd("restart $s[nick]"); echo "RESTART: Команда завершить чат послана!
"; echo "Через 10 секунд вы вернетесь назад (нажмите сюда)"; refresh("$PHP_SELF?c=$sess",10,__FILE__,__LINE__); exit(); case "lrestart": mainsecure(); if ($s[2]!=1 || $s[3]<$admcmd['system_lrestart']) die("Access denied: you not admin level $admcmd[system_lrestart]"); cmsg_allnotice("Внимание! Чат-сервер перезагружается... Через несколько секунд вы сможете повторно войти в чат. ($c by $s[nick])"); putlogadmin("RESTART, перезагрузка чат-сервера"); m_cmd("lrestart"); echo "LRESTART: Чат-серверу послана команда легкой перезагрузки!
"; echo "нажмите сюда"; refresh("$PHP_SELF?c=$sess",2,__FILE__,__LINE__); exit(); case "deluserlist": mainsecure(); if ($s[2]!=1 || $s[3]<$admcmd['system_userlist']) die("Access denied: you not admin level $admcmd[system_userlist]"); cmsg_allnotice("Внимание! Чат-сервер перезагружается... Через несколько секунд вы сможете повторно войти в чат. ($c by $s[nick])"); putlogadmin("DEL USERLIST: Очистка юзерлиста"); $user=array(); $f=fopen($fuser,"rb+") or err("errAD571: Не могу открыть $fuser (rb+)"); flock2($f,2,"errAD572: Не могу заблокировать $fuser",__FILE__,__LINE__); ftruncate($f,0); fputs($f,serialize($user)); fclose($f); echo "DEL USERLIST: Юзерлист очищен, все пользователи уничтожены!
"; echo "нажмите сюда"; refresh("$PHP_SELF?c=$sess",2,__FILE__,__LINE__); exit(); case "delstat": mainsecure(); if ($s[2]!=1 || $s[3]<$admcmd['delstat']) die("Access denied: you not admin level $admcmd[delstat]"); putlogadmin("DELSTAT: Обнуление статистики"); $user=array(); $f=fopen($fchatstat,"rb+") or err("errAD571: Не могу открыть $fchatstat (rb+)"); flock2($f,2,"errAD572a: Не могу заблокировать $fchatstat",__FILE__,__LINE__); ftruncate($f,0); fputs($f,serialize($user)); fclose($f); echo "DELSTAT: Статистика обнулена
"; echo "нажмите сюда"; refresh("$PHP_SELF?c=$sess",2,__FILE__,__LINE__); exit(); case "miscrestart": mainsecure(); if ($s[2]!=1 || $s[3]<$admcmd['system_lrestart']) die("Access denied: you not admin level $admcmd[system_lrestart]"); if ($s[2]!=1 || $s[3]<$admcmd['system_userlist']) die("Access denied: you not admin level $admcmd[system_userlist]"); cmsg_allnotice("Внимание! Чат-сервер перезагружается... Через несколько секунд вы сможете повторно войти в чат. ($c by $s[nick])"); putlogadmin("RESTART + DELUSERLIST, перезагрузка чат-сервера, очистка юзерлиста"); m_cmd("lrestart"); loaduser(1); $user=array(); saveuser(); echo "LRESTART: Чат-серверу послана команда легкой перезагрузки!
"; echo "DEL USERLIST: Юзерлист очищен, все пользователи уничтожены!
"; echo "нажмите сюда"; refresh("$PHP_SELF?c=$sess",2,__FILE__,__LINE__); exit(); case "chat": mainsecure(); if (!$s[2] || $s[3]<$admcmd['admin_chat']) die("Access denied: you not admin level $admcmd[admin_chat]"); // Подключение библиотеки phpLoginForm define("loginform",1); include_once("src/login_form.php"); // Сохраняем топик, чтобы позже проверить, не изменился ли $topic=$conf['topic']; $tignore=$conf['tignore']; // Сохраняем юзерлист, чтобы админы с доступом менее 1000 не изменяли его //$tmp_admlist=$conf['admlist']; // Если в данный момент не сабмитят форму, то грузим значения из конфига в форму if (!isset($form)) $buf=loginform_show("src/form_chat-config.txt",array(),$conf); else $buf=loginform_show("src/form_chat-config.txt"); // Если если ошибка от сабмита или сабмита вообще не было: if (!isset($onSubmit) || isset($error)) echo $buf; // Если в данный был сабмит и не было ошибок: else { // Повторно грузим настройки из конфига. loadconf(1); foreach ($form as $k=>$v) { if ($k[0]=="_" || strval(intval($k))==="$k") continue; $conf[$k]=$form[$k]; } foreach ($conf as $k=>$v) { if ($k[0]=="_" || strval(intval($k))==="$k") continue; if (!isset($form[$k])) { unset($conf[$k]); continue; } } //pr($form);pr($conf);exit; // Сохраняем настройки из формы в конфиг. saveconf(); putlogadmin("Измение настроек 'основного конфига'"); // Если изменился топик - показываем обновление в чате. if ($topic!=$form['topic']) topicsave($topic, $form['topic']); // Если изменился список игноров if ($conf['tignore']!=$tignore) { include_once("src/msg.php"); userload(1); m_del_totalignore("*"); foreach ($user as $k=>$v) { if (isset($v['tignore'])) { unset($user[$k]['tignore']); cmsg_admin(10,"Removed total ignore for ".html($k)." (command by ".html($s['nick']).", admin.php)"); } } $tmp=explode(" ",trim(preg_replace("! +!"," ",sl($conf['tignore'])))); foreach ($tmp as $ni) { if ($ni=finduser($ni)) { m_add_totalignore($ni); $user[$ni]['tignore']=1; cmsg_admin(10,"New total ignore for ".html($ni)." (command by ".html($s['nick']).", admin.php)"); } } usersave(); } if (isset($ButtonType) && $ButtonType) echo $buf; else refresh("$self?$sess",0,__FILE__,__LINE__); } break; case "html": if (!$s[2] || $s[3]<$admcmd['admin_html']) die("Access denied: you not admin level $admcmd[admin_html]"); if (!isset($s['editskin'])) $s['editskin']=$skindefuser; if (isset($newskin)) if(!preg1($newskin)) exit("errAD695"); else $s['editskin']=$newskin; $sk=$s['editskin']; include("z-web-part1.php"); echo "
| Файл | Тип | Описание | Размер | Изменен |
| ".
" | $type | ". "{$info} | ". "".filesize($fn)." | ". "".date("d.m.Y H:i",filemtime($fn))." |
Необходим доступ +".$admcmd['adminview']); include("z-web-part1.php"); $dt=date("Y-m-d"); $v=date("H:i:s"); include "admin_contact_conf.inc"; echo "
".morehelp("",xparse(skn('admin_list_help.html'))); echo xparse(skn("admin_list.html")); echo "
Последние просмотры этой страницы: ";
include_once("src/misc.php");
history_view("$chatpath/adminlisthist.tmp",5,7*24*60*60,0);
echo "
".backlinks(array('admin','login'));
echo "
Необходим доступ +".$admcmd['adminview']); include("z-web-part1.php"); echo "
"; else echo "Это администратор чата уровня $a.
"; if ($a>=$admcmd['admin'] && $a>=$admcmd['adminview']) { if ($r['edit']>=$admcmd['admin_list'] && $r['edit']>0) { if ($a==1000) echo "Есть право добавить/изменить/удалить админа любого уровня с любыми правами.
"; else echo "Есть право добавить нового администратора, наделив того: доступом - от 1 до ".min($r['edit'],$a-1).", правом Edit* - от 0 до ".($r['edit']-1).", правом Suspend* - от 0 до ".$r['susp'].". Причем, назначать кому-либо доступ меньше +$admcmd[adminview] не имеет смысла, т.к. попасть на страницу администрирования будет нельзя!
";
$nicks=array();
foreach ($admlist as $k=>$v)
if ($v ";
else
echo "Из числа уже существующих админов не имеет право редактировать ни одного. ";
}
else
echo "Индивидуальным правом редактировать, удалять и добавлять доступ не обладает. ";
if ($r['susp']>0) {
$nicks=array();
foreach ($adminfo as $k=>$v)
if (sl($s['authnick'])!=$k && $r['susp']>=$admlist[$k])
$nicks[]=" ";
else
echo "Из числа уже существующих админов не имеет право заблокировать ни одного.";
}
else
echo "Индивидуальным правом блокировать доступ других админов не обладает. ";
}
else {
echo "Этот администратор не может воспользоваться
правами, т.к. его доступ ниже необходимого для входа на страницу
редактирования администраторов. ";
}
echo " Общие права, доступные для уровня $a: ";
include_once("src/update_admcmd.php");
echo "
$v: ";
}
else $xsubmit=" Изменить и сохранить настройки может только владелец чата (вы - не можете).";
echo xparse(skn("cnfvar_$var.html"));
if ($s['authnick']===sl($admfirst) && $s[3]===1000) {
echo " Команды: [Восстановить настройки по-умолчанию] ";
if ($var=="msg") {
echo "[Добавить новое правило] ";
foreach ($conf["_msg"]['rules'] as $k=>$v)
echo "[Удалить правило N".($k+1)."] ";
}
echo "";
}
include("z-web-part2.php");
break;
case "cnfvar_msgadd":
checkhack('cnfvar',__FILE__,__LINE__);
if ($s[3]<1000 || $s['authnick']!==sl($admfirst)) exit("access denied");
include_once("src/cnfvar.php");
loadconf(1);
$conf['_msg']['rules'][]=$cnfvardef['msg']['rules'][0];
saveconf();
exit(refresh("$PHP_SELF?c=cnfvar&var=msg",0,__FILE__,__LINE__));
case "cnfvar_msgdel":
checkhack('cnfvar',__FILE__,__LINE__);
if ($s[3]<1000 || $s['authnick']!==sl($admfirst)) exit("access denied");
include_once("src/cnfvar.php");
loadconf(1);
if (count($conf['_msg']['rules'])==1) {
alert("Все правила удалять нельзя. Должно быть хотябы одно. Для отключения детектора - читайте справку.");
}
else {
unset($conf['_msg']['rules'][intval($num)]);
saveconf();
}
exit(refresh("$PHP_SELF?c=cnfvar&var=msg",0,__FILE__,__LINE__));
case "cnfvar_def":
checkhack('cnfvar',__FILE__,__LINE__);
if ($s[3]<1000 || $s['authnick']!==sl($admfirst)) exit("access denied");
include_once("src/cnfvar.php");
$var=substr(@html($var),0,10);
$proc="cnfvar_init_$var";
if (function_exists($proc)) $proc();
if (!isset($cnfvar[$var])) exit("errAD1318");
loadconf(1);
$conf["_$var"]=$cnfvardef[$var];
$conf=sortarray($conf);
saveconf();
exit(refresh("$PHP_SELF?c=cnfvar&var=$var",0,__FILE__,__LINE__));
case "cnfvarpost":
checkhack('cnfvar',__FILE__,__LINE__);
if ($s[3]<1000 || $s['authnick']!==sl($admfirst)) exit("access denied");
include_once("src/cnfvar.php");
$var=substr(@html($var),0,10);
$proc="cnfvar_init_$var";
if (function_exists($proc)) $proc();
if (!isset($cnfvar[$var])) exit("errAD1318 $var");
loadconf(1);
$conf["_$var"]=cnfvarcheck($var,$form,$cnfvar[$var],$cnfvardef[$var]);
saveconf();
exit(refresh("$PHP_SELF?c=cnfvar&var=$var",0,__FILE__,__LINE__));
break;
}
?>".implode("",$nicks)."
".implode("",$nicks)."
";
include("z-web-part2.php");
break;
case "add_admin":
conf2admlist();
$my=sl($s['authnick']);
if ($s[3]<$admcmd['admin_list'] || !isset($adminfo[$my])) exit("access deined");
if (strlen($susp)==0) $susp=min(intval($access),$adminfo[$my]['susp']-1);
if ($s[3]<1000) {
$maxaccess=max(0,min($s[3]-1,intval($adminfo[$my]['edit'])));
$maxedit=$maxaccess;
$maxsusp=intval($adminfo[$my]['susp']);
}
else {
$maxaccess=$maxedit=$maxsusp=1000;
}
$access=min(abs(intval($access)),1000);
$edit=min(abs(intval($edit)),1000);
$susp=min(abs(intval($susp)),1000);
if ($access>$maxaccess) {
alert("Вы не можете назначить уровень пользователя $access. Устанавливаю $maxaccess");
$access=$maxaccess;
}
if ($edit>$maxedit) {
alert("Вы не можете назначить Edit* уровня $edit. Устанавливаю $maxedit");
$edit=$maxedit;
}
if ($susp>$maxsusp) {
alert("Вы не можете назначить Suspend* уровень $susp. Устанавливаю $maxsusp");
$susp=$maxsusp;
}
if ($access==0) exit("Доступ уровня 0 назначать нельзя");
$nick1=$nick;
$nick=sl(substr(strip_tags(trim($nick)),0,100));
if (isset($admlist[$nick])) exit("Пользователь уже имеет доступ и находится в списке админов");
if (!empty($create)) {
if ($conf['newreg']==1) exit("Регистрация новых пользователей запрещена");
if ($conf['newreg']==4 && $s[3]<900) exit("Регистрация новых пользователей разрешена только админам +900");
if ($conf['newreg']==5 && $s[3]<1000) exit("Регистрация новых пользователей разрешена только админам +1000");
include_once("src/misc.php");
check_reg_nick($nick1,$error);
if (isset($error)) {
echo "При попытке регистрации нового ника ".html($nick)." найдены ошибки в самом нике:";
foreach ($error['nick'] as $k=>$v) echo " ";
foreach ($admcmd_def as $k=>$v) {
foreach ($v as $kk=>$vv) {
if ($admcmd[$kk]<=$a && $admcmd[$kk]>0) echo "Название
праваМин.
доступПодробное описание ";
}
}
echo "$kk $vv[0] ".html($vv[1])."
Не нажимайте Обновить(Refresh). Запишите пароль созданного пользователя.
";
}
if (!dbload($nick,$info)) {
include("z-web-part1.php");
echo "Пользователь $nick не существует
<<< Отменить и вернуться назад
";
include_once("src/misc.php");
check_reg_nick($nick1,$error);
if (isset($error)) {
echo "Внимание! Будущий ник ".html($nick)." не будет зарегистрирован из-за его недопустимости:";
foreach ($error['nick'] as $k=>$v) echo "Уровни прав администраторов
".backlinks(array('admin')).
"
Право менять уровни доступа администраторов может только владелец чата.
Просмотр настроек основного конфига
".
backlinks(array('admin','к странице справки'=>"help.php?help=12$sess"));
foreach ($name as $k=>$v) {
echo "