array(), "programstatus" => array(), "hoststatus" => array(), "servicestatus" => array(), "contactstatus" => array() ); $statustype="unknown"; $current_host=0; $current_service=0; $current_contact=0; // file name can be overridden from default if(isset($thefile) && $thefile!="") $fname=$thefile; else $fname=$cfg['status_file']; // open file for reading... $x=0; if(($fh=@fopen($fname,'r'))!=FALSE){ // read all lines while(!feof($fh)){ $x++; if($maxlines>0 && $x>$maxlines) break; $s=fgets($fh); // skip comments if($s[0]=='#') continue; // trim lines $s=ltrim(rtrim($s)); // skip blank lines if($s=="") continue; // we are in a new type of status data or new entry if(!strcmp($s,"info {")){ $statustype="info"; continue; } else if(!strcmp($s,"programstatus {")){ $statustype="programstatus"; continue; } else if(!strcmp($s,"hoststatus {")){ $statustype="hoststatus"; $current_host++; continue; } else if(!strcmp($s,"servicestatus {")){ $statustype="servicestatus"; $current_service++; continue; } else if(!strcmp($s,"contactstatus {")){ $statustype="contactstatus"; $current_contact++; continue; } // we just ended an entry... else if(!strcmp($s,"}")){ $statustype="unknown"; continue; } // get/split var/val pairs $v=explode("=",$s); $var=""; $val=""; if(isset($v[0]) && isset($v[1])){ // trim var/val pairs $var=ltrim(rtrim($v[0])); $val=ltrim(rtrim($v[1])); } // INFO AND PROGRAM STATUS if($statustype=="info" || $statustype=="programstatus"){ $contents[$statustype][$var]=$val; continue; } // HOST STATUS else if($statustype=="hoststatus"){ $contents[$statustype][$current_host][$var]=$val; continue; } // SERVICE STATUS else if($statustype=="servicestatus"){ $contents[$statustype][$current_service][$var]=$val; continue; } // CONTACT STATUS else if($statustype=="contactstatus"){ $contents[$statustype][$current_contact][$var]=$val; continue; } } fclose($fh); } $contents["total_hosts"]=$current_host; $contents["total_services"]=$current_service; $contents["total_contacts"]=$current_contact; return $contents; } // reads retention file function read_retention_file($thefile="",$maxlines=0){ global $cfg; $contents=array( "info" => array(), "program" => array(), "host" => array(), "service" => array(), "contact" => array() ); $datatype="unknown"; $current_host=0; $current_service=0; $current_contact=0; // file name can be overridden from default if(isset($thefile) && $thefile!="") $fname=$thefile; else $fname=$cfg['state_retention_file']; // open file for reading... $x=0; if(($fh=@fopen($fname,'r'))!=FALSE){ // read all lines while(!feof($fh)){ $x++; if($maxlines>0 && $x>$maxlines) break; $s=fgets($fh); // skip comments if($s[0]=='#') continue; // trim lines $s=ltrim(rtrim($s)); // skip blank lines if($s=="") continue; // we are in a new type of status data or new entry if(!strcmp($s,"info {")){ $datatype="info"; continue; } else if(!strcmp($s,"program {")){ $datatype="program"; continue; } else if(!strcmp($s,"host {")){ $datatype="host"; $current_host++; continue; } else if(!strcmp($s,"service {")){ $datatype="service"; $current_service++; continue; } else if(!strcmp($s,"contact {")){ $datatype="contact"; $current_contact++; continue; } // we just ended an entry... else if(!strcmp($s,"}")){ $datatype="unknown"; continue; } // get/split var/val pairs $v=explode("=",$s); $var=""; $val=""; if(isset($v[0]) && isset($v[1])){ // trim var/val pairs $var=ltrim(rtrim($v[0])); $val=ltrim(rtrim($v[1])); } // INFO AND PROGRAM STATUS if($datatype=="info" || $datatype=="program"){ $contents[$datatype][$var]=$val; continue; } // HOST STATUS else if($datatype=="host"){ $contents[$datatype][$current_host][$var]=$val; continue; } // SERVICE STATUS else if($datatype=="service"){ $contents[$datatype][$current_service][$var]=$val; continue; } // CONTACT STATUS else if($datatype=="contact"){ $contents[$datatype][$current_contact][$var]=$val; continue; } } fclose($fh); } $contents["total_hosts"]=$current_host; $contents["total_services"]=$current_service; $contents["total_contacts"]=$current_contact; return $contents; } ?>