. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace LibreNMS\Util; use App\Models\Device; use LibreNMS\Config; class Graph { public static function getTypes() { return ['device', 'port', 'application', 'munin', 'service']; } /** * Get an array of all graph subtypes for the given type * @param $type * @param Device $device * @return array */ public static function getSubtypes($type, $device = null) { $types = []; // find the subtypes defined in files foreach (glob(base_path("/includes/html/graphs/$type/*.inc.php")) as $file) { $type = basename($file, '.inc.php'); if ($type != 'auth') { $types[] = $type; } } if ($device != null) { // find the MIB subtypes $graphs = $device->graphs->pluck('graph'); foreach (Config::get('graph_types') as $type => $type_data) { foreach (array_keys($type_data) as $subtype) { if ($graphs->contains($subtype) && self::isMibGraph($type, $subtype)) { $types[] = $subtype; } } } } sort($types); return $types; } /** * Check if the given graph is a mib graph * * @param $type * @param $subtype * @return bool */ public static function isMibGraph($type, $subtype) { return Config::get("graph_types.$type.$subtype.section") == 'mib'; } public static function getOverviewGraphsForDevice($device) { if ($device->snmp_disable) { return Config::getOsSetting('ping', 'over'); } if ($graphs = Config::getOsSetting($device->os, 'over')) { return $graphs; } $os_group = Config::getOsSetting($device->os, 'group'); return Config::get("os_group.$os_group.over", Config::get('os.default.over')); } }