$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;
}
function update_trigger_comments($triggerid,$comments)
{
global $ERROR_MSG;
if(!check_right("Trigger comment","U",$triggerid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$comments=addslashes($comments);
$sql="update triggers set comments='$comments' where triggerid=$triggerid";
return DBexecute($sql);
}
# Update Trigger status
function update_trigger_status($triggerid,$status)
{
global $ERROR_MSG;
if(!check_right_on_trigger("U",$triggerid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
add_alarm($triggerid,2);
$sql="update triggers set status=$status where triggerid=$triggerid";
return DBexecute($sql);
}
# Update Item status
function update_item_status($itemid,$status)
{
global $ERROR_MSG;
if(!check_right("Item","U",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="update items set status=$status where itemid=$itemid";
return DBexecute($sql);
}
# "Processor load on %s is 5" to "Processor load on www.sf.net is 5"
function expand_trigger_description_simple($triggerid)
{
$sql="select distinct t.description,h.host from triggers t,functions f,items i,hosts h where t.triggerid=$triggerid and f.triggerid=t.triggerid and f.itemid=i.itemid and i.hostid=h.hostid";
// echo $sql;
$result=DBselect($sql);
$row=DBfetch($result);
// $description=str_replace("%s",$row["host"],$row["description"]);
$search=array("{HOSTNAME}");
$replace=array($row["host"]);
// $description = str_replace($search, $replace,$row["description"]);
$description = str_replace("{HOSTNAME}", $row["host"],$row["description"]);
return $description;
}
# "Processor load on %s is 5" to "Processor load on www.sf.net is 5"
function expand_trigger_description($triggerid)
{
$description=expand_trigger_description_simple($triggerid);
$description=stripslashes(htmlspecialchars($description));
return $description;
}
function update_trigger_value_to_unknown_by_hostid($hostid)
{
$sql="select distinct t.triggerid from hosts h,items i,triggers t,functions f where f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid and h.hostid=$hostid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$sql="update triggers set value=2 where triggerid=".$row["triggerid"];
DBexecute($sql);
}
}
# Update Host status
function update_host_status($hostid,$status)
{
global $ERROR_MSG;
if(!check_right("Host","U",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="select status from hosts where hostid=$hostid";
$result=DBselect($sql);
if($status != DBget_field($result,0,0))
{
update_trigger_value_to_unknown_by_hostid($hostid);
$sql="update hosts set status=$status where hostid=$hostid and status not in (".HOST_STATUS_UNREACHABLE.",".HOST_STATUS_DELETED.")";
return DBexecute($sql);
}
else
{
return 1;
}
}
# Update Item definition
function update_item($itemid,$description,$key,$hostid,$delay,$history,$status,$type,$snmp_community,$snmp_oid,$value_type,$trapper_hosts,$snmp_port,$units,$multiplier,$delta)
{
global $ERROR_MSG;
if(!check_right("Item","U",$itemid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
if($delay<1)
{
$ERROR_MSG="Delay cannot be less than 1 second";
return 0;
}
if( ($snmp_port<1)||($snmp_port>65535))
{
$ERROR_MSG="Invalid SNMP port";
return 0;
}
if($value_type == ITEM_VALUE_TYPE_STR)
{
$delta=0;
}
$sql="update items set description='$description',key_='$key',hostid=$hostid,delay=$delay,history=$history,lastdelete=0,nextcheck=0,status=$status,type=$type,snmp_community='$snmp_community',snmp_oid='$snmp_oid',value_type=$value_type,trapper_hosts='$trapper_hosts',snmp_port=$snmp_port,units='$units',multiplier=$multiplier,delta=$delta where itemid=$itemid";
return DBexecute($sql);
}
# Add Action
function add_action( $triggerid, $userid, $good, $delay, $subject, $message, $scope, $severity, $recipient, $usrgrpid)
{
global $ERROR_MSG;
if(!check_right_on_trigger("A",$triggerid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
if($recipient == RECIPIENT_TYPE_USER)
{
$id = $userid;
}
else
{
$id = $usrgrpid;
}
if($scope==2)
{
$sql="insert into actions (triggerid,userid,good,delay,nextcheck,subject,message,scope,severity,recipient) values (0,$id,$good,$delay,0,'*Automatically generated*','*Automatically generated*',$scope,$severity,$recipient)";
return DBexecute($sql);
}
elseif($scope==1)
{
$sql="select h.hostid from triggers t,hosts h,functions f,items i where f.triggerid=t.triggerid and t.hostid=h.hostid and h.hostid=i.itemid and i.itemid=f.itemid and t.triggerid=$triggerid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$sql="insert into actions (triggerid,userid,good,delay,nextcheck,subject,message,scope,severity,recipient) values (".$row["hostid"].",$id,$good,$delay,0,'*Automatically generated*','*Automatically generated*',$scope,$severity,$recipient)";
DBexecute($sql);
}
return TRUE;
}
else
{
$sql="insert into actions (triggerid,userid,good,delay,nextcheck,subject,message,scope,severity,recipient) values ($triggerid,$id,$good,$delay,0,'$subject','$message',$scope,$severity,$recipient)";
return DBexecute($sql);
}
}
# Return TRUE if triggerid is a reason why the service is not OK
# Warning: recursive function
function does_service_depend_on_the_service($serviceid,$serviceid2)
{
# echo "Serviceid:$serviceid Triggerid:$serviceid2 ";
$service=get_service_by_serviceid($serviceid);
# echo "Service status:".$service["status"]." ";
if($service["status"]==0)
{
return FALSE;
}
if($serviceid==$serviceid2)
{
if($service["status"]>0)
{
return TRUE;
}
}
$sql="select serviceupid from services_links where servicedownid=$serviceid2 and soft=0";
# echo $sql." ";
$result=DBselect($sql);
while($row=DBfetch($result))
{
if(does_service_depend_on_the_service($serviceid,$row["serviceupid"]) == TRUE)
{
return TRUE;
}
}
return FALSE;
}
function service_has_parent($serviceid)
{
$sql="select count(*) from services_links where servicedownid=$serviceid";
$result=DBselect($sql);
if(DBget_field($result,0,0)>0)
{
return TRUE;
}
return FALSE;
}
function service_has_no_this_parent($parentid,$serviceid)
{
$sql="select count(*) from services_links where serviceupid=$parentid and servicedownid=$serviceid";
$result=DBselect($sql);
if(DBget_field($result,0,0)>0)
{
return FALSE;
}
return TRUE;
}
function delete_service_link($linkid)
{
$sql="delete from services_links where linkid=$linkid";
return DBexecute($sql);
}
function delete_service($serviceid)
{
$sql="delete from services_links where servicedownid=$serviceid or serviceupid=$serviceid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$sql="delete from services where serviceid=$serviceid";
return DBexecute($sql);
}
function update_service($serviceid,$name,$triggerid,$linktrigger,$algorithm,$showsla,$goodsla,$sortorder)
{
if( isset($linktrigger)&&($linktrigger=="on") )
{
// No mistake here
$triggerid=$triggerid;
}
else
{
$triggerid='NULL';
}
if( isset($showsla)&&($showsla=="on") )
{
$showsla=1;
}
else
{
$showsla=0;
}
$sql="update services set name='$name',triggerid=$triggerid,status=0,algorithm=$algorithm,showsla=$showsla,goodsla=$goodsla,sortorder=$sortorder where serviceid=$serviceid";
return DBexecute($sql);
}
function add_service($serviceid,$name,$triggerid,$linktrigger,$algorithm,$showsla,$goodsla,$sortorder)
{
if( isset($showsla)&&($showsla=="on") )
{
$showsla=1;
}
else
{
$showsla=0;
}
if( isset($linktrigger)&&($linktrigger=="on") )
{
// $trigger=get_trigger_by_triggerid($triggerid);
// $description=$trigger["description"];
// if( strstr($description,"%s"))
// {
$description=expand_trigger_description($triggerid);
// }
$description=addslashes($description);
$sql="insert into services (name,triggerid,status,algorithm,showsla,goodsla,sortorder) values ('$description',$triggerid,0,$algorithm,$showsla,$goodsla,$sortorder)";
}
else
{
$sql="insert into services (name,status,algorithm,showsla,goodsla,sortorder) values ('$name',0,$algorithm,$showsla,$goodsla,$sortorder)";
}
$result=DBexecute($sql);
if(!$result)
{
return FALSE;
}
$id=DBinsert_id($result,"services","serviceid");
if(isset($serviceid))
{
add_service_link($id,$serviceid,0);
}
return $id;
}
function add_host_to_services($hostid,$serviceid)
{
$sql="select distinct t.triggerid,t.description from triggers t,hosts h,items i,functions f where h.hostid=$hostid and h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=t.triggerid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$serviceid2=add_service($serviceid,$row["description"],$row["triggerid"],"on",0,"off",99,0);
// add_service_link($serviceid2,$serviceid,0);
}
return 1;
}
function is_service_hardlinked($serviceid)
{
$sql="select count(*) from services_links where servicedownid=$serviceid and soft=0";
$result=DBselect($sql);
if(DBget_field($result,0,0)>0)
{
return TRUE;
}
return FALSE;
}
function add_service_link($servicedownid,$serviceupid,$softlink)
{
global $ERROR_MSG;
if( ($softlink==0) && (is_service_hardlinked($servicedownid)==TRUE) )
{
return FALSE;
}
if($servicedownid==$serviceupid)
{
$ERROR_MSG="Cannot link service to itself.";
return FALSE;
}
$sql="insert into services_links (servicedownid,serviceupid,soft) values ($servicedownid,$serviceupid,$softlink)";
return DBexecute($sql);
}
# Update Action
function update_action( $actionid, $userid, $good, $delay, $subject, $message, $scope, $severity, $recipient, $usrgrpid)
{
if($recipient == RECIPIENT_TYPE_USER)
{
$id = $userid;
}
else
{
$id = $usrgrpid;
}
$sql="update actions set userid=$id,good=$good,delay=$delay,nextcheck=0,subject='$subject',message='$message',scope=$scope,severity=$severity,recipient=$recipient where actionid=$actionid";
return DBexecute($sql);
}
function delete_graphs_item($gitemid)
{
$sql="delete from graphs_items where gitemid=$gitemid";
return DBexecute($sql);
}
# Delete Graph
function delete_graph($graphid)
{
$sql="delete from graphs_items where graphid=$graphid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$sql="delete from graphs where graphid=$graphid";
return DBexecute($sql);
}
# Delete System Map
function delete_sysmap( $sysmapid )
{
$sql="delete from sysmaps where sysmapid=$sysmapid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$sql="delete from sysmaps_hosts where sysmapid=$sysmapid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$sql="delete from sysmaps_links where sysmapid=$sysmapid";
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 Action by userid
function delete_actions_by_userid( $userid )
{
$sql="select actionid from actions where userid=$userid";
$result=DBexecute($sql);
for($i=0;$i0)
// {
// return FALSE;
// }
// It was wrong - was deleting all dependencies
// $sql="select triggerid_down,triggerid_up from trigger_depends where triggerid_up=$triggerid_up or triggerid_down=$triggerid_down";
// $result=DBexecute($sql);
// for($i=0;$i3
function add_additional_dependencies($triggerid_down,$triggerid_up)
{
$sql="select triggerid_down from trigger_depends where triggerid_up=$triggerid_down";
$result=DBselect($sql);
for($i=0;$i0)
{
$ERROR_MSG="An item with the same Key already exists for this host. The key must be unique.";
return 0;
}
if($delay<1)
{
$ERROR_MSG="Delay cannot be less than 1 second";
return 0;
}
if( ($snmp_port<1)||($snmp_port>65535))
{
$ERROR_MSG="Invalid SNMP port";
return 0;
}
if($value_type == ITEM_VALUE_TYPE_STR)
{
$delta=0;
}
$key=addslashes($key);
$description=addslashes($description);
$sql="insert into items (description,key_,hostid,delay,history,lastdelete,nextcheck,status,type,snmp_community,snmp_oid,value_type,trapper_hosts,snmp_port,units,multiplier,delta) values ('$description','$key',$hostid,$delay,$history,0,0,$status,$type,'$snmp_community','$snmp_oid',$value_type,'$trapper_hosts',$snmp_port,'$units',$multiplier,$delta)";
$result=DBexecute($sql);
return DBinsert_id($result,"items","itemid");
}
# Delete Function definition
function delete_function_by_triggerid($triggerid)
{
$sql="delete from functions where triggerid=$triggerid";
return DBexecute($sql);
}
function delete_actions_by_triggerid($triggerid)
{
$sql="delete from actions where triggerid=$triggerid";
return DBexecute($sql);
}
function delete_alarms_by_triggerid($triggerid)
{
$sql="delete from alarms where triggerid=$triggerid";
return DBexecute($sql);
}
# Delete Function and Trigger definitions by itemid
function delete_triggers_by_itemid($itemid)
{
$sql="select triggerid from functions where itemid=$itemid";
$result=DBselect($sql);
for($i=0;$i";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$triggerid=DBinsert_id($result,"triggers","triggerid");
# echo $triggerid," ";
add_alarm($triggerid,2);
$expression=implode_exp($expression,$triggerid);
$sql="update triggers set expression='$expression' where triggerid=$triggerid";
# echo $sql," ";
return DBexecute($sql);
}
# Delete Trigger definition
function delete_trigger($triggerid)
{
global $ERROR_MSG;
$sql="select count(*) from trigger_depends where triggerid_down=$triggerid or triggerid_up=$triggerid";
$result=DBexecute($sql);
if(DBget_field($result,0,0)>0)
{
$ERROR_MSG="Delete dependencies first";
return FALSE;
}
$result=delete_function_by_triggerid($triggerid);
if(!$result)
{
return $result;
}
$result=delete_alarms_by_triggerid($triggerid);
if(!$result)
{
return $result;
}
$result=delete_actions_by_triggerid($triggerid);
if(!$result)
{
return $result;
}
$result=delete_services_by_triggerid($triggerid);
if(!$result)
{
return $result;
}
$sql="update sysmaps_links set triggerid=NULL where triggerid=$triggerid";
DBexecute($sql);
$sql="delete from triggers where triggerid=$triggerid";
return DBexecute($sql);
}
# Update Trigger definition
function update_trigger($triggerid,$expression,$description,$priority,$status,$comments,$url)
{
global $ERROR_MSG;
if(!check_right_on_trigger("U",$triggerid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$result=delete_function_by_triggerid($triggerid);
if(!$result)
{
return $result;
}
$expression=implode_exp($expression,$triggerid);
add_alarm($triggerid,2);
// $sql="update triggers set expression='$expression',description='$description',priority=$priority,status=$status,comments='$comments',url='$url' where triggerid=$triggerid";
$sql="update triggers set expression='$expression',description='$description',priority=$priority,status=$status,comments='$comments',url='$url',value=2 where triggerid=$triggerid";
return DBexecute($sql);
}
# Update User definition
function update_user($userid,$name,$surname,$alias,$passwd)
{
global $ERROR_MSG;
if(!check_right("User","U",$userid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
if($passwd=="")
{
$sql="update users set name='$name',surname='$surname',alias='$alias' where userid=$userid";
}
else
{
$passwd=md5($passwd);
$sql="update users set name='$name',surname='$surname',alias='$alias',passwd='$passwd' where userid=$userid";
}
return DBexecute($sql);
}
# Add permission
function add_permission($userid,$right,$permission,$id)
{
$sql="insert into rights (userid,name,permission,id) values ($userid,'$right','$permission',$id)";
return DBexecute($sql);
}
# Add User definition
function add_user($name,$surname,$alias,$passwd)
{
global $ERROR_MSG;
if(!check_right("User","A",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$passwd=md5($passwd);
$sql="insert into users (name,surname,alias,passwd) values ('$name','$surname','$alias','$passwd')";
return DBexecute($sql);
}
# Update Graph
function update_graph($graphid,$name,$width,$height)
{
global $ERROR_MSG;
if(!check_right("Graph","U",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="update graphs set name='$name',width=$width,height=$height where graphid=$graphid";
return DBexecute($sql);
}
# Update System Map
function update_sysmap($sysmapid,$name,$width,$height)
{
global $ERROR_MSG;
if(!check_right("Network map","U",$sysmapid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="update sysmaps set name='$name',width=$width,height=$height where sysmapid=$sysmapid";
return DBexecute($sql);
}
# Add Graph
function add_graph($name,$width,$height)
{
global $ERROR_MSG;
if(!check_right("Graph","A",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="insert into graphs (name,width,height) values ('$name',$width,$height)";
return DBexecute($sql);
}
function update_graph_item($gitemid,$itemid,$color,$drawtype,$sortorder)
{
$sql="update graphs_items set itemid=$itemid,color='$color',drawtype=$drawtype,sortorder=$sortorder where gitemid=$gitemid";
return DBexecute($sql);
}
function add_item_to_graph($graphid,$itemid,$color,$drawtype,$sortorder)
{
$sql="insert into graphs_items (graphid,itemid,color,drawtype,sortorder) values ($graphid,$itemid,'$color',$drawtype,$sortorder)";
return DBexecute($sql);
}
# Add System Map
function add_sysmap($name,$width,$height)
{
global $ERROR_MSG;
if(!check_right("Network map","A",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="insert into sysmaps (name,width,height) values ('$name',$width,$height)";
return DBexecute($sql);
}
function add_link($sysmapid,$shostid1,$shostid2,$triggerid,$drawtype_off,$color_off,$drawtype_on,$color_on)
{
if($triggerid == 0)
{
$sql="insert into sysmaps_links (sysmapid,shostid1,shostid2,triggerid,drawtype_off,color_off,drawtype_on,color_on) values ($sysmapid,$shostid1,$shostid2,NULL,$drawtype_off,'$color_off',$drawtype_on,'$color_on')";
}
else
{
$sql="insert into sysmaps_links (sysmapid,shostid1,shostid2,triggerid,drawtype_off,color_off,drawtype_on,color_on) values ($sysmapid,$shostid1,$shostid2,$triggerid,$drawtype_off,'$color_off',$drawtype_on,'$color_on')";
}
return DBexecute($sql);
}
function delete_link($linkid)
{
$sql="delete from sysmaps_links where linkid=$linkid";
return DBexecute($sql);
}
# Add Host to system map
function add_host_to_sysmap($sysmapid,$hostid,$label,$x,$y,$icon)
{
$sql="insert into sysmaps_hosts (sysmapid,hostid,label,x,y,icon) values ($sysmapid,$hostid,'$label',$x,$y,'$icon')";
return DBexecute($sql);
}
function update_sysmap_host($shostid,$sysmapid,$hostid,$label,$x,$y,$icon)
{
$sql="update sysmaps_hosts set hostid=$hostid,label='$label',x=$x,y=$y,icon='$icon' where shostid=$shostid";
return DBexecute($sql);
}
# Add everything based on host_templateid
function add_using_host_template($hostid,$host_templateid)
{
$host=get_host_by_hostid($hostid);
$sql="select itemid from items where hostid=$host_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"],"",161,$item["units"],$item["multiplier"],$item["delta"]);
$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 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");
}
}
}
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_user_groups($usrgrpid,$users)
{
$count=count($users);
$sql="delete from users_groups where usrgrpid=$usrgrpid";
DBexecute($sql);
for($i=0;$i<$count;$i++)
{
$sql="insert into users_groups (usrgrpid,userid) values ($usrgrpid,".$users[$i].")";
DBexecute($sql);
}
}
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)
{
global $ERROR_MSG;
// if(!check_right("Host","A",0))
// {
// $ERROR_MSG="Insufficient permissions";
// return 0;
// }
$sql="select * from groups where name='$name'";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
$ERROR_MSG="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)
{
global $ERROR_MSG;
if(!check_right("Host","A",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="select * from usrgrp where name='$name'";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
$ERROR_MSG="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)
{
global $ERROR_MSG;
// if(!check_right("Host","U",0))
// {
// $ERROR_MSG="Insufficient permissions";
// return 0;
// }
$sql="select * from groups where name='$name' and groupid<>$groupid";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
$ERROR_MSG="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)
{
global $ERROR_MSG;
if(!check_right("Host","U",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
$sql="select * from usrgrp where name='$name' and usrgrpid<>$usrgrpid";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
$ERROR_MSG="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;
}
# Add Host definition
function add_host($host,$port,$status,$useip,$ip,$host_templateid,$newgroup,$groups)
{
global $ERROR_MSG;
if(!check_right("Host","A",0))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
if (!eregi('^([0-9a-zA-Z\_\.-]+)$', $host, &$arr))
{
$ERROR_MSG="Hostname should contain 0-9a-zA-Z_.- characters only";
return 0;
}
$sql="select * from hosts where host='$host'";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
$ERROR_MSG="Host '$host' already exists";
return 0;
}
if( isset($useip) && ($useip=="on") )
{
$useip=1;
}
else
{
$useip=0;
}
$sql="insert into hosts (host,port,status,useip,ip,disable_until) values ('$host',$port,$status,$useip,'$ip',0)";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$hostid=DBinsert_id($result,"hosts","hostid");
if($host_templateid != 0)
{
$result=add_using_host_template($hostid,$host_templateid);
}
update_host_groups($hostid,$groups);
if($newgroup != "")
{
add_group_to_host($hostid,$newgroup);
}
update_profile("HOST_PORT",$port);
return $result;
}
function update_host($hostid,$host,$port,$status,$useip,$ip,$newgroup,$groups)
{
global $ERROR_MSG;
if(!check_right("Host","U",$hostid))
{
$ERROR_MSG="Insufficient permissions";
return 0;
}
if (!eregi('^([0-9a-zA-Z\_\.-]+)$', $host, &$arr))
{
$ERROR_MSG="Hostname should contain 0-9a-zA-Z_.- characters only";
return 0;
}
$sql="select * from hosts where host='$host' and hostid<>$hostid";
$result=DBexecute($sql);
if(DBnum_rows($result)>0)
{
$ERROR_MSG="Host '$host' already exists";
return 0;
}
if($useip=="on")
{
$useip=1;
}
else
{
$useip=0;
}
$sql="update hosts set host='$host',port=$port,useip=$useip,ip='$ip' where hostid=$hostid";
$result=DBexecute($sql);
update_host_status($hostid, $status);
update_host_groups($hostid,$groups);
if($newgroup != "")
{
add_group_to_host($hostid,$newgroup);
}
return $result;
}
# 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);
}
# 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)
{
$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)
{
$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)
{
global $ERROR_MSG;
if(!check_right("Configuration of Zabbix","U",0))
{
$ERROR_MSG="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);
}
function delete_sysmaps_host_by_hostid($hostid)
{
$sql="select shostid from sysmaps_hosts where hostid=$hostid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$sql="delete from sysmaps_links where shostid1=".$row["shostid"]." or shostid2".$row["shostid"];
DBexecute($sql);
}
$sql="delete from sysmaps_hosts where hostid=$hostid";
return DBexecute($sql);
}
# Delete Host from sysmap definition
function delete_sysmaps_host($shostid)
{
$sql="delete from sysmaps_links where shostid1=$shostid or shostid2=$shostid";
$result=DBexecute($sql);
if(!$result)
{
return $result;
}
$sql="delete from sysmaps_hosts where shostid=$shostid";
return DBexecute($sql);
}
function delete_groups_by_hostid($hostid)
{
$sql="select groupid from hosts_groups where hostid=$hostid";
$result=DBselect($sql);
while($row=DBfetch($result))
{
$sql="delete from hosts_groups where hostid=$hostid and groupid=".$row["groupid"];
DBexecute($sql);
$sql="select count(*) as count from hosts_groups where groupid=".$row["groupid"];
$result2=DBselect($sql);
$row2=DBfetch($result2);
if($row2["count"]==0)
{
$sql="delete from groups where groupid=".$row["groupid"];
DBexecute($sql);
}
}
}
# Delete Host
function delete_host($hostid)
{
global $DB_TYPE;
if($DB_TYPE=="MYSQL")
{
$sql="update hosts set status=".HOST_STATUS_DELETED.",host=concat(host,\" [DELETED]\") where hostid=$hostid";
}
else
{
$sql="update hosts set status=".HOST_STATUS_DELETED.",host=host||' [DELETED]' where hostid=$hostid";
}
return DBexecute($sql);
// $sql="select itemid from items where hostid=$hostid";
// $result=DBselect($sql);
// if(!$result)
// {
// return $result;
// }
// for($i=0;$i";
cr();
echo "";
cr();
echo "