~ubuntu-dev/ubuntu/lucid/zabbix/lucid-201002110857

« back to all changes in this revision

Viewing changes to frontends/php/srv_status.php

  • Committer: Bazaar Package Importer
  • Author(s): Michael Ablassmeier
  • Date: 2007-07-02 09:06:51 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070702090651-8l6fl3fjw9rh6l2u
Tags: 1:1.4.1-2
Add patch from SVN in order to fix Incorrect processing of character '%'
in user parameters and remote commands.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
<?php
2
2
/* 
3
3
** ZABBIX
4
 
** Copyright (C) 2000-2005 SIA Zabbix
 
4
** Copyright (C) 2000-2007 SIA Zabbix
5
5
**
6
6
** This program is free software; you can redistribute it and/or modify
7
7
** it under the terms of the GNU General Public License as published by
19
19
**/
20
20
?>
21
21
<?php
22
 
        include "include/config.inc.php";
 
22
        require_once "include/config.inc.php";
 
23
        require_once "include/services.inc.php";
 
24
 
23
25
        $page["title"] = "S_IT_SERVICES";
24
26
        $page["file"] = "srv_status.php";
25
 
        show_header($page["title"],1,0);
26
 
?>
27
 
<?php
28
 
        if(!check_anyright("Service","R"))
29
 
        {
30
 
                show_table_header("<font color=\"AA0000\">".S_NO_PERMISSIONS."</font>");
31
 
                show_page_footer();
32
 
                exit;
33
 
        }
34
 
?>
35
 
<?php
36
 
        update_profile("web.menu.view.last",$page["file"]);
37
 
?>
38
 
 
 
27
 
 
28
        define('ZBX_PAGE_DO_REFRESH', 1);
 
29
 
 
30
include_once "include/page_header.php";
 
31
 
 
32
?>
39
33
<?php
40
34
//              VAR                     TYPE    OPTIONAL FLAGS  VALIDATION      EXCEPTION
41
35
        $fields=array(
45
39
 
46
40
        check_fields($fields);
47
41
?>
48
 
 
 
42
<?php
 
43
        $denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_MODE_LT);
 
44
 
 
45
        if(isset($_REQUEST["serviceid"]) && $_REQUEST["serviceid"] > 0){
 
46
                
 
47
                if( !($service = DBfetch(DBselect("select s.* from services s left join triggers t on s.triggerid=t.triggerid ".
 
48
                        " left join functions f on t.triggerid=f.triggerid left join items i on f.itemid=i.itemid ".
 
49
                        " where (i.hostid is null or i.hostid not in (".$denyed_hosts.")) ".
 
50
                        " and ".DBid2nodeid("s.serviceid")."=".$ZBX_CURNODEID.
 
51
                        " and s.serviceid=".$_REQUEST["serviceid"]
 
52
                        ))))
 
53
                {
 
54
                        access_deny();
 
55
                }
 
56
        }
 
57
        unset($_REQUEST["serviceid"]);
 
58
?>
49
59
<?php
50
60
        show_table_header(S_IT_SERVICES_BIG);
51
61
 
52
 
        if(isset($_REQUEST["serviceid"])&&isset($_REQUEST["showgraph"]))
53
 
        {
54
 
                $table  = new CTableInfo();
55
 
                $table->AddRow(new CCol("<IMG SRC=\"chart5.php?serviceid=".$_REQUEST["serviceid"]."\" border=0/>", "center"));
 
62
        if(isset($service)&&isset($_REQUEST["showgraph"])){
 
63
                $table  = new CTable(null,'chart');
 
64
                $table->AddRow(new CImg("chart5.php?serviceid=".$service["serviceid"].url_param('path')));
56
65
                $table->Show();
57
 
                show_page_footer();
58
 
                exit;
59
 
        }
60
 
 
61
 
        $now=time();
62
 
        $result=DBselect("select serviceid,name,triggerid,status,showsla,goodsla from services order by sortorder,name");
63
 
//      table_begin();
64
 
        $table  = new CTableInfo();
65
 
        $table->SetHeader(array(S_SERVICE,S_STATUS,S_REASON,S_SLA_LAST_7_DAYS,nbsp(S_PLANNED_CURRENT_SLA),S_GRAPH));
66
 
        if(isset($_REQUEST["serviceid"]))
67
 
        {
68
 
                $service=get_service_by_serviceid($_REQUEST["serviceid"]);
69
 
                $srvc=new CLink($service["name"],"srv_status.php?serviceid=".$service["serviceid"],"action");
70
 
 
71
 
                $status=get_service_status_description($service["status"]);
72
 
 
73
 
                $reason=SPACE;
74
 
                if($service["showsla"]==1)
75
 
                {
76
 
                        $sla="<img src=\"chart_sla.php?serviceid=".$service["serviceid"]."\">";
77
 
                }
78
 
                else
79
 
                {
80
 
                        $sla=new CSpan("-","center");
81
 
                }
82
 
                if($service["showsla"]==1)
83
 
                {
84
 
                        $now=time(NULL);
85
 
                        $period_start=$now-7*24*3600;
86
 
                        $period_end=$now;
87
 
                        $stat=calculate_service_availability($service["serviceid"],$period_start,$period_end);
88
 
 
89
 
                        if($service["goodsla"]>$stat["ok"])
90
 
                        {
91
 
                                $color="AA0000";
92
 
                        }
93
 
                        else
94
 
                        {
95
 
                                $color="00AA00";
96
 
                        }
97
 
                        $sla2=sprintf("<font color=\"00AA00\">%.2f%%</font><b>/</b><font color=\"%s\">%.2f%%</font>",$service["goodsla"],$color,$stat["ok"]);
98
 
                }
99
 
                else
100
 
                {
101
 
                        $sla2="-";
102
 
                }
103
 
                $actions=new CLink(S_SHOW,"srv_status.php?serviceid=".$service["serviceid"]."&showgraph=1","action");
104
 
                $table->addRow(array(
105
 
                        $srvc,
106
 
                        $status,
107
 
                        $reason,
108
 
                        $sla,
109
 
                        $sla2,
110
 
                        $actions
111
 
                        ));
112
 
        }
113
 
        while($row=DBfetch($result))
114
 
        {
115
 
                if(!isset($_REQUEST["serviceid"]) && service_has_parent($row["serviceid"]))
116
 
                {
117
 
                        continue;
118
 
                }
119
 
                if(isset($_REQUEST["serviceid"]) && service_has_no_this_parent($_REQUEST["serviceid"],$row["serviceid"]))
120
 
                {
121
 
                        continue;
122
 
                }
123
 
                if(isset($row["triggerid"])&&!check_right_on_trigger("R",$row["triggerid"]))
124
 
                {
125
 
                        continue;
126
 
                }
127
 
                $childs=get_num_of_service_childs($row["serviceid"]);
128
 
                if(isset($row["triggerid"]))
129
 
                {
130
 
                        $description=nbsp(expand_trigger_description($row["triggerid"]));
131
 
                        $description="[<a href=\"alarms.php?triggerid=".$row["triggerid"]."\">".S_TRIGGER_BIG."</a>] $description";
132
 
                }
133
 
                else
134
 
                {
135
 
                        $trigger_link="";
136
 
                        $description=$row["name"];
137
 
                }
138
 
                if(isset($_REQUEST["serviceid"]))
139
 
                {
140
 
                        if($childs == 0)
141
 
                        {
142
 
                                $service="$description";
143
 
                        }
144
 
                        else
145
 
                        {
146
 
                                $service=new CLink($description,"srv_status.php?serviceid=".$row["serviceid"],"action");
147
 
                        }
148
 
                }
149
 
                else
150
 
                {
151
 
                        if($childs == 0)
152
 
                        {
153
 
                                $service="$description";
154
 
                        }
155
 
                        else
156
 
                        {
157
 
                                $service=new CLink($description,"srv_status.php?serviceid=".$row["serviceid"],"action");
158
 
                        }
159
 
                }
160
 
                $status=get_service_status_description($row["status"]);
161
 
                if($row["status"]==0)
162
 
                {
163
 
                        $reason="-";
164
 
                }
165
 
                else
166
 
                {
167
 
                        $reason="<ul>";
168
 
                        $sql="select s.triggerid,s.serviceid from services s, triggers t where s.status>0 and s.triggerid is not NULL and t.triggerid=s.triggerid order by s.status desc,t.description";
169
 
                        $result2=DBselect($sql);
170
 
                        while($row2=DBfetch($result2))
171
 
                        {
172
 
                                if(does_service_depend_on_the_service($row["serviceid"],$row2["serviceid"]))
173
 
                                {
174
 
                                        $description=nbsp(expand_trigger_description($row2["triggerid"]));
175
 
                                        $reason=$reason."<li class=\"itservices\"><a href=\"alarms.php?triggerid=".$row2["triggerid"]."\">$description</a></li>";
176
 
                                }
177
 
                        }
178
 
                        $reason=$reason."</ul>";
179
 
                }
180
 
 
181
 
                if($row["showsla"]==1)
182
 
                {
183
 
                        $sla="<a href=\"report3.php?serviceid=".$row["serviceid"]."&year=".date("Y")."\"><img src=\"chart_sla.php?serviceid=".$row["serviceid"]."\" border=0>";
184
 
                }
185
 
                else
186
 
                {
187
 
                        $sla="-";
188
 
                }
189
 
 
190
 
                if($row["showsla"]==1)
191
 
                {
192
 
                        $now=time(NULL);
193
 
                        $period_start=$now-7*24*3600;
194
 
                        $period_end=$now;
195
 
                        $stat=calculate_service_availability($row["serviceid"],$period_start,$period_end);
196
 
 
197
 
                        if($row["goodsla"]>$stat["ok"])
198
 
                        {
199
 
                                $color="AA0000";
200
 
                        }
201
 
                        else
202
 
                        {
203
 
                                $color="00AA00";
204
 
                        }
205
 
                        $sla2=sprintf("<font color=\"00AA00\">%.2f%%</font><b>/</b><font color=\"%s\">%.2f%%</font>",$row["goodsla"],$color,$stat["ok"]);
206
 
                }
207
 
                else
208
 
                {
209
 
                        $sla2="-";
210
 
                }
211
 
 
212
 
                $actions=new CLink(S_SHOW,"srv_status.php?serviceid=".$row["serviceid"]."&showgraph=1","action");
213
 
                $table->addRow(array(
214
 
                        $service,
215
 
                        $status,
216
 
                        $reason,
217
 
                        $sla,
218
 
                        $sla2,
219
 
                        $actions
220
 
                        ));
221
 
        }
222
 
        $table->Show();
 
66
        } else {
 
67
        
 
68
                $query = 'SELECT DISTINCT s.serviceid, sl.servicedownid, sl_p.serviceupid as serviceupid, s.triggerid, '.
 
69
                                ' s.name as caption, s.algorithm, t.description, s.sortorder, sl.linkid, s.showsla, s.goodsla, s.status '.
 
70
                        ' FROM services s '.
 
71
                                ' LEFT JOIN triggers t ON s.triggerid = t.triggerid '.
 
72
                                ' LEFT JOIN services_links sl ON  s.serviceid = sl.serviceupid and NOT(sl.soft=0) '.
 
73
                                ' LEFT JOIN services_links sl_p ON  s.serviceid = sl_p.servicedownid and sl_p.soft=0 '.
 
74
                                ' LEFT JOIN functions f ON t.triggerid=f.triggerid '.
 
75
                                ' LEFT JOIN items i ON f.itemid=i.itemid '.
 
76
                        ' WHERE '.DBid2nodeid("s.serviceid").'='.$ZBX_CURNODEID.
 
77
                        ' AND (i.hostid is null or i.hostid not in ('.$denyed_hosts.')) '.
 
78
                        ' ORDER BY s.sortorder, sl_p.serviceupid, s.serviceid';
 
79
                
 
80
                $result=DBSelect($query);
 
81
                
 
82
                $services = array();
 
83
                $row = array(
 
84
                                                '0' => 0,'serviceid' => 0,
 
85
                                                '1' => 0,'serviceupid' => 0,
 
86
                                                '2' => '','caption' => 'root',
 
87
                                                '3' => '','status' => SPACE,
 
88
                                                '4' => '','reason' => SPACE,
 
89
                                                '5' => '','sla' => SPACE,
 
90
                                                '6' => '','sla2' => SPACE,
 
91
                                                '7' => '','graph' => SPACE,
 
92
                                                '7' => '','linkid'=>''
 
93
                                                );
 
94
                
 
95
                $services[0]=$row;
 
96
                $now=time();
 
97
                
 
98
                while($row = DBFetch($result)){
 
99
                
 
100
                        (empty($row['serviceupid']))?($row['serviceupid']='0'):('');
 
101
                        (empty($row['description']))?($row['description']='None'):('');
 
102
                        $row['graph'] = new CLink(S_SHOW,"srv_status.php?serviceid=".$row["serviceid"]."&showgraph=1".url_param('path'),"action");
 
103
                        
 
104
                        if(isset($row["triggerid"]) && !empty($row["triggerid"])){
 
105
 
 
106
                                $url = new CLink(expand_trigger_description($row['triggerid']),'tr_events.php?triggerid='.$row['triggerid']);
 
107
                                $row['caption'] = $row['caption'].SPACE.'['.$url->ToString().']';
 
108
 
 
109
                        }
 
110
                        
 
111
                        if($row["status"]==0 || (isset($service) && $service["serviceid"] == $row["serviceid"])){
 
112
                                $row['reason']="-";
 
113
                        } else {
 
114
                                $row['reason'] = new CList(null,"itservices");
 
115
                                $result2=DBselect("select s.triggerid,s.serviceid from services s, triggers t ".
 
116
                                        " where s.status>0 and s.triggerid is not NULL and t.triggerid=s.triggerid ".
 
117
                                        " and ".DBid2nodeid("s.serviceid")."=".$ZBX_CURNODEID.
 
118
                                        " order by s.status desc,t.description");
 
119
                                        
 
120
                                while($row2=DBfetch($result2)){
 
121
                                        if(does_service_depend_on_the_service($row["serviceid"],$row2["serviceid"])){
 
122
                                                $row['reason']->AddItem(new CLink(
 
123
                                                        expand_trigger_description($row2["triggerid"]),
 
124
                                                        "tr_events.php?triggerid=".$row2["triggerid"]));
 
125
                                        }
 
126
                                }
 
127
                        }
 
128
                        
 
129
                        if($row["showsla"]==1){
 
130
                                $row['sla'] = new CLink(new CImg("chart_sla.php?serviceid=".$row["serviceid"]),
 
131
                                                "report3.php?serviceid=".$row["serviceid"]."&year=".date("Y"));
 
132
                                
 
133
                                $now            = time(NULL);
 
134
                                $period_start   = $now-7*24*3600;
 
135
                                $period_end     = $now;
 
136
                                
 
137
                                $stat = calculate_service_availability($row["serviceid"],$period_start,$period_end);
 
138
 
 
139
                                if($row["goodsla"] > $stat["ok"]){
 
140
                                        $color="AA0000";
 
141
                                } else {
 
142
                                        $color="00AA00";
 
143
                                }
 
144
                                
 
145
                                $row['sla2'] = sprintf("<font color=\"00AA00\">%.2f%%</font><b>/</b><font color=\"%s\">%.2f%%</font>",
 
146
                                        $row["goodsla"], $color,$stat["ok"]);
 
147
                        } else {
 
148
                                $row['sla']= "-";
 
149
                                $row['sla2']= "-";
 
150
                        }
 
151
                        
 
152
                        if(isset($services[$row['serviceid']])){
 
153
                                $services[$row['serviceid']] = array_merge($services[$row['serviceid']],$row);
 
154
                        } else {
 
155
                                
 
156
                                $services[$row['serviceid']] = $row;
 
157
                        }
 
158
                
 
159
                        if(isset($row['serviceupid']))
 
160
                        $services[$row['serviceupid']]['childs'][] = array('id' => $row['serviceid'], 'soft' => 0, 'linkid' => 0);
 
161
        
 
162
                        if(isset($row['servicedownid']))
 
163
                        $services[$row['serviceid']]['childs'][] = array('id' => $row['servicedownid'], 'soft' => 1, 'linkid' => $row['linkid']);
 
164
                }
 
165
                
 
166
                $treeServ = array();
 
167
                createShowServiceTree($services,$treeServ);     //return into $treeServ parametr
 
168
                
 
169
                //permission issue
 
170
                $treeServ = del_empty_nodes($treeServ);
 
171
                
 
172
                echo '<script src="js/services.js" type="text/javascript"></script>';
 
173
                
 
174
                $tree = new CTree($treeServ,array('caption' => '<b>'.S_SERVICE.'</b>',
 
175
                                                'status' => '<b>'.S_STATUS.'</b>', 
 
176
                                                'reason' => '<b>'.S_REASON.'</b>',
 
177
                                                'sla' => '<b>'.S_SLA_LAST_7_DAYS.'</b>',
 
178
                                                'sla2' => '<b>'.nbsp(S_PLANNED_CURRENT_SLA).'</b>',
 
179
                                                'graph' => '<b>'.S_GRAPH.'</b>'));
 
180
                
 
181
                if($tree){
 
182
                        echo $tree->CreateJS();
 
183
                        echo $tree->SimpleHTML();
 
184
                } else {
 
185
                        error('Can\'t format Tree. Check logick structure in service links');
 
186
                }
 
187
        }
223
188
?>
224
 
 
225
189
<?php
226
 
        show_page_footer();
 
190
 
 
191
include_once "include/page_footer.php";
 
192
 
227
193
?>