View file admin/support/diagnostics.php

File size: 13.53Kb
<?
// Обзор диагностики системы 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">&nbsp;<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>&nbsp;'.engine::number($r_user[0]).'<br/>';
			            echo '<div class="desc">'.Lang::__('В сети').':</b>&nbsp;<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::__('Тем').':&nbsp;</b>'.engine::number($topic[0]).'<br/>';
                    echo '<div class="desc">'.Lang::__('Закрытые темы').':</b>&nbsp;'.engine::number($topic_close[0]).'</div>';
				    echo '<div class="desc">'.Lang::__('Открытые темы').':</b>&nbsp;'.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::__('Сообщений').':&nbsp;</b>'.engine::number($message[0]).'<br/>';	
                    echo '<div class="desc">'.Lang::__('Тем создано').':</b>&nbsp;'.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( " ", "&nbsp;", $tasks );
				                        $tasks = mb_convert_encoding($tasks, 'utf-8', 'CP866');
			                    }
			                    else if( strtolower( PHP_OS ) == 'darwin' ) {
				                    $tasks = @shell_exec( "top -l 1" );
				                        $tasks = str_replace( " ", "&nbsp;", $tasks );
			                    }
			                    else {
				                    $tasks = @shell_exec( "top -b -n 1" );
				                        $tasks = str_replace( " ", "&nbsp;", $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&nbsp;'.$sversion->ShortVersion().'&nbsp;(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">&nbsp;Полную информацию о безопастности почитайте тут - <a href="/admin/system/index.php?do=system&act=info_phpfunction">Просмотр</a></div>';
                    
					//Небезопастная функция exec
			        echo '<div class="subpost"><img src="../icons/support/text.png">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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">&nbsp;<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;
?>