Files
Tony MurrayandNeil Lathwood eeb3d58f5b Improved Logging and Debugging (#8870)
Use Log facility when Laravel is booted.
Update init.php so we can easily boot Laravel for CLI scripts. (and just Eloquent, but that may go away)
Move all debug setup into set_debug() function and use that across all scripts.
Log Laravel database queries.
Send debug output to librenms log file when enabling debug in the webui.
Allow for colorized Log CLI output. (currently will leave % tags in log file output)

** Needs testing and perhaps tweaking still.

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-07-13 23:08:00 +01:00

213 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'].'&amp;stat='.$vars['graph'].'&amp;type=port_mac_acc_total&amp;sort='.$vars['sort'].'&amp;from='.$config['time']['day'].'&amp;to='.$config['time']['now']."&amp;width=150&amp;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'].'&amp;stat='.$vars['graph'].'&amp;type=port_mac_acc_total&amp;sort='.$vars['sort'].'&amp;from='.$config['time']['twoday'].'&amp;to='.$config['time']['now']."&amp;width=150&amp;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'].'&amp;type=port_mac_acc_total&amp;sort='.$vars['sort'].'&amp;stat='.$vars['graph'].'&amp;from='.$config['time']['week'].'&amp;to='.$config['time']['now']."&amp;width=150&amp;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'].'&amp;type=port_mac_acc_total&amp;sort='.$vars['sort'].'&amp;stat='.$vars['graph'].'&amp;from='.$config['time']['month'].'&amp;to='.$config['time']['now']."&amp;width=150&amp;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'].'&amp;type=port_mac_acc_total&amp;sort='.$vars['sort'].'&amp;stat='.$vars['graph'].'&amp;from='.$config['time']['year'].'&amp;to='.$config['time']['now']."&amp;width=150&amp;height=50' />
</a>
</div>
</div>
<div style='float: left;'>
<img src='graph.php?id=".$port['port_id'].'&amp;type=port_mac_acc_total&amp;sort='.$vars['sort'].'&amp;stat='.$vars['graph']."&amp;from=$from&amp;to=".$config['time']['now']."&amp;width=745&amp;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'].'&amp;stat=bits&amp;type=port_mac_acc_total&amp;sort='.$vars['sort']."&amp;from=$from&amp;to=".$config['time']['now']."&amp;width=150&amp;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'].'&amp;stat=pkts&amp;type=port_mac_acc_total&amp;sort='.$vars['sort']."&amp;from=$from&amp;to=".$config['time']['now']."&amp;width=150&amp;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'].'&amp;stat='.$vars['graph']."&amp;type=port_mac_acc_total&amp;sort=in&amp;from=$from&amp;to=".$config['time']['now']."&amp;width=150&amp;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'].'&amp;stat='.$vars['graph']."&amp;type=port_mac_acc_total&amp;sort=out&amp;from=$from&amp;to=".$config['time']['now']."&amp;width=150&amp;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'].'&amp;stat='.$vars['graph']."&amp;type=port_mac_acc_total&amp;sort=both&amp;from=$from&amp;to=".$config['time']['now']."&amp;width=150&amp;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 = $config['list_colour']['even'];
} else {
$row_colour = $config['list_colour']['odd'];
}
$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']));
$arp_host = cleanPort($arp_host);
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']."&amp;type=$graph_type&amp;from=".$config['time']['twoday'].'&amp;to='.$config['time']['now']."&amp;width=450&amp;height=150\'>\
', CENTER, LEFT, FGCOLOR, '#e5e5e5', BGCOLOR, '#e5e5e5', WIDTH, 400, HEIGHT, 150);\" onmouseout=\"return nd();\" >
<img src='graph.php?id=".$acc['ma_id']."&amp;type=$graph_type&amp;from=".$config['time']['twoday'].'&amp;to='.$config['time']['now']."&amp;width=213&amp;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