]>
Commit | Line | Data |
---|---|---|
4e60ae1d ER |
1 | <?php |
2 | /** | |
3 | * Nagios Status Query Builder | |
4 | * | |
5 | * Can be used to build urls to display active Nagios status on some kind of wall screen. | |
6 | * And browser side auto-refresh. | |
7 | * | |
8 | * Author: Elan Ruusamäe <glen@delfi.ee> | |
9 | * Copyright: GPL v2 | |
10 | * | |
11 | * $Id$ | |
12 | */ | |
13 | ||
14 | $defaults = array( | |
15 | 'host' => 'all', | |
16 | 'hostprops' => '42', | |
17 | 'hoststatustypes' => '14', | |
18 | 'serviceprops' => '42', | |
19 | 'servicestatustypes' => '28', | |
20 | 'sortoption' => '3', | |
21 | 'sorttype' => '2', | |
22 | ); | |
23 | ||
24 | foreach (array('servicestatustypes', 'serviceprops', 'hoststatustypes', 'hostprops') as $k) { | |
25 | if (!is_array($_GET[$k])) { | |
26 | continue; | |
27 | } | |
28 | $v = 0; | |
29 | foreach ($_GET[$k] as $bit) { | |
30 | $v |= $bit; | |
31 | } | |
32 | $_GET[$k] = $v; | |
33 | } | |
34 | ||
35 | $props = array(); | |
36 | foreach ($defaults as $k => $v) { | |
37 | $props[$k] = isset($_GET[$k]) ? $_GET[$k] : $defaults[$k]; | |
38 | } | |
39 | ||
40 | $hoststatustypes = array( | |
41 | 'HOST_PENDING' => 1, | |
42 | 'HOST_UP' => 2, | |
43 | 'HOST_DOWN' => 4, | |
44 | 'HOST_UNREACHABLE' => 8, | |
45 | ); | |
46 | ||
47 | $servicestatustypes = array( | |
48 | 'SERVICE_PENDING' => 1, | |
49 | 'SERVICE_OK' => 2, | |
50 | 'SERVICE_WARNING' => 4, | |
51 | 'SERVICE_UNKNOWN' => 8, | |
52 | 'SERVICE_CRITICAL' => 16, | |
53 | ); | |
54 | ||
55 | $hostprops = array( | |
56 | 'HOST_SCHEDULED_DOWNTIME' => 1, | |
57 | 'HOST_NO_SCHEDULED_DOWNTIME' => 2, | |
58 | 'HOST_STATE_ACKNOWLEDGED' => 4, | |
59 | 'HOST_STATE_UNACKNOWLEDGED' => 8, | |
60 | 'HOST_CHECKS_DISABLED' => 16, | |
61 | 'HOST_CHECKS_ENABLED' => 32, | |
62 | 'HOST_EVENT_HANDLER_DISABLED' => 64, | |
63 | 'HOST_EVENT_HANDLER_ENABLED' => 128, | |
64 | 'HOST_FLAP_DETECTION_DISABLED' => 256, | |
65 | 'HOST_FLAP_DETECTION_ENABLED' => 512, | |
66 | 'HOST_IS_FLAPPING' => 1024, | |
67 | 'HOST_IS_NOT_FLAPPING' => 2048, | |
68 | 'HOST_NOTIFICATIONS_DISABLED' => 4096, | |
69 | 'HOST_NOTIFICATIONS_ENABLED' => 8192, | |
70 | 'HOST_PASSIVE_CHECKS_DISABLED' => 16384, | |
71 | 'HOST_PASSIVE_CHECKS_ENABLED' => 32768, | |
72 | 'HOST_PASSIVE_CHECK' => 65536, | |
73 | 'HOST_ACTIVE_CHECK' => 131072, | |
74 | 'HOST_HARD_STATE' => 262144, | |
75 | 'HOST_SOFT_STATE' => 524288, | |
76 | ); | |
77 | ||
78 | $serviceprops = array( | |
79 | 'SERVICE_SCHEDULED_DOWNTIME' => 1, | |
80 | 'SERVICE_NO_SCHEDULED_DOWNTIME' => 2, | |
81 | 'SERVICE_STATE_ACKNOWLEDGED' => 4, | |
82 | 'SERVICE_STATE_UNACKNOWLEDGED' => 8, | |
83 | 'SERVICE_CHECKS_DISABLED' => 16, | |
84 | 'SERVICE_CHECKS_ENABLED' => 32, | |
85 | 'SERVICE_EVENT_HANDLER_DISABLED' => 64, | |
86 | 'SERVICE_EVENT_HANDLER_ENABLED' => 128, | |
87 | 'SERVICE_FLAP_DETECTION_ENABLED' => 256, | |
88 | 'SERVICE_FLAP_DETECTION_DISABLED' => 512, | |
89 | 'SERVICE_IS_FLAPPING' => 1024, | |
90 | 'SERVICE_IS_NOT_FLAPPING' => 2048, | |
91 | 'SERVICE_NOTIFICATIONS_DISABLED' => 4096, | |
92 | 'SERVICE_NOTIFICATIONS_ENABLED' => 8192, | |
93 | 'SERVICE_PASSIVE_CHECKS_DISABLED' => 16384, | |
94 | 'SERVICE_PASSIVE_CHECKS_ENABLED' => 32768, | |
95 | 'SERVICE_PASSIVE_CHECK' => 65536, | |
96 | 'SERVICE_ACTIVE_CHECK' => 131072, | |
97 | 'SERVICE_HARD_STATE' => 262144, | |
98 | 'SERVICE_SOFT_STATE' => 524288, | |
99 | ); | |
100 | ||
101 | function form_bit($field, $value, $bit) { | |
102 | echo '<option value="', $bit, '" ', ($value & $bit ? 'selected' : ''), '>', $field, '</option>'; | |
103 | } | |
104 | ||
105 | function form_multiple($field, $values) { | |
106 | global $props; | |
107 | echo '<select multiple name="', $field, '[]">'; | |
108 | foreach ($values as $k => $v) { | |
109 | form_bit($k, $props[$field], $v); | |
110 | } | |
111 | echo '</select>'; | |
112 | } | |
113 | ||
114 | $args = http_build_query($props); | |
115 | if (!empty($_GET['control'])) { | |
116 | ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> | |
117 | <html> | |
118 | <head> | |
119 | <meta name="robots" content="noindex, nofollow"> | |
120 | <title>Wall</title> | |
121 | <LINK REL='stylesheet' TYPE='text/css' HREF='/nagios/stylesheets/common.css'><LINK REL='stylesheet' TYPE='text/css' HREF='/nagios/stylesheets/status.css'></head> | |
122 | </head> | |
123 | <form target="_top" action="?control=0"> | |
124 | <div style="font-family: Tahoma, Arial, Sans-Serif; font-size: 8pt; float: left;">servicestatustypes (<?= $props['servicestatustypes'] ?>):<br/><?= form_multiple('servicestatustypes', $servicestatustypes) ?><br/></div> | |
125 | <div style="font-family: Tahoma, Arial, Sans-Serif; font-size: 8pt; float: left;">serviceprops(<?= $props['serviceprops'] ?>):<br/><?= form_multiple('serviceprops', $serviceprops) ?><br/></div> | |
126 | <div style="font-family: Tahoma, Arial, Sans-Serif; font-size: 8pt; float: left;">hoststatustypes (<?= $props['hoststatustypes'] ?>):<br/><?= form_multiple('hoststatustypes', $hoststatustypes) ?><br/></div> | |
127 | <div style="font-family: Tahoma, Arial, Sans-Serif; font-size: 8pt; float: left;">hostprops(<?= $props['hostprops'] ?>):<br/><?= form_multiple('hostprops', $hostprops) ?><br/></div> | |
128 | <div class="font-family: Tahoma, Arial, Sans-Serif; font-size: 8pt; clear: both;"><input type=submit></div> | |
129 | </form> | |
130 | </tr></table> | |
131 | <?php | |
132 | echo "$url"; | |
133 | exit; | |
134 | } | |
135 | ||
136 | ?><frameset rows="90,*"> | |
137 | <frame name="control" frameborder="0" src="<?= basename($_SERVER['SCRIPT_NAME']) ?>?control=1&<?= htmlspecialchars($args) ?>"> | |
138 | <frame name="nagios" frameborder="0" src="/nagios/cgi-bin/status.cgi?<?= htmlspecialchars($args) ?>"> | |
139 | </frameset> | |
140 | </html> |