<?
// Обзор диагностики системы SHCMS Engine
switch($act):
//По умолчанию получаем данные ниже
default:
echo '<div class="mainname">'.Lang::__('Диагностика').'</div>';
echo '<div class="mainpost">';
echo '<div class="subpost"><img src="../icons/support/info.png"> <a href="index.php?do=diagnostic&act=info">'.Lang::__('Системный обзор').'</a></div>';
echo '</div>';
echo engine::home(array(Lang::__('Назад'),'index.php'));
break;
//Подробная информация
case 'info':
//Получаем счетчик всех пользователей
$r_user = $db->get_array($db->query("SELECT COUNT(*) FROM `users`"));
//Получаем счетчик авторизованных
$online = $db->get_array($db->query('SELECT COUNT(*) FROM `users` WHERE `lastdate` > '.(time()-600).''));
//Вывод статистики необходимой
echo '<div class="mainname">'.Lang::__('Статистика').'</div>';
echo '<div class="mainpost">';
echo '<b>'.Lang::__('Пользователей').':</b> '.engine::number($r_user[0]).'<br/>';
echo '<div class="desc">'.Lang::__('В сети').':</b> <a style="color: #3287c9;" href="/modules/all_users.php?do=online_user">'.Lang::__('Просмотр').'</a> ('.engine::number($online[0]).')</div>';
echo '<hr/>';
$topic = $db->get_array($db->query("SELECT COUNT(*) FROM `forum_topics`"));
$topic_close = $db->get_array($db->query("SELECT COUNT(*) FROM `forum_topics` WHERE `close` = '2'"));
$topic_open = $db->get_array($db->query("SELECT COUNT(*) FROM `forum_topics` WHERE `close` = '1'"));
echo '<b>'.Lang::__('Тем').': </b>'.engine::number($topic[0]).'<br/>';
echo '<div class="desc">'.Lang::__('Закрытые темы').':</b> '.engine::number($topic_close[0]).'</div>';
echo '<div class="desc">'.Lang::__('Открытые темы').':</b> '.engine::number($topic_open[0]).'</div>';
echo '<hr/>';
$message = $db->get_array($db->query("SELECT COUNT(*) FROM `messaging`"));
$message_topic = $db->get_array($db->query("SELECT COUNT(*) FROM `messaging_topics`"));
echo '<b>'.Lang::__('Сообщений').': </b>'.engine::number($message[0]).'<br/>';
echo '<div class="desc">'.Lang::__('Тем создано').':</b> '.engine::number($message_topic[0]).'</div>';
echo '</div>';
//Выводим полную системную информацию
echo '<div class="mainname">'.Lang::__('Системная информация').'</div>';
echo '<div class="mainpost">';
$extensions = get_loaded_extensions();
$extensions = array_combine( $extensions, $extensions );
sort( $extensions, SORT_STRING );
$extension = str_replace( "suhosin", "<strong>suhosin</strong>", implode( ", ", $extensions ) );
$server_software = @php_uname();
//материал сервера
$total_memory = '<font color="red">'.Lang::__('Не выведена').'</font>';
$avail_memory = '<font color="red">'.Lang::__('Не выведена').'</font>';
$_disabled = @ini_get('disable_functions') ? explode( ',', @ini_get('disable_functions') ) : array();
$_shellExecAvail = in_array( 'shell_exec', $_disabled ) ? false : true;
if( $_shellExecAvail ) {
if( strpos( strtolower( PHP_OS ), 'win' ) === 0 ) {
$tasks = @shell_exec( "tasklist" );
$tasks = str_replace( " ", " ", $tasks );
$tasks = mb_convert_encoding($tasks, 'utf-8', 'CP866');
}
else if( strtolower( PHP_OS ) == 'darwin' ) {
$tasks = @shell_exec( "top -l 1" );
$tasks = str_replace( " ", " ", $tasks );
}
else {
$tasks = @shell_exec( "top -b -n 1" );
$tasks = str_replace( " ", " ", $tasks );
}
}
else {
$tasks = '';
}
if( !$tasks ) {
$tasks = Lang::__('Ошибки при получение информации');
}
else {
$tasks = "<pre>".$tasks."</pre>";
}
if( strpos( strtolower( PHP_OS ), 'win' ) === 0 ){
$mem = $_shellExecAvail ? @shell_exec('systeminfo') : null;
if( $mem ) {
$server_reply = explode( "\n", str_replace( "\r", "", $mem ) );
if( count($server_reply) ) {
foreach( $server_reply as $info ) {
if( strstr( $info, Lang::__('Всего физической памяти')) ) {
$total_memory = trim( str_replace( ":", "", strrchr( $info, ":" ) ) );
}
if( strstr( $info, Lang::__('Доступно физической памяти')) ) {
$avail_memory = trim( str_replace( ":", "", strrchr( $info, ":" ) ) );
}
}
}
}
}
else {
$mem = $_shellExecAvail ? @shell_exec("free -m") : null;
if( $mem ) {
$server_reply = explode( "\n", str_replace( "\r", "", $mem ) );
$mem = array_slice( $server_reply, 1, 1 );
$mem = preg_split( "#\s+#", $mem[0] );
$total_memory = ( $mem[1] ) ? $mem[1] . ' MB' : '--';
$avail_memory = ( $mem[3] ) ? $mem[3] . ' MB' : '--';
}
else {
$total_memory = '--';
$avail_memory = '--';
}
}
//Выводим таблицу со всеми данными
echo '<table class="STable">
<tbody>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('Версия SHCMS Engine').'</strong></td>
<td class="field_field">v '.$sversion->ShortVersion().' (Build: #'.$sversion->BuildVersion().')</td>
</tr>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('Статус развития').'</strong></td>
<td class="field_field">'.$sversion->StatusVersion().'</td>
</tr>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('Основатель системы').'</strong></td>
<td class="field_field">'.$sversion->AuthorVersion().'</td>
</tr>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('MYSQLI Версия').'</strong></td>
<td class="field_field">'.mysqli_get_client_info().'</td>
</tr>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('PHP Версия').'</strong></td>
<td class="field_field">'.PHP_VERSION.'</td>
</tr>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('Отключенные PHP функции').'</strong></td>
<td class="field_field"><a href="index.php?do=diagnostic&act=php_function">'.Lang::__('Просмотр').'</a></td>
</tr>
<tr>
<td class="field_title"><strong class="title">'.Lang::__('Загруженные расширение').'</strong></td>
<td class="field_field">'.$extension.'</td>
</tr>
</tbody>
</table>';
echo '</div>';
//Получаем уведомление об авторских прав
echo '<div class="mainname">'.Lang::__('Авторские права').'</div>';
echo '<div class="mainpost">';
echo '<div class="subpost">';
echo $sversion->CopyrightVersion();
echo '</div>';
echo '</div>';
//Получаем информацию о системных процессах необходимых для работыыы
echo '<div class="mainname">'.Lang::__('Системные процессы').'</div>';
echo '<div class="mainpost">';
echo $tasks;
echo '</div>';
//Переадресация
echo engine::home(array(Lang::__('Назад'),'index.php?do=diagnostic'));
break;
//Отключенные + Неотлюченные функции php
case 'php_function':
echo '<div class="mainname">'.Lang::__('Небезопастные PHP функции').'</div>';
echo '<div class="mainpost">';
echo '<div class="subpost"><img src="../icons/support/frame.png"> Полную информацию о безопастности почитайте тут - <a href="/admin/system/index.php?do=system&act=info_phpfunction">Просмотр</a></div>';
//Небезопастная функция exec
echo '<div class="subpost"><img src="../icons/support/text.png"> <b>exec</b> - ';
if (!engine::function_enabled('exec')) {
echo '<font color="green"><b>Отключена</b></font>';
}else {
echo '<font color="red"><b>Включена</b></font>';
}
echo '<br/>Описание: Исполняет внешнюю программу'; // Описание
echo '<hr/>';
//Небезопастная функция system
echo '<img src="../icons/support/text.png"> <b>system</b> - ';
if (!engine::function_enabled('system')) {
echo '<font color="green"><b>Отключена</b></font>';
}else {
echo '<font color="red"><b>Включена</b></font>';
}
echo '<br/>Описание: Выполняет внешнюю программу и отображает её вывод';// Описание
echo '<hr/>';
//Небезопастная функция popen
echo '<img src="../icons/support/text.png"> <b>popen</b> - ';
if (!engine::function_enabled('popen')) {
echo '<font color="green"><b>Отключена</b></font>';
}else {
echo '<font color="red"><b>Включена</b></font>';
}
echo '<br/>Описание: Открывает файловый указатель процесса';// Описание
echo '<hr/>';
//Небезопастная функция proc_open
echo '<img src="../icons/support/text.png"> <b>proc_open</b> - ';
if (!engine::function_enabled('proc_open')) {
echo '<font color="green"><b>Отключена</b></font>';
}else {
echo '<font color="red"><b>Включена</b></font>';
}
echo '<br/>Описание: Выполняет команду и открывает указатель на файл для ввода/вывода'; // Описание
echo '<hr/>';
//Небезопастная функция shell_exec
echo '<img src="../icons/support/text.png"> <b>shell_exec</b> - ';
if (!engine::function_enabled('shell_exec')) {
echo '<font color="green"><b>Отключена</b></font>';
}else {
echo '<font color="red"><b>Включена</b></font>';
}
echo '<br/>Описание: Выполняет команду через шелл и возвращает полный вывод в виде строки';// Описание
echo '</div>';
echo '</div>';
echo engine::home(array(Lang::__('Назад'),'index.php?do=diagnostic&act=info'));
break;
endswitch;
?>