* * This widget is based on legacy frontpage module created by Paul Gear. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * Top devices by traffic * @author Sergiusz Paprzycki * @copyright 2015 Sergiusz Paprzycki * @license GPL * @package LibreNMS * @subpackage Widgets */ if( defined('show_settings') || empty($widget_settings) ) { $common_output[] = '
'; } else { $interval = $widget_settings['time_interval']; (integer) $interval_seconds = ($interval * 60); (integer) $device_count = $widget_settings['device_count']; $common_output[] = '

Top '.$device_count.' devices (last '.$interval.' minutes)

'; $params = array('user' => $_SESSION['user_id'], 'interval' => array($interval_seconds), 'count' => array($device_count)); if (is_admin() || is_read()) { $query = ' SELECT *, sum(p.ifInOctets_rate + p.ifOutOctets_rate) as total FROM ports as p, devices as d WHERE d.device_id = p.device_id AND unix_timestamp() - p.poll_time < :interval AND ( p.ifInOctets_rate > 0 OR p.ifOutOctets_rate > 0 ) GROUP BY d.device_id ORDER BY total desc LIMIT :count '; } else { $query = ' SELECT *, sum(p.ifInOctets_rate + p.ifOutOctets_rate) as total FROM ports as p, devices as d, `devices_perms` AS `P` WHERE `P`.`user_id` = :user AND `P`.`device_id` = `d`.`device_id` AND d.device_id = p.device_id AND unix_timestamp() - p.poll_time < :interval AND ( p.ifInOctets_rate > 0 OR p.ifOutOctets_rate > 0 ) GROUP BY d.device_id ORDER BY total desc LIMIT :count '; } $common_output[] = '
'; foreach (dbFetchRows($query, $params) as $result) { $common_output[] = ' '; } $common_output[] = '
Device Total traffic
'.generate_device_link($result, shorthost($result['hostname'])).' '.generate_device_link( $result, generate_minigraph_image( $result, $config['time']['day'], $config['time']['now'], 'device_bits', 'no', 150, 21), array(), 0, 0, 0).'
'; }