diff --git a/includes/functions.php b/includes/functions.php index 37f848e6c..661114ddc 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -24,9 +24,11 @@ require('collectd/config.php'); require('collectd/functions.php'); require('collectd/definitions.php'); -function device_by_id_cache($device_id) { +function device_by_id_cache($device_id) +{ global $device_cache; - if(is_array($device_cache[$device_id])) { + if (is_array($device_cache[$device_id])) + { $device = $device_cache[$device_id]; } else { $device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE `device_id` = '".$device_id."'")); @@ -35,54 +37,63 @@ function device_by_id_cache($device_id) { return $device; } -function mac_clean_to_readable($mac){ +function mac_clean_to_readable($mac) +{ + $r = substr($mac, 0, 2); + $r .= ":".substr($mac, 2, 2); + $r .= ":".substr($mac, 4, 2); + $r .= ":".substr($mac, 6, 2); + $r .= ":".substr($mac, 8, 2); + $r .= ":".substr($mac, 10, 2); - $r = substr($mac, 0, 2); - $r .= ":".substr($mac, 2, 2); - $r .= ":".substr($mac, 4, 2); - $r .= ":".substr($mac, 6, 2); - $r .= ":".substr($mac, 8, 2); - $r .= ":".substr($mac, 10, 2); - - return($r); + return($r); } function zeropad($num) { - return (strlen($num) == 1) ? '0'.$num : $num; + return (strlen($num) == 1) ? '0'.$num : $num; } function zeropad_lineno($num, $length) { - while (strlen($num) < $length) - $num = '0'.$num; - - return $num; + while (strlen($num) < $length) + { + $num = '0'.$num; + } + + return $num; } function only_alphanumeric( $string ) { - return preg_replace('/[^a-zA-Z0-9]/', '', $string); + return preg_replace('/[^a-zA-Z0-9]/', '', $string); } -function validate_hostip($host) { - +function validate_hostip($host) +{ + // FIXME } -function write_dev_attrib($device_id, $attrib_type, $attrib_value) { +function write_dev_attrib($device_id, $attrib_type, $attrib_value) +{ $count_sql = "SELECT COUNT(*) FROM devices_attribs WHERE `device_id` = '" . $device_id . "' AND `attrib_type` = '$attrib_type'"; - if(mysql_result(mysql_query($count_sql),0)) { + if (mysql_result(mysql_query($count_sql),0)) + { $update_sql = "UPDATE devices_attribs SET attrib_value = '$attrib_value' WHERE `device_id` = '$device_id' AND `attrib_type` = '$attrib_type'"; mysql_query($update_sql); - } else { + } + else + { $insert_sql = "INSERT INTO devices_attribs (`device_id`, `attrib_type`, `attrib_value`) VALUES ('$device_id', '$attrib_type', '$attrib_value')"; mysql_query($insert_sql); } + return mysql_affected_rows(); } -function shorthost($hostname, $len=16) { +function shorthost($hostname, $len=16) +{ $parts = explode(".", $hostname); $shorthost = $parts[0]; $i=1; @@ -94,59 +105,73 @@ function shorthost($hostname, $len=16) { return ($shorthost); } -function rrdtool_update($rrdfile, $rrdupdate) { - global $config; - global $debug; - if($debug) { echo($config['rrdtool'] . " update $rrdfile $rrdupdate \n"); } +function rrdtool_update($rrdfile, $rrdupdate) +{ + global $config, $debug; + + if ($debug) { echo($config['rrdtool'] . " update $rrdfile $rrdupdate \n"); } return shell_exec($config['rrdtool'] . " update $rrdfile $rrdupdate"); } -function rrdtool($command, $file, $options) { +function rrdtool($command, $file, $options) +{ global $config; - if($config['debug']) { echo($config['rrdtool'] . " $command $file $options \n"); } + + if ($config['debug']) { echo($config['rrdtool'] . " $command $file $options \n"); } return shell_exec($config['rrdtool'] . " $command $file $options"); } -function device_array($device_id) { +function device_array($device_id) +{ $sql = "SELECT * FROM `devices` WHERE `device_id` = '".$device_id."'"; $query = mysql_query($sql); $device = mysql_fetch_array($query); return $device; } -function getHostOS($device) { - global $config; - $sysDescr_cmd = $config['snmpget']." -m SNMPv2-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " sysDescr.0"; - $sysDescr = str_replace("\"", "", trim(shell_exec($sysDescr_cmd))); - $dir_handle = @opendir($config['install_dir'] . "/includes/osdiscovery") or die("Unable to open $path"); - while ($file = readdir($dir_handle)) { - if( preg_match("/^discover-([a-z0-9\-]*).php/", $file) ) { - include($config['install_dir'] . "/includes/osdiscovery/" . $file); - } +function getHostOS($device) +{ + global $config; + + $sysDescr_cmd = $config['snmpget']." -m SNMPv2-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " sysDescr.0"; + $sysDescr = str_replace("\"", "", trim(shell_exec($sysDescr_cmd))); + $dir_handle = @opendir($config['install_dir'] . "/includes/osdiscovery") or die("Unable to open $path"); + while ($file = readdir($dir_handle)) + { + if ( preg_match("/^discover-([a-z0-9\-]*).php/", $file) ) + { + include($config['install_dir'] . "/includes/osdiscovery/" . $file); } - closedir($dir_handle); - if($os) { return $os; } else { return FALSE; } + } + closedir($dir_handle); + + if ($os) { return $os; } else { return FALSE; } } function billpermitted($bill_id) { global $_SESSION; - if($_SESSION['userlevel'] >= "5") { + if ($_SESSION['userlevel'] >= "5") + { $allowed = TRUE; - } elseif (@mysql_result(mysql_query("SELECT count(*) FROM bill_perms WHERE `user_id` = '" . $_SESSION['user_id'] . "' AND `bill_id` = $bill_id"), 0) > '0') { + } + elseif (@mysql_result(mysql_query("SELECT count(*) FROM bill_perms WHERE `user_id` = '" . $_SESSION['user_id'] . "' AND `bill_id` = $bill_id"), 0) > '0') + { $allowed = TRUE; - } else { + } + else + { $allowed = FALSE; } - return $allowed; + return $allowed; } function interfacepermitted($interface_id) { global $_SESSION; - if($_SESSION['userlevel'] >= "5") { + if ($_SESSION['userlevel'] >= "5") { $allowed = TRUE; } elseif ( devicepermitted(mysql_result(mysql_query("SELECT `device_id` FROM `interfaces` WHERE `interface_id` = '$interface_id'"),0))) { $allowed = TRUE; @@ -161,7 +186,7 @@ function interfacepermitted($interface_id) function devicepermitted($device_id) { global $_SESSION; - if($_SESSION['userlevel'] >= "5") { + if ($_SESSION['userlevel'] >= "5") { $allowed = true; } elseif ( @mysql_result(mysql_query("SELECT * FROM devices_perms WHERE `user_id` = '" . $_SESSION['user_id'] . "' AND `device_id` = $device_id"), 0) > '0' ) { $allowed = true; @@ -206,7 +231,7 @@ function arguments($argv) foreach ($argv as $arg) { if (ereg('--([^=]+)=(.*)',$arg,$reg)) { $_ARG[$reg[1]] = $reg[2]; - } elseif(ereg('-([a-zA-Z0-9])',$arg,$reg)) { + } elseif (ereg('-([a-zA-Z0-9])',$arg,$reg)) { $_ARG[$reg[1]] = 'true'; } @@ -277,22 +302,22 @@ function interface_packets ($rrd_file) // Returns the last in/out pps value in R function geteventicon ($message) { - if($message == "Device status changed to Down") { $icon = "server_connect.png"; } - if($message == "Device status changed to Up") { $icon = "server_go.png"; } - if($message == "Interface went down" || $message == "Interface changed state to Down" ) { $icon = "if-disconnect.png"; } - if($message == "Interface went up" || $message == "Interface changed state to Up" ) { $icon = "if-connect.png"; } - if($message == "Interface disabled") { $icon = "if-disable.png"; } - if($message == "Interface enabled") { $icon = "if-enable.png"; } - if($icon) { return $icon; } else { return false; } + if ($message == "Device status changed to Down") { $icon = "server_connect.png"; } + if ($message == "Device status changed to Up") { $icon = "server_go.png"; } + if ($message == "Interface went down" || $message == "Interface changed state to Down" ) { $icon = "if-disconnect.png"; } + if ($message == "Interface went up" || $message == "Interface changed state to Up" ) { $icon = "if-connect.png"; } + if ($message == "Interface disabled") { $icon = "if-disable.png"; } + if ($message == "Interface enabled") { $icon = "if-enable.png"; } + if ($icon) { return $icon; } else { return false; } } function generateiflink($interface, $text=0, $type = '') { global $twoday; global $now; global $config; global $day; global $month; $interface = ifNameDescr($interface); - if(!$text) { $text = fixIfName($interface['label']); } - if(isset($type)) { $interface['graph_type'] = $type; } - if(!$interface['graph_type']) { $interface['graph_type'] = 'port_bits'; } + if (!$text) { $text = fixIfName($interface['label']); } + if (isset($type)) { $interface['graph_type'] = $type; } + if (!$interface['graph_type']) { $interface['graph_type'] = 'port_bits'; } $class = ifclass($interface['ifOperStatus'], $interface['ifAdminStatus']); $graph_url = $config['base_url'] . "/graph.php?port=" . $interface['interface_id'] . "&from=$day&to=$now&width=400&height=100&type=" . $interface['graph_type']; $graph_url_month = $config['base_url'] . "/graph.php?port=" . $interface['interface_id'] . "&from=$month&to=$now&width=400&height=100&type=" . $interface['graph_type']; @@ -300,7 +325,7 @@ function generateiflink($interface, $text=0, $type = '') $link = ""; - if($interface['ifAlias']) { $link .= "
" . htmlentities($interface['ifAlias']); } + if ($interface['ifAlias']) { $link .= "
" . htmlentities($interface['ifAlias']); } $link .= "' "; $link .= $config['overlib_defaults'].");\" onmouseout=\"return nd();\" >$text
"; @@ -310,10 +335,10 @@ function generateiflink($interface, $text=0, $type = '') function generatedevicelink($device, $text=0, $start=0, $end=0) { global $twoday; global $day; global $now; global $config; - if(!$start) { $start = $day; } - if(!$end) { $end = $now; } + if (!$start) { $start = $day; } + if (!$end) { $end = $now; } $class = devclass($device); - if(!$text) { $text = $device['hostname']; } + if (!$text) { $text = $device['hostname']; } $graph_url = $config['base_url'] . "/graph.php?device=" . $device['device_id'] . "&from=$start&to=$end&width=400&height=120&type=device_cpu"; $graph_url_b = $config['base_url'] . "/graph.php?device=" . $device['device_id'] . "&from=$start&to=$end&width=400&height=120&type=device_memory"; $link = "'; - } elseif(file_exists($config['html_dir'] . "/images/os/$type" . ".gif")){ $image = ''; } - if($type == "linux") { + if (file_exists($config['html_dir'] . "/images/os/$type" . ".png")){ $image = ''; + } elseif (file_exists($config['html_dir'] . "/images/os/$type" . ".gif")){ $image = ''; } + if ($type == "linux") { $features = strtolower(trim($data['features'])); list($distro) = split(" ", $features); - if(file_exists($config['html_dir'] . "/images/os/$distro" . ".png")){ $image = ''; - } elseif(file_exists($config['html_dir'] . "/images/os/$distro" . ".gif")){ $image = ''; } + if (file_exists($config['html_dir'] . "/images/os/$distro" . ".png")){ $image = ''; + } elseif (file_exists($config['html_dir'] . "/images/os/$distro" . ".gif")){ $image = ''; } } return $image; } @@ -476,7 +501,7 @@ function humanmedia($media) function humanspeed($speed) { $speed = formatRates($speed); - if($speed == "") { $speed = "-"; } + if ($speed == "") { $speed = "-"; } return $speed; } @@ -505,18 +530,18 @@ function formatUptime($diff, $format="long") $uptime = ""; - if($format == "short") { - if($yearsDiff > '0'){ $uptime .= $yearsDiff . "y "; } - if($daysDiff > '0'){ $uptime .= $daysDiff . "d "; } - if($hrsDiff > '0'){ $uptime .= $hrsDiff . "h "; } - if($minsDiff > '0'){ $uptime .= $minsDiff . "m "; } - if($secsDiff > '0'){ $uptime .= $secsDiff . "s "; } + if ($format == "short") { + if ($yearsDiff > '0'){ $uptime .= $yearsDiff . "y "; } + if ($daysDiff > '0'){ $uptime .= $daysDiff . "d "; } + if ($hrsDiff > '0'){ $uptime .= $hrsDiff . "h "; } + if ($minsDiff > '0'){ $uptime .= $minsDiff . "m "; } + if ($secsDiff > '0'){ $uptime .= $secsDiff . "s "; } } else { - if($yearsDiff > '0'){ $uptime .= $yearsDiff . " years, "; } - if($daysDiff > '0'){ $uptime .= $daysDiff . " day" . ($daysDiff != 1 ? 's' : '' ) . ", "; } - if($hrsDiff > '0'){ $uptime .= $hrsDiff . "h "; } - if($minsDiff > '0'){ $uptime .= $minsDiff . "m "; } - if($secsDiff > '0'){ $uptime .= $secsDiff . "s "; } + if ($yearsDiff > '0'){ $uptime .= $yearsDiff . " years, "; } + if ($daysDiff > '0'){ $uptime .= $daysDiff . " day" . ($daysDiff != 1 ? 's' : '' ) . ", "; } + if ($hrsDiff > '0'){ $uptime .= $hrsDiff . "h "; } + if ($minsDiff > '0'){ $uptime .= $minsDiff . "m "; } + if ($secsDiff > '0'){ $uptime .= $secsDiff . "s "; } } return trim($uptime); } @@ -525,7 +550,7 @@ function isSNMPable($hostname, $community, $snmpver, $port) { global $config; $pos = shell_exec($config['snmpget'] ." -m SNMPv2-MIB -$snmpver -c $community -t 1 $hostname:$port sysDescr.0"); - if($pos == '') { + if ($pos == '') { return false; } else { return true; @@ -535,7 +560,7 @@ function isSNMPable($hostname, $community, $snmpver, $port) function isPingable($hostname) { global $config; $status = shell_exec($config['fping'] . " $hostname"); - if(strstr($status, "alive")) { + if (strstr($status, "alive")) { return TRUE; } else { return FALSE; @@ -614,7 +639,8 @@ function fixIOSFeatures($features) return $features; } -function fixIOSHardware($hardware){ +function fixIOSHardware($hardware) +{ $hardware = preg_replace("/C([0-9]+)/", "Cisco \\1", $hardware); $hardware = preg_replace("/CISCO([0-9]+)/", "Cisco \\1", $hardware); @@ -633,20 +659,29 @@ function fixIOSHardware($hardware){ } -function createHost ($host, $community, $snmpver, $port = 161){ - $host = trim(strtolower($host)); - $device = array('hostname' => $host, 'community' => $community, 'snmpver' => $snmpver, 'port' => $port); - $host_os = getHostOS($device); - if($host_os) { - $sql = mysql_query("INSERT INTO `devices` (`hostname`, `sysName`, `community`, `port`, `os`, `status`,`snmpver`) VALUES ('$host', '$host', '$community', '$port', '$host_os', '1','$snmpver')"); - if(mysql_affected_rows()) { - $device_id = mysql_result(mysql_query("SELECT device_id FROM devices WHERE hostname = '$host'"),0); - mysql_query("INSERT INTO devices_attribs (attrib_type, attrib_value, device_id) VALUES ('discover','1','$device_id')"); - return("Created host : $host (id:$device_id) (os:$host_os)"); - } else { return FALSE; } - } else { - return FALSE; - } +function createHost ($host, $community, $snmpver, $port = 161) +{ + $host = trim(strtolower($host)); + $device = array('hostname' => $host, 'community' => $community, 'snmpver' => $snmpver, 'port' => $port); + $host_os = getHostOS($device); + if ($host_os) + { + $sql = mysql_query("INSERT INTO `devices` (`hostname`, `sysName`, `community`, `port`, `os`, `status`,`snmpver`) VALUES ('$host', '$host', '$community', '$port', '$host_os', '1','$snmpver')"); + if (mysql_affected_rows()) + { + $device_id = mysql_result(mysql_query("SELECT device_id FROM devices WHERE hostname = '$host'"),0); + mysql_query("INSERT INTO devices_attribs (attrib_type, attrib_value, device_id) VALUES ('discover','1','$device_id')"); + return("Created host : $host (id:$device_id) (os:$host_os)"); + } + else + { + return FALSE; + } + } + else + { + return FALSE; + } } function isDomainResolves($domain) @@ -658,10 +693,12 @@ function hoststatus($id) { $sql = mysql_query("SELECT `status` FROM `devices` WHERE `device_id` = '$id'"); $result = @mysql_result($sql, 0); + return $result; } -function match_network ($nets, $ip, $first=false) { +function match_network ($nets, $ip, $first=false) +{ $return = false; if (!is_array ($nets)) $nets = array ($nets); foreach ($nets as $net) { @@ -679,6 +716,7 @@ function match_network ($nets, $ip, $first=false) { if ($first && $return) return true; } } + return $return; } @@ -687,6 +725,7 @@ function snmp2ipv6($ipv6_snmp) $ipv6 = explode('.',$ipv6_snmp); for ($i = 0;$i <= 15;$i++) { $ipv6[$i] = zeropad(dechex($ipv6[$i])); } for ($i = 0;$i <= 15;$i+=2) { $ipv6_2[] = $ipv6[$i] . $ipv6[$i+1]; } + return implode(':',$ipv6_2); } @@ -696,6 +735,7 @@ function ipv62snmp($ipv6) for ($i = 0;$i < 8;$i++) { $ipv6_ex[$i] = zeropad_lineno($ipv6_ex[$i],4); } $ipv6_ip = implode('',$ipv6_ex); for ($i = 0;$i < 32;$i+=2) $ipv6_split[] = hexdec(substr($ipv6_ip,$i,2)); + return implode('.',$ipv6_split); } diff --git a/includes/polling/cisco-mac-accounting.inc.php b/includes/polling/cisco-mac-accounting.inc.php index bef4d3023..dee20b0a6 100755 --- a/includes/polling/cisco-mac-accounting.inc.php +++ b/includes/polling/cisco-mac-accounting.inc.php @@ -68,7 +68,6 @@ while ($acc = mysql_fetch_array($mac_accounting_query)) { RRA:MAX:0.5:288:797"); } $woo = "N:".($b_in+0).":".($b_out+0).":".($p_in+0).":".($p_out+0); - if($debug) {echo("\n rrdtool update $rrdfile $woo");} $ret = rrdtool_update("$rrdfile", $woo); if ($update) { /// Do Updates diff --git a/includes/polling/device-catos.inc.php b/includes/polling/device-catos.inc.php index f2793bc10..c47c5171a 100755 --- a/includes/polling/device-catos.inc.php +++ b/includes/polling/device-catos.inc.php @@ -45,7 +45,7 @@ RRA:MAX:0.5:288:2000`; } - `rrdtool update $cpurrd N:$cpu5s:$cpu5m`; + rrdtool_update($cpurrd, "N:$cpu5s:$cpu5m"); include("includes/polling/cisco-processors.inc.php"); include("includes/polling/cisco-mempool.inc.php"); diff --git a/includes/polling/temperatures.inc.php b/includes/polling/temperatures.inc.php index 77acf0d08..ffb56d87e 100755 --- a/includes/polling/temperatures.inc.php +++ b/includes/polling/temperatures.inc.php @@ -34,10 +34,7 @@ while($temperature = mysql_fetch_array($temp_data)) { echo($temp . "C\n"); - $updatecmd = "rrdtool update $temprrd N:$temp"; - - if ($debug) { echo "$updatecmd\n"; } - shell_exec($updatecmd); + rrdtool_update($temprrd,"N:$temp"); if($temperature['temp_current'] < $temperature['temp_limit'] && $temp >= $temperature['temp_limit']) { $updated = ", `service_changed` = '" . time() . "' ";