mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			219 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| // FIXME - REWRITE!
 | |
| $hostname = $device['hostname'];
 | |
| $hostid   = $device['port_id'];
 | |
| $ifname   = $port['ifDescr'];
 | |
| $ifIndex  = $port['ifIndex'];
 | |
| $speed    = humanspeed($port['ifSpeed']);
 | |
| 
 | |
| $ifalias = $port['name'];
 | |
| 
 | |
| if ($port['ifPhysAddress']) {
 | |
|     $mac = $port['ifPhysAddress'];
 | |
| }
 | |
| 
 | |
| $color = 'black';
 | |
| if ($port['ifAdminStatus'] == 'down') {
 | |
|     $status = "<span class='grey'>Disabled</span>";
 | |
| }
 | |
| 
 | |
| if ($port['ifAdminStatus'] == 'up' && $port['ifOperStatus'] == 'down') {
 | |
|     $status = "<span class='red'>Enabled / Disconnected</span>";
 | |
| }
 | |
| 
 | |
| if ($port['ifAdminStatus'] == 'up' && $port['ifOperStatus'] == 'up') {
 | |
|     $status = "<span class='green'>Enabled / Connected</span>";
 | |
| }
 | |
| 
 | |
| $i   = 1;
 | |
| $inf = fixifName($ifname);
 | |
| 
 | |
| echo "<div style='clear: both;'>";
 | |
| 
 | |
| if ($vars['subview'] == 'top10') {
 | |
|     if (!isset($vars['sort'])) {
 | |
|         $vars['sort'] = 'in';
 | |
|     }
 | |
| 
 | |
|     if (!isset($vars['period'])) {
 | |
|         $vars['period'] = '1day';
 | |
|     }
 | |
| 
 | |
|     $from = '-'.$vars['period'];
 | |
| 
 | |
|     echo "<div style='margin: 0px 0px 0px 0px'>
 | |
|          <div style=' margin:0px; float: left;';>
 | |
|            <div style='margin: 0px 10px 5px 0px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Day</span><br />
 | |
| 
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => $vars['sort'], 'period' => 'day'))."'>
 | |
| 
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat='.$vars['graph'].'&type=port_mac_acc_total&sort='.$vars['sort'].'&from='.$config['time']['day'].'&to='.$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|            <div style='margin: 0px 10px 5px 0px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Two Day</span><br />
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => $vars['sort'], 'period' => 'twoday'))."/'>
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat='.$vars['graph'].'&type=port_mac_acc_total&sort='.$vars['sort'].'&from='.$config['time']['twoday'].'&to='.$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|            <div style='margin: 0px 10px 5px 0px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Week</span><br />
 | |
|             <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => $vars['sort'], 'period' => 'week'))."/'>
 | |
|             <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&type=port_mac_acc_total&sort='.$vars['sort'].'&stat='.$vars['graph'].'&from='.$config['time']['week'].'&to='.$config['time']['now']."&width=150&height=50' />
 | |
|             </a>
 | |
|             </div>
 | |
|             <div style='margin: 0px 10px 5px 0px; padding:5px; background: #e5e5e5;'>
 | |
|             <span class=device-head>Month</span><br />
 | |
|             <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => $vars['sort'], 'period' => 'month'))."/'>
 | |
|             <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&type=port_mac_acc_total&sort='.$vars['sort'].'&stat='.$vars['graph'].'&from='.$config['time']['month'].'&to='.$config['time']['now']."&width=150&height=50' />
 | |
|             </a>
 | |
|             </div>
 | |
|             <div style='margin: 0px 10px 5px 0px; padding:5px; background: #e5e5e5;'>
 | |
|             <span class=device-head>Year</span><br />
 | |
|             <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => $vars['sort'], 'period' => 'year'))."/'>
 | |
|             <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&type=port_mac_acc_total&sort='.$vars['sort'].'&stat='.$vars['graph'].'&from='.$config['time']['year'].'&to='.$config['time']['now']."&width=150&height=50' />
 | |
|             </a>
 | |
|             </div>
 | |
|        </div>
 | |
|        <div style='float: left;'>
 | |
|          <img src='graph.php?id=".$port['port_id'].'&type=port_mac_acc_total&sort='.$vars['sort'].'&stat='.$vars['graph']."&from=$from&to=".$config['time']['now']."&width=745&height=300' />
 | |
|        </div>
 | |
|        <div style=' margin:0px; float: left;';>
 | |
|             <div style='margin: 0px 0px 5px 10px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Traffic</span><br />
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => 'bits', sort => $vars['sort'], 'period' => $vars['period']))."'>
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat=bits&type=port_mac_acc_total&sort='.$vars['sort']."&from=$from&to=".$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|            <div style='margin: 0px 0px 5px 10px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Packets</span><br />
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => 'pkts', sort => $vars['sort'], 'period' => $vars['period']))."/'>
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat=pkts&type=port_mac_acc_total&sort='.$vars['sort']."&from=$from&to=".$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|            <div style='margin: 0px 0px 5px 10px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Top Input</span><br />
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => 'in', 'period' => $vars['period']))."'>
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat='.$vars['graph']."&type=port_mac_acc_total&sort=in&from=$from&to=".$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|            <div style='margin: 0px 0px 5px 10px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Top Output</span><br />
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => 'out', 'period' => $vars['period']))."'>
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat='.$vars['graph']."&type=port_mac_acc_total&sort=out&from=$from&to=".$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|            <div style='margin: 0px 0px 5px 10px; padding:5px; background: #e5e5e5;'>
 | |
|            <span class=device-head>Top Aggregate</span><br />
 | |
|            <a href='".generate_url($link_array, array('view' => 'macaccounting', 'subview' => 'top10', 'graph' => $vars['graph'], sort => 'both', 'period' => $vars['period']))."'>
 | |
|              <img style='border: #5e5e5e 2px;' valign=middle src='graph.php?id=".$port['port_id'].'&stat='.$vars['graph']."&type=port_mac_acc_total&sort=both&from=$from&to=".$config['time']['now']."&width=150&height=50' />
 | |
|            </a>
 | |
|            </div>
 | |
|        </div>
 | |
|      </div>
 | |
| ";
 | |
|     unset($query);
 | |
| }
 | |
| else {
 | |
|     $query = 'SELECT *, (M.cipMacHCSwitchedBytes_input_rate + M.cipMacHCSwitchedBytes_output_rate) as bps FROM `mac_accounting` AS M,
 | |
|                        `ports` AS I, `devices` AS D WHERE M.port_id = ? AND I.port_id = M.port_id AND I.device_id = D.device_id ORDER BY bps DESC';
 | |
|     $param = array($port['port_id']);
 | |
| 
 | |
|     foreach (dbFetchRows($query, $param) as $acc) {
 | |
|         if (!is_integer($i / 2)) {
 | |
|             $row_colour = $list_colour_a;
 | |
|         }
 | |
|         else {
 | |
|             $row_colour = $list_colour_b;
 | |
|         }
 | |
| 
 | |
|         $addy = dbFetchRow('SELECT * FROM ipv4_mac where mac_address = ?', array($acc['mac']));
 | |
|         // $name = gethostbyaddr($addy['ipv4_address']); FIXME - Maybe some caching for this?
 | |
|         $arp_host = dbFetchRow('SELECT * FROM ipv4_addresses AS A, ports AS I, devices AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', array($addy['ipv4_address']));
 | |
|         if ($arp_host) {
 | |
|             $arp_name  = generate_device_link($arp_host);
 | |
|             $arp_name .= ' '.generate_port_link($arp_host);
 | |
|         }
 | |
|         else {
 | |
|             unset($arp_if);
 | |
|         }
 | |
| 
 | |
|         if ($name == $addy['ipv4_address']) {
 | |
|             unset($name);
 | |
|         }
 | |
| 
 | |
|         if (dbFetchCell('SELECT count(*) FROM bgpPeers WHERE device_id = ? AND bgpPeerIdentifier = ?', array($acc['device_id'], $addy['ipv4_address']))) {
 | |
|             $peer_info = dbFetchRow('SELECT * FROM bgpPeers WHERE device_id = ? AND bgpPeerIdentifier = ?', array($acc['device_id'], $addy['ipv4_address']));
 | |
|         }
 | |
|         else {
 | |
|             unset($peer_info);
 | |
|         }
 | |
| 
 | |
|         if ($peer_info) {
 | |
|             $asn    = 'AS'.$peer_info['bgpPeerRemoteAs'];
 | |
|             $astext = $peer_info['astext'];
 | |
|         }
 | |
|         else {
 | |
|             unset($as);
 | |
|             unset($astext);
 | |
|             unset($asn);
 | |
|         }
 | |
| 
 | |
|         if ($vars['graph']) {
 | |
|             $graph_type = 'macaccounting_'.$vars['graph'];
 | |
|         }
 | |
|         else {
 | |
|             $graph_type = 'macaccounting_bits';
 | |
|         }
 | |
| 
 | |
|         if ($vars['subview'] == 'minigraphs') {
 | |
|             if (!$asn) {
 | |
|                 $asn = 'No Session';
 | |
|             }
 | |
| 
 | |
|             echo "<div style='display: block; padding: 3px; margin: 3px; min-width: 221px; max-width:221px; min-height:90px; max-height:90px; text-align: center; float: left; background-color: #e5e5e5;'>
 | |
|       ".$addy['ipv4_address'].' - '.$asn."
 | |
|           <a href='#' onmouseover=\"return overlib('\
 | |
|      <div style=\'font-size: 16px; padding:5px; font-weight: bold; color: #555555;\'>".$name.' - '.$addy['ipv4_address'].' - '.$asn."</div>\
 | |
|      <img src=\'graph.php?id=".$acc['ma_id']."&type=$graph_type&from=".$config['time']['twoday'].'&to='.$config['time']['now']."&width=450&height=150\'>\
 | |
|      ', CENTER, LEFT, FGCOLOR, '#e5e5e5', BGCOLOR, '#e5e5e5', WIDTH, 400, HEIGHT, 150);\" onmouseout=\"return nd();\" >
 | |
|           <img src='graph.php?id=".$acc['ma_id']."&type=$graph_type&from=".$config['time']['twoday'].'&to='.$config['time']['now']."&width=213&height=45'></a>
 | |
| 
 | |
|           <span style='font-size: 10px;'>".$name.'</span>
 | |
|          </div>';
 | |
|         }
 | |
|         else {
 | |
|             echo "<div style='background-color: $row_colour; padding: 0px;'>";
 | |
| 
 | |
|             echo ('
 | |
|       <table>
 | |
|         <tr>
 | |
|           <td class=list-large width=200>'.mac_clean_to_readable($acc['mac']).'</td>
 | |
|           <td class=list-large width=200>'.$addy['ipv4_address'].'</td>
 | |
|           <td class=list-large width=500>'.$name.' '.$arp_name.'</td>
 | |
|           <td class=list-large width=100>'.formatRates(($acc['cipMacHCSwitchedBytes_input_rate'] / 8)).'</td>
 | |
|           <td class=list-large width=100>'.formatRates(($acc['cipMacHCSwitchedBytes_output_rate'] / 8)).'</td>
 | |
|         </tr>
 | |
|       </table>
 | |
|     ');
 | |
| 
 | |
|             $peer_info['astext'];
 | |
| 
 | |
|             $graph_array['type']   = $graph_type;
 | |
|             $graph_array['id']     = $acc['ma_id'];
 | |
|             $graph_array['height'] = '100';
 | |
|             $graph_array['width']  = '216';
 | |
|             $graph_array['to']     = $config['time']['now'];
 | |
|             echo '<tr bgcolor="'.$bg_colour.'"'.($bg_image ? ' background="'.$bg_image.'"' : '').'"><td colspan="7">';
 | |
| 
 | |
|             include 'includes/print-graphrow.inc.php';
 | |
| 
 | |
|             echo '</td></tr>';
 | |
| 
 | |
|             $i++;
 | |
|         }//end if
 | |
|     }//end foreach
 | |
| }//end if
 |