nagios.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. $default_displayed=500;
  3. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/auth.php");
  4. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/languages/" . $language . ".php");
  5. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/header.php");
  6. $default_sort='ip_int';
  7. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/oufilter.php");
  8. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/subnetfilter.php");
  9. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/sortfilter.php");
  10. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/gatefilter.php");
  11. $enabled=2;
  12. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/enabledfilter.php");
  13. if (isset($_POST["ApplyForAll"])) {
  14. $auth_id = $_POST["fid"];
  15. $n_enabled = $_POST["n_enabled"] * 1;
  16. $n_link = $_POST["n_enabled"] * 1;
  17. $n_handler = $_POST["n_handler"];
  18. $msg="Массовое изменение пользователей!";
  19. foreach ($auth_id as $key => $val) {
  20. if ($val) {
  21. unset($auth);
  22. $auth['nagios'] = $n_enabled;
  23. $auth['link_check'] = $n_link;
  24. $auth['nagios_handler'] = $n_handler;
  25. update_record($db_link, "User_auth", "id='" . $val . "'", $auth);
  26. }
  27. }
  28. LOG_WARNING($db_link,$msg);
  29. header("Location: " . $_SERVER["REQUEST_URI"]);
  30. exit;
  31. }
  32. $sort_table = 'User_auth';
  33. if ($sort_field == 'login') { $sort_table = 'User_list'; }
  34. if ($sort_field == 'fio') { $sort_table = 'User_list'; }
  35. $sort_url = "<a href=nagios.php?ou=" . $rou;
  36. if ($rou == 0) { $ou_filter = ''; } else { $ou_filter = " and User_list.ou_id=$rou "; }
  37. if ($rsubnet == 0) { $subnet_filter = ''; } else {
  38. $subnet_range = get_subnet_range($db_link,$rsubnet);
  39. if (!empty($subnet_range)) { $subnet_filter = " and User_auth.ip_int>=".$subnet_range['start']." and User_auth.ip_int<=".$subnet_range['stop']; }
  40. }
  41. $enabled_filter='';
  42. if ($enabled>0) {
  43. if ($enabled===2) { $enabled_filter = ' and User_auth.nagios=1'; }
  44. if ($enabled===1) { $enabled_filter = ' and User_auth.nagios=0'; }
  45. }
  46. $ip_list_filter = $ou_filter.$subnet_filter.$enabled_filter;
  47. print_ip_submenu($page_url);
  48. ?>
  49. <div id="cont">
  50. <form name="def" action="nagios.php" method="post">
  51. <table class="data">
  52. <tr>
  53. <td>
  54. <b><?php print $list_ou; ?> - </b><?php print_ou_select($db_link, 'ou', $rou); ?>
  55. <b>Отображать:<?php print_row_at_pages('rows',$displayed); ?>
  56. <b><?php print $list_subnet; ?> - </b><?php print_subnet_select_office($db_link, 'subnet', $rsubnet); ?>
  57. <b>Мониторится - </b><?php print_enabled_select('enabled', $enabled); ?>
  58. <input type="submit" value="Показать">
  59. </td>
  60. </tr>
  61. </table>
  62. <?php
  63. $countSQL="SELECT Count(*) FROM User_auth, User_list WHERE User_auth.user_id = User_list.id AND User_auth.deleted =0 $ip_list_filter";
  64. $res = mysqli_query($db_link, $countSQL);
  65. $count_records = mysqli_fetch_array($res);
  66. $total=ceil($count_records[0]/$displayed);
  67. if ($page>$total) { $page=$total; }
  68. if ($page<1) { $page=1; }
  69. $start = ($page * $displayed) - $displayed;
  70. print_navigation($page_url,$page,$displayed,$count_records[0],$total);
  71. ?>
  72. <br>
  73. <table class="data">
  74. <tr>
  75. <td>Для выделенных установить: Nagios&nbsp<?php print_qa_select('n_enabled', 1); ?></td>
  76. <td>Lnk&nbsp<?php print_qa_select('n_link', 0); ?></td>
  77. <td>Event-handler&nbsp<?php print_nagios_handler_select('n_handler', ''); ?></td>
  78. <td>&nbsp<input type="submit" onclick="return confirm('Применить для выделенных?')" name="ApplyForAll" value="Применить"></td>
  79. </tr>
  80. </table>
  81. <table class="data">
  82. <tr>
  83. <td align=Center><input type="checkbox" onClick="checkAll(this.checked);"></td>
  84. <td align=Center><?php print $sort_url . "&sort=login&order=$new_order>" . $cell_login . "</a>"; ?></td>
  85. <td align=Center><?php print $sort_url . "&sort=ip_int&order=$new_order>" . $cell_ip . "</a>"; ?></td>
  86. <td align=Center><?php print $sort_url . "&sort=mac&order=$new_order>" . $cell_mac . "</a>"; ?></td>
  87. <td align=Center><?php print $cell_comment; ?></td>
  88. <td align=Center><?php print $cell_wikiname; ?></td>
  89. <td align=Center><?php print $sort_url . "&sort=nagios&order=$new_order>" . $cell_nagios; ?></td>
  90. <td align=Center><?php print $sort_url . "&sort=link_check&order=$new_order>" . $cell_link; ?></td>
  91. <td align=Center><?php print $cell_nagios_handler; ?></td>
  92. <td align=Center><?php print $sort_url . "&sort=last_found&order=$new_order>Last</a>"; ?></td>
  93. <td align=Center><?php print $cell_connection; ?></td>
  94. </tr>
  95. <?php
  96. $sSQL = "SELECT User_auth.*, User_list.login FROM User_auth, User_list
  97. WHERE User_auth.user_id = User_list.id AND User_auth.deleted =0 $ip_list_filter
  98. ORDER BY $sort_table.$sort_field $order LIMIT $start,$displayed";
  99. $users = get_records_sql($db_link,$sSQL);
  100. foreach ($users as $user) {
  101. if ($user['dhcp_time'] == '0000-00-00 00:00:00') {
  102. $dhcp_str = '';
  103. } else {
  104. $dhcp_str = $user['dhcp_time'] . " (" . $user['dhcp_action'] . ")";
  105. }
  106. if ($user['last_found'] == '0000-00-00 00:00:00') { $user['last_found'] = ''; }
  107. print "<tr align=center>\n";
  108. $cl = "data";
  109. if ($user['nagios_status'] == "UP") { $cl = "up"; }
  110. if ($user['nagios_status'] == "DOWN") { $cl = "down"; }
  111. if (!$user['nagios']) { $cl = "data"; }
  112. print "<td class=\"$cl\" style='padding:0'><input type=checkbox name=fid[] value=".$user['id']."></td>\n";
  113. print "<td class=\"$cl\" ><a href=/admin/users/edituser.php?id=".$user['user_id'].">" . $user['login'] . "</a></td>\n";
  114. print "<td class=\"$cl\" ><a href=/admin/users/editauth.php?id=".$user['id'].">" . $user['ip'] . "</a></td>\n";
  115. print "<td class=\"$cl\" >" . expand_mac($db_link,$user['mac']) . "</td>\n";
  116. if (isset($user['dhcp_hostname']) and strlen($user['dhcp_hostname']) > 0) {
  117. print "<td class=\"$cl\" width=200>".$user['comments']." [" . $user['dhcp_hostname'] . "]</td>\n";
  118. } else {
  119. print "<td class=\"$cl\" width=200>".$user['comments']."</td>\n";
  120. }
  121. if (!empty($user['WikiName'])) {
  122. $wiki_url = rtrim(get_option($db_link, 60),'/');
  123. if (preg_match('/127.0.0.1/', $wiki_url)) { print "<td class=\"$cl\" ></td>\n"; } else {
  124. $wiki_web = rtrim(get_option($db_link, 63),'/');
  125. $wiki_web = ltrim($wiki_web,'/');
  126. $wiki_link = $wiki_url.'/'.$wiki_web.'/'.$user['WikiName'];
  127. print "<td class=\"$cl\" >"; print_url($user['WikiName'],$wiki_link); print "</td>\n";
  128. }
  129. } else {
  130. print "<td class=\"$cl\" ></td>\n";
  131. }
  132. if (!empty($user['nagios']) and $user['nagios']) {
  133. $nagios_url = rtrim(get_option($db_link, 57),'/');
  134. if (preg_match('/127.0.0.1/', $nagios_url)) { print "<td class=\"$cl\" >". get_qa($user['nagios']) ."</td>\n"; } else {
  135. $nagios_link = $nagios_url.'/cgi-bin/status.cgi?host='.get_nagios_name($user);
  136. print "<td class=\"$cl\" >"; print_url(get_qa($user['nagios']),$nagios_link); print "</td>\n";
  137. }
  138. } else {
  139. print "<td class=\"$cl\" >" . get_qa($user['nagios']) . "</td>\n";
  140. }
  141. print "<td class=\"$cl\" >" . get_qa($user['link_check']) . "</td>\n";
  142. print "<td class=\"$cl\" >".$user['nagios_handler']."</td>\n";
  143. print "<td class=\"$cl\" >".$user['last_found']."</td>\n";
  144. print "<td class=\"$cl\" >" . get_connection($db_link, $user['id']) . "</td>\n";
  145. print "</tr>\n";
  146. }
  147. print "</table>\n";
  148. print_navigation($page_url,$page,$displayed,$count_records[0],$total);
  149. ?>
  150. <br>
  151. <table class="data">
  152. <tr><td>Цветовая маркировка</td></tr>
  153. <tr>
  154. <td class="up">Хост включен</td>
  155. <td class="down">Хост недоступен</td>
  156. <td class="data">Неизвестно</td>
  157. </table>
  158. <?php
  159. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/footer.php");
  160. ?>