$from and clock<$till order by clock";
}
else
{
$sql="select clock,value from history_str where itemid=$itemid and clock>$from and clock<$till order by clock";
}
$result=DBselect($sql);
echo "
\n";
for($i=0;$i10 to something like localhost:procload.last(0)>10
function explode_exp ($expression, $html)
{
# echo "EXPRESSION:",$expression," ";
$functionid='';
$exp='';
$state='';
for($i=0;$i".DBget_field($res1,0,0).":".DBget_field($res1,0,1).".".DBget_field($res1,0,2)."(".DBget_field($res1,0,3).")}";
}
else
{
$exp=$exp."{".DBget_field($res1,0,0).":".DBget_field($res1,0,1).".".DBget_field($res1,0,2)."(".DBget_field($res1,0,3).")}";
}
}
continue;
}
if($state == "FUNCTIONID")
{
$functionid=$functionid.$expression[$i];
continue;
}
$exp=$exp.$expression[$i];
}
# echo "EXP:",$exp," ";
return $exp;
}
# Translate localhost:procload.last(0)>10 to {12}>10
function implode_exp ($expression, $triggerid)
{
// echo "Expression:$expression ";
$exp='';
$state="";
for($i=0;$i";
// echo "KEY:$key ";
// echo "FUNCTION:$function ";
// echo "PARAMETER:$parameter ";
$state='';
$sql="select i.itemid from items i,hosts h where i.key_='$key' and h.host='$host' and h.hostid=i.hostid";
# echo $sql," ";
$res=DBselect($sql);
$itemid=DBget_field($res,0,0);
# echo "ITEMID:$itemid ";
# $sql="select functionid,count(*) from functions where function='$function' and parameter=$parameter group by 1";
# echo $sql," ";
# $res=DBselect($sql);
#
# if(DBget_field($res,0,1)>0)
# {
# $functionid=DBget_field($res,0,0);
# }
# else
# {
$sql="insert into functions (itemid,triggerid,function,parameter) values ($itemid,$triggerid,'$function','$parameter')";
# echo $sql," ";
$res=DBexecute($sql);
if(!$res)
{
# echo "ERROR ";
return $res;
}
$functionid=DBinsert_id($res,"functions","functionid");
# }
# echo "FUNCTIONID:$functionid ";
$exp=$exp.'{'.$functionid.'}';
continue;
}
if($expression[$i] == '(')
{
if($state == "FUNCTION")
{
$state='PARAMETER';
continue;
}
}
if($expression[$i] == ')')
{
if($state == "PARAMETER")
{
$state='';
continue;
}
}
if(($expression[$i] == ':') && ($state == "HOST"))
{
$state="KEY";
continue;
}
if($expression[$i] == '.')
{
if($state == "KEY")
{
$state="FUNCTION";
continue;
}
// Support for '.' in KEY
if($state == "FUNCTION")
{
$state="FUNCTION";
$key=$key.".".$function;
$function="";
continue;
}
}
if($state == "HOST")
{
$host=$host.$expression[$i];
continue;
}
if($state == "KEY")
{
$key=$key.$expression[$i];
continue;
}
if($state == "FUNCTION")
{
$function=$function.$expression[$i];
continue;
}
if($state == "PARAMETER")
{
$parameter=$parameter.$expression[$i];
continue;
}
$exp=$exp.$expression[$i];
}
return $exp;
}
# Update Host status
function update_host_status($hostid,$status)
{
if(!check_right("Host","U",0))
{
error("Insufficient permissions");
return 0;
}
$sql="select status from hosts where hostid=$hostid";
$result=DBselect($sql);
$old_status=DBget_field($result,0,0);
if($status != $old_status)
{
update_trigger_value_to_unknown_by_hostid($hostid);
$sql="update hosts set status=$status where hostid=$hostid and status!=".HOST_STATUS_DELETED;
return DBexecute($sql);
}
else
{
return 1;
}
}
function add_image($name,$imagetype,$files)
{
if(isset($files))
{
if($files["image"]["error"]==0)
if($files["image"]["size"]<1024*1024)
{
$image=addslashes(fread(fopen($files["image"]["tmp_name"],"r"),filesize($files["image"]["tmp_name"])));
$sql="insert into images (name,imagetype,image) values ('$name',$imagetype,'$image')";
return DBexecute($sql);
}
else
{
error("Image size must be less than 1Mb");
return FALSE;
}
}
else
{
error("Select image to download");
return FALSE;
}
}
function delete_image($imageid)
{
$sql="delete from images where imageid=$imageid";
return DBexecute($sql);
}
# Delete Alert by actionid
function delete_alert_by_actionid( $actionid )
{
$sql="delete from alerts where actionid=$actionid";
return DBexecute($sql);
}
function delete_rights_by_userid($userid )
{
$sql="delete from rights where userid=$userid";
return DBexecute($sql);
}
# Delete from History
function delete_history_by_itemid( $itemid )
{
$sql="delete from history_str where itemid=$itemid";
DBexecute($sql);
$sql="delete from history where itemid=$itemid";
return DBexecute($sql);
}
# Delete from Trends
function delete_trends_by_itemid( $itemid )
{
$sql="delete from trends where itemid=$itemid";
return DBexecute($sql);
}
# Add alarm
function add_alarm($triggerid,$value)
{
$sql="select max(clock) from alarms where triggerid=$triggerid";
$result=DBselect($sql);
$row=DBfetch($result);
if($row[0]!="")
{
$sql="select value from alarms where triggerid=$triggerid and clock=".$row[0];
$result=DBselect($sql);
if(DBnum_rows($result) == 1)
{
$row=DBfetch($result);
if($row["value"] == $value)
{
return 0;
}
}
}
$now=time();
$sql="insert into alarms(triggerid,clock,value) values($triggerid,$now,$value)";
return DBexecute($sql);
}
# Reset nextcheck for related items
function reset_items_nextcheck($triggerid)
{
$sql="select itemid from functions where triggerid=$triggerid";
$result=DBselect($sql);
for($i=0;$i";
$result4=DBexecute($sql);
$actionid=DBinsert_id($result4,"actions","actionid");
}
}
}
return TRUE;
}
function add_group_to_host($hostid,$newgroup)
{
$sql="insert into groups (groupid,name) values (NULL,'$newgroup')";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$groupid=DBinsert_id($result,"groupd","groupid");
$sql="insert into hosts_groups (hostid,groupid) values ($hostid,$groupid)";
$result=DBexecute($sql);
return $result;
}
function update_host_groups_by_groupid($groupid,$hosts)
{
$count=count($hosts);
$sql="delete from hosts_groups where groupid=$groupid";
DBexecute($sql);
for($i=0;$i<$count;$i++)
{
$sql="insert into hosts_groups (hostid,groupid) values (".$hosts[$i].",$groupid)";
DBexecute($sql);
}
}
function update_host_groups($hostid,$groups)
{
$count=count($groups);
$sql="delete from hosts_groups where hostid=$hostid";
DBexecute($sql);
for($i=0;$i<$count;$i++)
{
$sql="insert into hosts_groups (hostid,groupid) values ($hostid,".$groups[$i].")";
DBexecute($sql);
}
}
function add_host_group($name,$hosts)
{
// if(!check_right("Host","A",0))
// {
// error("Insufficient permissions");
// return 0;
// }
$sql="select * from groups where name='$name'";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
error("Group '$name' already exists");
return 0;
}
$sql="insert into groups (name) values ('$name')";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$groupid=DBinsert_id($result,"groups","groupid");
update_host_groups_by_groupid($groupid,$hosts);
return $result;
}
function add_user_group($name,$users)
{
if(!check_right("Host","A",0))
{
error("Insufficient permissions");
return 0;
}
$sql="select * from usrgrp where name='$name'";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
error("Group '$name' already exists");
return 0;
}
$sql="insert into usrgrp (name) values ('$name')";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$usrgrpid=DBinsert_id($result,"usrgrp","usrgrpid");
update_user_groups($usrgrpid,$users);
return $result;
}
function update_host_group($groupid,$name,$users)
{
// if(!check_right("Host","U",0))
// {
// error("Insufficient permissions");
// return 0;
// }
$sql="select * from groups where name='$name' and groupid<>$groupid";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
error("Group '$name' already exists");
return 0;
}
$sql="update groups set name='$name' where groupid=$groupid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
update_host_groups_by_groupid($groupid,$users);
return $result;
}
function update_user_group($usrgrpid,$name,$users)
{
if(!check_right("Host","U",0))
{
error("Insufficient permissions");
return 0;
}
$sql="select * from usrgrp where name='$name' and usrgrpid<>$usrgrpid";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
error("Group '$name' already exists");
return 0;
}
$sql="update usrgrp set name='$name' where usrgrpid=$usrgrpid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
update_user_groups($usrgrpid,$users);
return $result;
}
# Sync host with hard-linked templates
function sync_host_with_templates($hostid)
{
$sql="select * from hosts_templates where hostid=$hostid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
sync_host_with_template($hostid,$row["templateid"],$row["items"],$row["triggers"],$row["actions"],
$row["graphs"],$row["screens"]);
}
}
# Sync host with hard-linked template
function sync_host_with_template($hostid,$templateid,$items,$triggers,$actions,$graphs,$screens)
{
if(!isset($templateid)||($templateid==0))
{
error("Select template first");
return 0;
}
$host=get_host_by_hostid($hostid);
$sql="select itemid from items where hostid=$templateid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$item=get_item_by_itemid($row["itemid"]);
$itemid=add_item($item["description"],$item["key_"],$hostid,$item["delay"],$item["history"],$item["status"],$item["type"],$item["snmp_community"],$item["snmp_oid"],$item["value_type"],"",$item["snmp_port"],$item["units"],$item["multiplier"],$item["delta"],$item["snmpv3_securityname"],$item["snmpv3_securitylevel"],$item["snmpv3_authpassphrase"],$item["snmpv3_privpassphrase"],$item["formula"],$item["trends"]);
$sql="select distinct t.triggerid from triggers t,functions f where f.itemid=".$row["itemid"]." and f.triggerid=t.triggerid";
$result2=DBselect($sql);
while($row2=DBfetch($result2))
{
$trigger=get_trigger_by_triggerid($row2["triggerid"]);
// Cannot use add_trigger here
$description=$trigger["description"];
# $description=str_replace("%s",$host["host"],$description);
$sql="insert into triggers (description,priority,status,comments,url,value) values ('".addslashes($description)."',".$trigger["priority"].",".$trigger["status"].",'".addslashes($trigger["comments"])."','".addslashes($trigger["url"])."',2)";
$result4=DBexecute($sql);
$triggerid=DBinsert_id($result4,"triggers","triggerid");
$sql="select functionid from functions where triggerid=".$row2["triggerid"]." and itemid=".$row["itemid"];
$result3=DBselect($sql);
while($row3=DBfetch($result3))
{
$function=get_function_by_functionid($row3["functionid"]);
$sql="insert into functions (itemid,triggerid,function,parameter) values ($itemid,$triggerid,'".$function["function"]."','".$function["parameter"]."')";
$result4=DBexecute($sql);
$functionid=DBinsert_id($result4,"functions","functionid");
$sql="update triggers set expression='".$trigger["expression"]."' where triggerid=$triggerid";
DBexecute($sql);
$trigger["expression"]=str_replace("{".$row3["functionid"]."}","{".$functionid."}",$trigger["expression"]);
$sql="update triggers set expression='".$trigger["expression"]."' where triggerid=$triggerid";
DBexecute($sql);
}
# Add actions
$sql="select actionid from actions where scope=0 and triggerid=".$row2["triggerid"];
$result3=DBselect($sql);
while($row3=DBfetch($result3))
{
$action=get_action_by_actionid($row3["actionid"]);
$userid=$action["userid"];
$scope=$action["scope"];
$severity=$action["severity"];
$good=$action["good"];
$delay=$action["delay"];
$subject=addslashes($action["subject"]);
$message=addslashes($action["message"]);
$recipient=$action["recipient"];
$sql="insert into actions (triggerid, userid, scope, severity, good, delay, subject, message,recipient) values ($triggerid,$userid,$scope,$severity,$good,$delay,'$subject','$message',$recipient)";
// echo "$sql ";
$result4=DBexecute($sql);
$actionid=DBinsert_id($result4,"actions","actionid");
}
}
}
# Add graphs
$sql="select distinct g.graphid from graphs g,items i, hosts h,graphs_items gi where h.hostid=$templateid and i.hostid=h.hostid and gi.itemid=i.itemid and g.graphid=gi.graphid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$graph=get_graph_by_graphid($row["graphid"]);
$graphid=add_graph($graph["name"],$graph["width"],$graph["height"],$graph["yaxistype"],$graph["yaxismin"],$graph["yaxismax"]);
$sql="select distinct gi.gitemid from graphs_items gi,graphs g,items i,hosts h where gi.itemid=i.itemid and h.hostid=$templateid and i.hostid=h.hostid and g.graphid=gi.graphid and gi.itemid=i.itemid and g.graphid=".$graph["graphid"];
$result2=DBselect($sql);
while($row=DBfetch($result2))
{
$gitem=get_graphitem_by_gitemid($row["gitemid"]);
$item=get_item_by_itemid($gitem["itemid"]);
$sql="select * from items where key_='".$item["key_"]."' and hostid=$hostid";
$result3=DBselect($sql);
if(DBnum_rows($result3)==1)
{
$row2=DBfetch($result3);
add_item_to_graph($graphid,$row2["itemid"],$gitem["color"],$gitem["drawtype"],$gitem["sortorder"]);
}
}
}
return TRUE;
}
# Delete Media definition by mediatypeid
function delete_media_by_mediatypeid($mediatypeid)
{
$sql="delete from media where mediatypeid=$mediatypeid";
return DBexecute($sql);
}
# Delete alrtes by mediatypeid
function delete_alerts_by_mediatypeid($mediatypeid)
{
$sql="delete from alerts where mediatypeid=$mediatypeid";
return DBexecute($sql);
}
function get_mediatype_by_mediatypeid($mediatypeid)
{
$sql="select * from media_type where mediatypeid=$mediatypeid";
$result=DBselect($sql);
if(DBnum_rows($result) == 1)
{
return DBfetch($result);
}
else
{
error("No media type with with mediatypeid=[$mediatypeid]");
}
return $item;
}
# Delete media type
function delete_mediatype($mediatypeid)
{
delete_media_by_mediatypeid($mediatypeid);
delete_alerts_by_mediatypeid($mediatypeid);
$sql="delete from media_type where mediatypeid=$mediatypeid";
return DBexecute($sql);
}
# Update media type
function update_mediatype($mediatypeid,$type,$description,$smtp_server,$smtp_helo,$smtp_email,$exec_path)
{
$description=addslashes($description);
$sql="update media_type set type=$type,description='$description',smtp_server='$smtp_server',smtp_helo='$smtp_helo',smtp_email='$smtp_email',exec_path='$exec_path' where mediatypeid=$mediatypeid";
return DBexecute($sql);
}
# Add Media type
function add_mediatype($type,$description,$smtp_server,$smtp_helo,$smtp_email,$exec_path)
{
$description=addslashes($description);
$sql="insert into media_type (type,description,smtp_server,smtp_helo,smtp_email,exec_path) values ($type,'$description','$smtp_server','$smtp_helo','$smtp_email','$exec_path')";
return DBexecute($sql);
}
# Add Media definition
function add_media( $userid, $mediatypeid, $sendto, $severity, $active)
{
$c=count($severity);
$s=0;
for($i=0;$i<$c;$i++)
{
$s=$s|pow(2,(int)$severity[$i]);
}
$sql="insert into media (userid,mediatypeid,sendto,active,severity) values ($userid,'$mediatypeid','$sendto',$active,$s)";
return DBexecute($sql);
}
# Update Media definition
function update_media($mediaid, $userid, $mediatypeid, $sendto, $severity, $active)
{
$c=count($severity);
$s=0;
for($i=0;$i<$c;$i++)
{
$s=$s|pow(2,(int)$severity[$i]);
}
$sql="update media set userid=$userid, mediatypeid=$mediatypeid, sendto='$sendto', active=$active,severity=$s where mediaid=$mediaid";
return DBexecute($sql);
}
# Delete Media definition
function delete_media($mediaid)
{
$sql="delete from media where mediaid=$mediaid";
return DBexecute($sql);
}
# Delete Media definition by userid
function delete_media_by_userid($userid)
{
$sql="delete from media where userid=$userid";
return DBexecute($sql);
}
function delete_profiles_by_userid($userid)
{
$sql="delete from profiles where userid=$userid";
return DBexecute($sql);
}
# Update configuration
// function update_config($smtp_server,$smtp_helo,$smtp_email,$alarm_history,$alert_history)
function update_config($alarm_history,$alert_history)
{
if(!check_right("Configuration of Zabbix","U",0))
{
error("Insufficient permissions");
return 0;
}
// $sql="update config set smtp_server='$smtp_server',smtp_helo='$smtp_helo',smtp_email='$smtp_email',alarm_history=$alarm_history,alert_history=$alert_history";
$sql="update config set alarm_history=$alarm_history,alert_history=$alert_history";
return DBexecute($sql);
}
# Activate Media
function activate_media($mediaid)
{
$sql="update media set active=0 where mediaid=$mediaid";
return DBexecute($sql);
}
# Disactivate Media
function disactivate_media($mediaid)
{
$sql="update media set active=1 where mediaid=$mediaid";
return DBexecute($sql);
}
# Delete User permission
function delete_permission($rightid)
{
$sql="delete from rights where rightid=$rightid";
return DBexecute($sql);
}
function delete_user_group($usrgrpid)
{
$sql="delete from users_groups where usrgrpid=$usrgrpid";
DBexecute($sql);
$sql="delete from usrgrp where usrgrpid=$usrgrpid";
return DBexecute($sql);
}
# Delete User definition
function delete_user($userid)
{
$sql="select * from users where userid=$userid and alias='guest'";
$result=DBselect($sql);
if(DBnum_rows($result) == 1)
{
error("Cannot delete user 'guest'");
return 0;
}
delete_media_by_userid($userid);
delete_actions_by_userid($userid);
delete_rights_by_userid($userid);
delete_profiles_by_userid($userid);
$sql="delete from users_groups where userid=$userid";
DBexecute($sql);
$sql="delete from users where userid=$userid";
return DBexecute($sql);
}
function show_table_h_delimiter()
{
// echo "";
cr();
echo "";
cr();
echo "