summaryrefslogtreecommitdiffstats
path: root/frontends/php
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-02 09:49:44 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-02 09:49:44 +0000
commit053e091380bdeff1d9a423e1dfdcfcda396045d5 (patch)
treeda06e467138936e3cd12ee6db4c73e677c305a76 /frontends/php
parent467c2281b799cf57a72682097fbeb7caa7d1faae (diff)
downloadzabbix-053e091380bdeff1d9a423e1dfdcfcda396045d5.tar.gz
zabbix-053e091380bdeff1d9a423e1dfdcfcda396045d5.tar.xz
zabbix-053e091380bdeff1d9a423e1dfdcfcda396045d5.zip
- [ZBX-134] merged rev. 4956:4966 of branches/1.4/ (Artem) (fixes for hostid/groupid validation on Node switch)
git-svn-id: svn://svn.zabbix.com/trunk@4968 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php')
-rw-r--r--frontends/php/charts.php1
-rw-r--r--frontends/php/graphs.php2
-rw-r--r--frontends/php/hosts.php4
-rw-r--r--frontends/php/include/config.inc.php3
-rw-r--r--frontends/php/include/hosts.inc.php33
-rw-r--r--frontends/php/include/perm.inc.php6
-rw-r--r--frontends/php/include/triggers.inc.php13
-rw-r--r--frontends/php/latest.php5
-rw-r--r--frontends/php/tr_status.php71
-rw-r--r--frontends/php/triggers.php4
10 files changed, 89 insertions, 53 deletions
diff --git a/frontends/php/charts.php b/frontends/php/charts.php
index 07a64314..66fd95a9 100644
--- a/frontends/php/charts.php
+++ b/frontends/php/charts.php
@@ -130,7 +130,6 @@ include_once 'include/page_header.php';
$r_form = new CForm();
$r_form->SetMethod('get');
-
if(isset($_REQUEST['fullscreen']))
$r_form->AddVar('fullscreen', 1);
diff --git a/frontends/php/graphs.php b/frontends/php/graphs.php
index f7f8a037..f20237e5 100644
--- a/frontends/php/graphs.php
+++ b/frontends/php/graphs.php
@@ -85,7 +85,7 @@ include_once "include/page_header.php";
check_fields($fields);
- validate_group_with_host(PERM_READ_WRITE,array("allow_all_hosts","always_select_first_host"),
+ validate_group_with_host(PERM_READ_WRITE,array("allow_all_hosts","always_select_first_host","only_current_node"),
'web.last.conf.groupid', 'web.last.conf.hostid');
?>
<?php
diff --git a/frontends/php/hosts.php b/frontends/php/hosts.php
index 8cd1d82c..1014ef30 100644
--- a/frontends/php/hosts.php
+++ b/frontends/php/hosts.php
@@ -1,7 +1,7 @@
<?php
/*
** ZABBIX
-** Copyright (C) 2000-2005 SIA Zabbix
+** Copyright (C) 2000-2007 SIA Zabbix
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
@@ -124,7 +124,7 @@ include_once "include/page_header.php";
check_fields($fields);
if($_REQUEST["config"]==4)
- validate_group_with_host(PERM_READ_WRITE,array("always_select_first_host"),'web.last.conf.groupid', 'web.last.conf.hostid');
+ validate_group_with_host(PERM_READ_WRITE,array("always_select_first_host","only_current_node"),'web.last.conf.groupid', 'web.last.conf.hostid');
elseif($_REQUEST["config"]==0 || $_REQUEST["config"]==3)
validate_group(PERM_READ_WRITE,array(),'web.last.conf.groupid');
diff --git a/frontends/php/include/config.inc.php b/frontends/php/include/config.inc.php
index 2e54580f..24cec730 100644
--- a/frontends/php/include/config.inc.php
+++ b/frontends/php/include/config.inc.php
@@ -254,9 +254,8 @@ function TODO($msg) { echo "TODO: ".$msg.BR; } // DEBUG INFO!!!
global $ZBX_CURRENT_NODEID, $ZBX_CURRENT_SUBNODES, $ZBX_WITH_SUBNODES;
if ( !isset($ZBX_CURRENT_NODEID) ) init_nodes();
-
$result = ( is_show_subnodes($forse_with_subnodes) ? $ZBX_CURRENT_SUBNODES : $ZBX_CURRENT_NODEID );
-
+
if ( !is_null($perm) )
{
global $USER_DETAILS;
diff --git a/frontends/php/include/hosts.inc.php b/frontends/php/include/hosts.inc.php
index 3071e133..2b393934 100644
--- a/frontends/php/include/hosts.inc.php
+++ b/frontends/php/include/hosts.inc.php
@@ -587,7 +587,7 @@ require_once "include/items.inc.php";
{
fatal_error("Incorrest options for get_correct_group_and_host");
}
-
+
global $USER_DETAILS;
$first_hostid_in_group = 0;
@@ -605,15 +605,19 @@ require_once "include/items.inc.php";
if(in_array("with_monitored_items",$options)){
$item_table = ",items i"; $with_items = " and h.hostid=i.hostid and i.status=".ITEM_STATUS_ACTIVE;
- }elseif(in_array("with_items",$options)){
+ }else if(in_array("with_items",$options)){
$item_table = ",items i"; $with_items = " and h.hostid=i.hostid";
} else {
- $item_table = ""; $with_items = "";
+ $item_table = "";
+ $with_items = "";
}
$with_node = "";
- $accessed_hosts = get_accessible_hosts_by_user($USER_DETAILS,$perm);
+ $accessed_hosts = get_accessible_hosts_by_user($USER_DETAILS,$perm,null,null,get_current_nodeid(!$only_current_node));
+
+//SDI(get_current_nodeid(!$only_current_node));
+//SDI($accessed_hosts);
if(is_null($a_groupid))
{
@@ -626,7 +630,7 @@ require_once "include/items.inc.php";
if($groupid > 0)
{
$with_node = " and ".DBin_node('g.groupid', get_current_nodeid(!$only_current_node));
-
+
if(!DBfetch(DBselect("select distinct g.groupid from groups g, hosts_groups hg, hosts h".$item_table.
" where hg.groupid=g.groupid and h.hostid=hg.hostid and h.hostid in (".$accessed_hosts.") ".
" and g.groupid=".$groupid.$with_host_status.$with_items.$with_node)))
@@ -636,6 +640,7 @@ require_once "include/items.inc.php";
}
}
+
if(is_null($a_hostid))
{
$hostid = 0;
@@ -662,7 +667,8 @@ require_once "include/items.inc.php";
}
$with_node = " and ".DBin_node('h.hostid',get_current_nodeid(!$only_current_node));
-
+//SDI('C: '.$a_groupid.' : '.$a_hostid);
+
if($db_host = DBfetch(DBselect("select distinct h.hostid,h.host from hosts h ".$item_table.$group_table.
" where h.hostid in (".$accessed_hosts.") "
.$with_host_status.$with_items.$witth_group.$with_node.
@@ -682,14 +688,13 @@ require_once "include/items.inc.php";
$hostid = 0;
}
}
-
if(($hostid < 0) || ($hostid == 0 && $always_select_first_host == 1)) /* incorrect host */
{
$hostid = $first_hostid_in_group;
}
}
}
-
+
$group_correct = ($groupid == $a_groupid) ? 1 : 0;
$host_correct = ($hostid == $a_hostid) ? 1 : 0;
return array(
@@ -721,10 +726,12 @@ require_once "include/items.inc.php";
$_REQUEST["groupid"] = get_request("groupid", -1 );
$_REQUEST["hostid"] = get_request("hostid", get_profile($host_var,0));
-
+
if($_REQUEST["groupid"] == -1)
{
$_REQUEST["groupid"] = get_profile($group_var,0);
+
+ if(!in_node($_REQUEST["groupid"])) $_REQUEST["groupid"] = 0;
if ($_REQUEST["hostid"] > 0 && !DBfetch(DBselect('select groupid from hosts_groups '.
' where hostid='.$_REQUEST["hostid"].' and groupid='.$_REQUEST["groupid"])))
@@ -732,7 +739,7 @@ require_once "include/items.inc.php";
$_REQUEST["groupid"] = 0;
}
}
-
+
if(in_array("always_select_first_host",$options) && $_REQUEST["hostid"] == 0 && $_REQUEST["groupid"] != 0)
$_REQUEST["hostid"] = -1;
@@ -740,7 +747,7 @@ require_once "include/items.inc.php";
$_REQUEST["groupid"] = $result["groupid"];
$_REQUEST["hostid"] = $result["hostid"];
-
+
update_profile($host_var,$_REQUEST["hostid"]);
update_profile($group_var,$_REQUEST["groupid"]);
}
@@ -760,11 +767,11 @@ require_once "include/items.inc.php";
function validate_group($perm, $options = array(),$group_var=null)
{
if(is_null($group_var)) $group_var = "web.latest.groupid";
-
$_REQUEST["groupid"] = get_request("groupid",get_profile($group_var,0));
+ if(!in_node($_REQUEST["groupid"])) $_REQUEST["groupid"] = 0;
+
$result = get_correct_group_and_host($_REQUEST["groupid"],null,$perm,$options);
-
$_REQUEST["groupid"] = $result["groupid"];
update_profile($group_var,$_REQUEST["groupid"]);
diff --git a/frontends/php/include/perm.inc.php b/frontends/php/include/perm.inc.php
index f92da482..7dbdbf8c 100644
--- a/frontends/php/include/perm.inc.php
+++ b/frontends/php/include/perm.inc.php
@@ -162,14 +162,16 @@ COpt::counter_up('perm');
if(count($where)) $where = ' where '.implode(' and ',$where);
else $where = '';
- $db_hosts = DBselect('select distinct n.nodeid,n.name as node_name,h.hostid,h.host, min(r.permission) as permission,ug.userid '.
+ $sql = 'select distinct n.nodeid,n.name as node_name,h.hostid,h.host, min(r.permission) as permission,ug.userid '.
' from hosts h left join hosts_groups hg on hg.hostid=h.hostid '.
' left join groups g on g.groupid=hg.groupid '.
' left join rights r on r.id=g.groupid and r.type='.RESOURCE_TYPE_GROUP.
' left join users_groups ug on ug.usrgrpid=r.groupid and ug.userid='.$userid.
' left join nodes n on '.DBid2nodeid('h.hostid').'=n.nodeid '.
$where.' group by h.hostid,n.nodeid,n.name,h.host,ug.userid '.
- ' order by n.name,n.nodeid, h.host, permission desc, userid desc');
+ ' order by n.name,n.nodeid, h.host, permission desc, userid desc';
+
+ $db_hosts = DBselect($sql);
$processed = array();
while($host_data = DBfetch($db_hosts))
diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php
index 7b958382..c156ea5f 100644
--- a/frontends/php/include/triggers.inc.php
+++ b/frontends/php/include/triggers.inc.php
@@ -676,11 +676,12 @@
$expression, $description, $type, $priority, $status,
$comments, $url, $deps=array(), $templateid=0)
{
+
if( !validate_expression($expression) )
return false;
$triggerid=get_dbid("triggers","triggerid");
-
+
$result=DBexecute("insert into triggers".
" (triggerid,description,type,priority,status,comments,url,value,error,templateid)".
" values ($triggerid,".zbx_dbstr($description).",$type,$priority,$status,".zbx_dbstr($comments).",".
@@ -711,6 +712,7 @@
$trig_hosts = get_hosts_by_triggerid($triggerid);
$trig_host = DBfetch($trig_hosts);
+
if($result)
{
$msg = "Added trigger '".$description."'";
@@ -979,10 +981,15 @@
$function = &$arr[ZBX_EXPRESSION_SIMPLE_EXPRESSION_ID + ZBX_SIMPLE_EXPRESSION_FUNCTION_NAME_ID];
$parameter = &$arr[ZBX_EXPRESSION_SIMPLE_EXPRESSION_ID + ZBX_SIMPLE_EXPRESSION_FUNCTION_PARAM_ID];
- $item = DBfetch(DBselect('select i.itemid from items i,hosts h'.
+ $item_res = DBselect('select i.itemid from items i,hosts h'.
' where i.key_='.zbx_dbstr($key).
' and h.host='.zbx_dbstr($host).
- ' and h.hostid=i.hostid'));
+ ' and h.hostid=i.hostid');
+
+ while(($item = DBfetch($item_res)) && (!in_node($item['itemid']))){
+ }
+
+ if(!$item) return null;
$item = $item["itemid"];
diff --git a/frontends/php/latest.php b/frontends/php/latest.php
index 25ef9993..5ce03428 100644
--- a/frontends/php/latest.php
+++ b/frontends/php/latest.php
@@ -47,8 +47,11 @@ include_once "include/page_header.php";
);
check_fields($fields);
+
+ $options = array("allow_all_hosts","always_select_first_host","monitored_hosts","with_monitored_items");
+ if(!$ZBX_WITH_SUBNODES) array_push($options,"only_current_node");
- validate_group_with_host(PERM_READ_ONLY,array("allow_all_hosts","always_select_first_host","monitored_hosts","with_monitored_items"));
+ validate_group_with_host(PERM_READ_ONLY,$options);
?>
<?php
diff --git a/frontends/php/tr_status.php b/frontends/php/tr_status.php
index bc670a4f..719d51c8 100644
--- a/frontends/php/tr_status.php
+++ b/frontends/php/tr_status.php
@@ -113,8 +113,10 @@ include_once "include/page_header.php";
$_REQUEST['noactions'] = get_request('noactions', get_profile('web.tr_status.noactions', 'true'));
$_REQUEST['compact'] = get_request('compact', get_profile('web.tr_status.compact', 'true'));
- validate_group_with_host(PERM_READ_ONLY,array('allow_all_hosts','always_select_first_host','monitored_hosts','with_monitored_items'),
- 'web.tr_status.groupid','web.tr_status.hostid');
+ $options = array("allow_all_hosts","always_select_first_host","monitored_hosts","with_monitored_items");
+ if(!$ZBX_WITH_SUBNODES) array_push($options,"only_current_node");
+
+ validate_group_with_host(PERM_READ_ONLY,$options,"web.tr_status.groupid","web.tr_status.hostid");
update_profile('web.tr_status.show_triggers',$_REQUEST['show_triggers']);
update_profile('web.tr_status.show_events',$_REQUEST['show_events']);
@@ -154,7 +156,7 @@ include_once "include/page_header.php";
<?php
$r_form = new CForm();
$r_form->SetMethod('get');
-
+
$cmbGroup = new CComboBox('groupid',$_REQUEST['groupid'],'submit()');
$cmbHosts = new CComboBox('hostid',$_REQUEST['hostid'],'submit()');
@@ -166,9 +168,9 @@ include_once "include/page_header.php";
$result=DBselect("select distinct g.groupid,g.name from groups g, hosts_groups hg, hosts h, items i, functions f, triggers t ".
" where h.hostid in (".$availiable_hosts.") ".
- " and hg.groupid=g.groupid and h.status=".HOST_STATUS_MONITORED.
- " and h.hostid=i.hostid and hg.hostid=h.hostid and i.status=".ITEM_STATUS_ACTIVE.
- " and i.itemid=f.itemid and t.triggerid=f.triggerid and t.status=".TRIGGER_STATUS_ENABLED.
+ " AND hg.groupid=g.groupid AND h.status=".HOST_STATUS_MONITORED.
+ " AND h.hostid=i.hostid AND hg.hostid=h.hostid AND i.status=".ITEM_STATUS_ACTIVE.
+ " AND i.itemid=f.itemid AND t.triggerid=f.triggerid AND t.status=".TRIGGER_STATUS_ENABLED.
" order by g.name");
while($row=DBfetch($result))
{
@@ -180,42 +182,59 @@ include_once "include/page_header.php";
}
$r_form->AddItem(array(S_GROUP.SPACE,$cmbGroup));
- if($_REQUEST["groupid"] > 0)
- {
- $sql="select h.hostid,h.host from hosts h,items i,hosts_groups hg, functions f, triggers t where h.status=".HOST_STATUS_MONITORED.
- " and h.hostid=i.hostid and hg.groupid=".$_REQUEST["groupid"]." and hg.hostid=h.hostid".
- " and i.status=".ITEM_STATUS_ACTIVE.
- " and i.itemid=f.itemid and t.triggerid=f.triggerid and t.status=".TRIGGER_STATUS_ENABLED.
- " and h.hostid in (".$availiable_hosts.") ".
- " group by h.hostid,h.host order by h.host";
+ if($_REQUEST["groupid"] > 0){
+
+ $sql='SELECT h.hostid,h.host '.
+ ' FROM hosts h,items i,hosts_groups hg, functions f, triggers t '.
+ ' WHERE h.status='.HOST_STATUS_MONITORED.
+ ' AND h.hostid=i.hostid '.
+ ' AND hg.groupid='.$_REQUEST["groupid"].
+ ' AND hg.hostid=h.hostid'.
+ ' AND i.status='.ITEM_STATUS_ACTIVE.
+ ' AND i.itemid=f.itemid '.
+ ' AND t.triggerid=f.triggerid '.
+ ' AND t.status='.TRIGGER_STATUS_ENABLED.
+ ' AND h.hostid in ('.$availiable_hosts.') '.
+ ' GROUP BY h.hostid,h.host '.
+ ' ORDER BY h.host';
}
- else
- {
+ else{
+
$cmbHosts->AddItem(0,S_ALL_SMALL);
- $sql="select h.hostid,h.host from hosts h,items i, functions f, triggers t where h.status=".HOST_STATUS_MONITORED.
- " and i.status=".ITEM_STATUS_ACTIVE." and h.hostid=i.hostid".
- " and i.itemid=f.itemid and t.triggerid=f.triggerid and t.status=".TRIGGER_STATUS_ENABLED.
- " and h.hostid in (".$availiable_hosts.") ".
- " group by h.hostid,h.host order by h.host";
+ $sql='SELECT h.hostid,h.host '.
+ ' FROM hosts h,items i, functions f, triggers t '.
+ ' WHERE h.status='.HOST_STATUS_MONITORED.
+ ' AND i.status='.ITEM_STATUS_ACTIVE.
+ ' AND h.hostid=i.hostid'.
+ ' AND i.itemid=f.itemid '.
+ ' AND t.triggerid=f.triggerid '.
+ ' AND t.status='.TRIGGER_STATUS_ENABLED.
+ ' AND h.hostid in ('.$availiable_hosts.') '.
+ ' GROUP BY h.hostid,h.host '.
+ ' ORDER BY h.host';
}
+
$result=DBselect($sql);
+ $flag = false;
while($row=DBfetch($result))
{
+ $flag |= $_REQUEST['hostid'] == $row['hostid'];
$cmbHosts->AddItem(
$row['hostid'],
get_node_name_by_elid($row['hostid']).$row['host']
);
}
+ if(!$flag) $_REQUEST['hostid'] = 0;
$r_form->AddItem(array(SPACE.S_HOST.SPACE,$cmbHosts));
$r_form->AddVar("compact",$compact);
$r_form->AddVar("show_triggers",$show_triggers);
$r_form->AddVar('show_events',$show_events);
- $r_form->AddVar("noactions",$noactions);
- $r_form->AddVar("select",$select);
- $r_form->AddVar("txt_select",$txt_select);
- $r_form->AddVar("sort",$sort);
- if(isset($_REQUEST['fullscreen'])) $r_form->AddVar("fullscreen",1);
+ $r_form->AddVar('noactions',$noactions);
+ $r_form->AddVar('select',$select);
+ $r_form->AddVar('txt_select',$txt_select);
+ $r_form->AddVar('sort',$sort);
+ if(isset($_REQUEST['fullscreen'])) $r_form->AddVar('fullscreen',1);
show_table_header(
new CLink(SPACE.S_STATUS_OF_TRIGGERS_BIG.SPACE.date("[H:i:s]",time()),"tr_status.php?show_triggers=$show_triggers".
diff --git a/frontends/php/triggers.php b/frontends/php/triggers.php
index 8130e39e..b8995b19 100644
--- a/frontends/php/triggers.php
+++ b/frontends/php/triggers.php
@@ -1,7 +1,7 @@
<?php
/*
** ZABBIX
-** Copyright (C) 2000-2005 SIA Zabbix
+** Copyright (C) 2000-2007 SIA Zabbix
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
@@ -89,7 +89,7 @@ include_once "include/page_header.php";
$showdisabled = get_request("showdisabled", 0);
- validate_group_with_host(PERM_READ_WRITE,array("allow_all_hosts","always_select_first_host","with_items"),
+ validate_group_with_host(PERM_READ_WRITE,array("allow_all_hosts","always_select_first_host","with_items","only_current_node"),
'web.last.conf.groupid', 'web.last.conf.hostid');
?>
<?php