Просмотр файла admin/support/diagnostics.php

Размер файла: 13.53Kb
  1. <?
  2. // Обзор диагностики системы SHCMS Engine
  3.  
  4. switch($act):
  5. //По умолчанию получаем данные ниже
  6. default:
  7. echo '<div class="mainname">'.Lang::__('Диагностика').'</div>';
  8. echo '<div class="mainpost">';
  9. echo '<div class="subpost"><img src="../icons/support/info.png">&nbsp;<a href="index.php?do=diagnostic&act=info">'.Lang::__('Системный обзор').'</a></div>';
  10. echo '</div>';
  11. echo engine::home(array(Lang::__('Назад'),'index.php'));
  12. break;
  13. //Подробная информация
  14. case 'info':
  15. //Получаем счетчик всех пользователей
  16. $r_user = $db->get_array($db->query("SELECT COUNT(*) FROM `users`"));
  17. //Получаем счетчик авторизованных
  18. $online = $db->get_array($db->query('SELECT COUNT(*) FROM `users` WHERE `lastdate` > '.(time()-600).''));
  19. //Вывод статистики необходимой
  20. echo '<div class="mainname">'.Lang::__('Статистика').'</div>';
  21. echo '<div class="mainpost">';
  22. echo '<b>'.Lang::__('Пользователей').':</b>&nbsp;'.engine::number($r_user[0]).'<br/>';
  23. 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>';
  24. echo '<hr/>';
  25. $topic = $db->get_array($db->query("SELECT COUNT(*) FROM `forum_topics`"));
  26. $topic_close = $db->get_array($db->query("SELECT COUNT(*) FROM `forum_topics` WHERE `close` = '2'"));
  27. $topic_open = $db->get_array($db->query("SELECT COUNT(*) FROM `forum_topics` WHERE `close` = '1'"));
  28. echo '<b>'.Lang::__('Тем').':&nbsp;</b>'.engine::number($topic[0]).'<br/>';
  29. echo '<div class="desc">'.Lang::__('Закрытые темы').':</b>&nbsp;'.engine::number($topic_close[0]).'</div>';
  30. echo '<div class="desc">'.Lang::__('Открытые темы').':</b>&nbsp;'.engine::number($topic_open[0]).'</div>';
  31. echo '<hr/>';
  32. $message = $db->get_array($db->query("SELECT COUNT(*) FROM `messaging`"));
  33. $message_topic = $db->get_array($db->query("SELECT COUNT(*) FROM `messaging_topics`"));
  34. echo '<b>'.Lang::__('Сообщений').':&nbsp;</b>'.engine::number($message[0]).'<br/>';
  35. echo '<div class="desc">'.Lang::__('Тем создано').':</b>&nbsp;'.engine::number($message_topic[0]).'</div>';
  36. echo '</div>';
  37. //Выводим полную системную информацию
  38. echo '<div class="mainname">'.Lang::__('Системная информация').'</div>';
  39. echo '<div class="mainpost">';
  40. $extensions = get_loaded_extensions();
  41. $extensions = array_combine( $extensions, $extensions );
  42. sort( $extensions, SORT_STRING );
  43. $extension = str_replace( "suhosin", "<strong>suhosin</strong>", implode( ", ", $extensions ) );
  44. $server_software = @php_uname();
  45. //материал сервера
  46. $total_memory = '<font color="red">'.Lang::__('Не выведена').'</font>';
  47. $avail_memory = '<font color="red">'.Lang::__('Не выведена').'</font>';
  48. $_disabled = @ini_get('disable_functions') ? explode( ',', @ini_get('disable_functions') ) : array();
  49. $_shellExecAvail = in_array( 'shell_exec', $_disabled ) ? false : true;
  50. if( $_shellExecAvail ) {
  51. if( strpos( strtolower( PHP_OS ), 'win' ) === 0 ) {
  52. $tasks = @shell_exec( "tasklist" );
  53. $tasks = str_replace( " ", "&nbsp;", $tasks );
  54. $tasks = mb_convert_encoding($tasks, 'utf-8', 'CP866');
  55. }
  56. else if( strtolower( PHP_OS ) == 'darwin' ) {
  57. $tasks = @shell_exec( "top -l 1" );
  58. $tasks = str_replace( " ", "&nbsp;", $tasks );
  59. }
  60. else {
  61. $tasks = @shell_exec( "top -b -n 1" );
  62. $tasks = str_replace( " ", "&nbsp;", $tasks );
  63. }
  64. }
  65. else {
  66. $tasks = '';
  67. }
  68. if( !$tasks ) {
  69. $tasks = Lang::__('Ошибки при получение информации');
  70. }
  71. else {
  72. $tasks = "<pre>".$tasks."</pre>";
  73. }
  74. if( strpos( strtolower( PHP_OS ), 'win' ) === 0 ){
  75. $mem = $_shellExecAvail ? @shell_exec('systeminfo') : null;
  76. if( $mem ) {
  77. $server_reply = explode( "\n", str_replace( "\r", "", $mem ) );
  78. if( count($server_reply) ) {
  79. foreach( $server_reply as $info ) {
  80. if( strstr( $info, Lang::__('Всего физической памяти')) ) {
  81. $total_memory = trim( str_replace( ":", "", strrchr( $info, ":" ) ) );
  82. }
  83. if( strstr( $info, Lang::__('Доступно физической памяти')) ) {
  84. $avail_memory = trim( str_replace( ":", "", strrchr( $info, ":" ) ) );
  85. }
  86. }
  87. }
  88. }
  89. }
  90. else {
  91. $mem = $_shellExecAvail ? @shell_exec("free -m") : null;
  92. if( $mem ) {
  93. $server_reply = explode( "\n", str_replace( "\r", "", $mem ) );
  94. $mem = array_slice( $server_reply, 1, 1 );
  95. $mem = preg_split( "#\s+#", $mem[0] );
  96. $total_memory = ( $mem[1] ) ? $mem[1] . ' MB' : '--';
  97. $avail_memory = ( $mem[3] ) ? $mem[3] . ' MB' : '--';
  98. }
  99. else {
  100. $total_memory = '--';
  101. $avail_memory = '--';
  102. }
  103. }
  104. //Выводим таблицу со всеми данными
  105. echo '<table class="STable">
  106. <tbody>
  107. <tr>
  108. <td class="field_title"><strong class="title">'.Lang::__('Версия SHCMS Engine').'</strong></td>
  109. <td class="field_field">v&nbsp;'.$sversion->ShortVersion().'&nbsp;(Build: #'.$sversion->BuildVersion().')</td>
  110. </tr>
  111. <tr>
  112. <td class="field_title"><strong class="title">'.Lang::__('Статус развития').'</strong></td>
  113. <td class="field_field">'.$sversion->StatusVersion().'</td>
  114. </tr>
  115. <tr>
  116. <td class="field_title"><strong class="title">'.Lang::__('Основатель системы').'</strong></td>
  117. <td class="field_field">'.$sversion->AuthorVersion().'</td>
  118. </tr>
  119. <tr>
  120. <td class="field_title"><strong class="title">'.Lang::__('MYSQLI Версия').'</strong></td>
  121. <td class="field_field">'.mysqli_get_client_info().'</td>
  122. </tr>
  123. <tr>
  124. <td class="field_title"><strong class="title">'.Lang::__('PHP Версия').'</strong></td>
  125. <td class="field_field">'.PHP_VERSION.'</td>
  126. </tr>
  127. <tr>
  128. <td class="field_title"><strong class="title">'.Lang::__('Отключенные PHP функции').'</strong></td>
  129. <td class="field_field"><a href="index.php?do=diagnostic&act=php_function">'.Lang::__('Просмотр').'</a></td>
  130. </tr>
  131. <tr>
  132. <td class="field_title"><strong class="title">'.Lang::__('Загруженные расширение').'</strong></td>
  133. <td class="field_field">'.$extension.'</td>
  134. </tr>
  135. </tbody>
  136. </table>';
  137. echo '</div>';
  138. //Получаем уведомление об авторских прав
  139. echo '<div class="mainname">'.Lang::__('Авторские права').'</div>';
  140. echo '<div class="mainpost">';
  141. echo '<div class="subpost">';
  142. echo $sversion->CopyrightVersion();
  143. echo '</div>';
  144. echo '</div>';
  145. //Получаем информацию о системных процессах необходимых для работыыы
  146. echo '<div class="mainname">'.Lang::__('Системные процессы').'</div>';
  147. echo '<div class="mainpost">';
  148. echo $tasks;
  149. echo '</div>';
  150. //Переадресация
  151. echo engine::home(array(Lang::__('Назад'),'index.php?do=diagnostic'));
  152. break;
  153. //Отключенные + Неотлюченные функции php
  154. case 'php_function':
  155. echo '<div class="mainname">'.Lang::__('Небезопастные PHP функции').'</div>';
  156. echo '<div class="mainpost">';
  157. echo '<div class="subpost"><img src="../icons/support/frame.png">&nbsp;Полную информацию о безопастности почитайте тут - <a href="/admin/system/index.php?do=system&act=info_phpfunction">Просмотр</a></div>';
  158. //Небезопастная функция exec
  159. echo '<div class="subpost"><img src="../icons/support/text.png">&nbsp;<b>exec</b> - ';
  160. if (!engine::function_enabled('exec')) {
  161. echo '<font color="green"><b>Отключена</b></font>';
  162. }else {
  163. echo '<font color="red"><b>Включена</b></font>';
  164. }
  165. echo '<br/>Описание: Исполняет внешнюю программу'; // Описание
  166. echo '<hr/>';
  167. //Небезопастная функция system
  168. echo '<img src="../icons/support/text.png">&nbsp;<b>system</b> - ';
  169. if (!engine::function_enabled('system')) {
  170. echo '<font color="green"><b>Отключена</b></font>';
  171. }else {
  172. echo '<font color="red"><b>Включена</b></font>';
  173. }
  174. echo '<br/>Описание: Выполняет внешнюю программу и отображает её вывод';// Описание
  175. echo '<hr/>';
  176. //Небезопастная функция popen
  177. echo '<img src="../icons/support/text.png">&nbsp;<b>popen</b> - ';
  178. if (!engine::function_enabled('popen')) {
  179. echo '<font color="green"><b>Отключена</b></font>';
  180. }else {
  181. echo '<font color="red"><b>Включена</b></font>';
  182. }
  183. echo '<br/>Описание: Открывает файловый указатель процесса';// Описание
  184. echo '<hr/>';
  185. //Небезопастная функция proc_open
  186. echo '<img src="../icons/support/text.png">&nbsp;<b>proc_open</b> - ';
  187. if (!engine::function_enabled('proc_open')) {
  188. echo '<font color="green"><b>Отключена</b></font>';
  189. }else {
  190. echo '<font color="red"><b>Включена</b></font>';
  191. }
  192. echo '<br/>Описание: Выполняет команду и открывает указатель на файл для ввода/вывода'; // Описание
  193. echo '<hr/>';
  194. //Небезопастная функция shell_exec
  195. echo '<img src="../icons/support/text.png">&nbsp;<b>shell_exec</b> - ';
  196. if (!engine::function_enabled('shell_exec')) {
  197. echo '<font color="green"><b>Отключена</b></font>';
  198. }else {
  199. echo '<font color="red"><b>Включена</b></font>';
  200. }
  201. echo '<br/>Описание: Выполняет команду через шелл и возвращает полный вывод в виде строки';// Описание
  202. echo '</div>';
  203. echo '</div>';
  204. echo engine::home(array(Lang::__('Назад'),'index.php?do=diagnostic&act=info'));
  205. break;
  206. endswitch;
  207. ?>