Tony Murray 8c639aa5a4 PSR2 Cleanup: /html edition
Travis tests for code conformance. Ignore warnings for now.
Fixed all errors, left most warnings.
2016-08-18 21:29:30 -05:00

134 lines
5.0 KiB
PHP

<?php
/*
* LibreNMS module to display Cisco Class-Based QoS Details
*
* Copyright (c) 2015 Aaron Daniels <aaron@daniels.id.au>
*
* 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. Please see LICENSE.txt at the top level of
* the source code distribution for details.
*/
function find_child($components, $parent, $level)
{
global $vars;
foreach ($components as $id => $array) {
if ($array['qos-type'] == 3) {
continue;
}
if (($array['parent'] == $components[$parent]['sp-obj']) && ($array['sp-id'] == $components[$parent]['sp-id'])) {
echo "<ul>";
echo "<li>";
if ($array['qos-type'] == 1) {
// Its a policy, we need to make it a link.
$linkvars = array_merge($vars, array('policy' => $id));
unset($linkvars['class']);
echo('<a href="' . generate_url($linkvars) . '">' . $array['label'] . '</a>');
} elseif ($array['qos-type'] == 2) {
// Its a class, we need to make it a link.
echo('<a href="' . generate_url($vars, array('policy' => $parent,'class' => $id)) . '">' . $array['label'] . '</a>');
} else {
// Unknown, no link
echo $array['label'];
}
if (isset($array['match'])) {
echo ' ('.$array['match'].')';
}
find_child($components, $id, $level+1);
echo "</li>";
echo "</ul>";
}
}
}
if (!isset($vars['policy'])) {
// not set, find the first parent and use it.
foreach ($components as $id => $array) {
if (($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($array['parent'] == 0)) {
// Found the first policy
$vars['policy'] = $id;
continue;
}
}
}
echo "\n\n";
// Display the ingress policy at the top of the page.
echo "<div class='col-md-6'><ul class='mktree' id='ingress'>";
echo '<div><strong><i class="fa fa-sign-in"></i>&nbsp;Ingress Policy:</strong></div>';
$found = false;
foreach ($components as $id => $array) {
if (($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($array['direction'] == 1) && ($array['parent'] == 0)) {
echo "<li class='liOpen'>";
echo('<a href="' . generate_url($vars, array('policy' => $id)) . '">' . $array['label'] . '</a>');
find_child($components, $id, 1);
echo "</li>";
$found = true;
}
}
if (!$found) {
// No Ingress policies
echo '<div><i>No Policies</i></div>';
}
echo '</ul></div>';
// Display the egress policy at the top of the page.
echo "<div class='col-md-6'><ul class='mktree' id='egress'>";
echo '<div><strong><i class="fa fa-sign-out"></i>&nbsp;Egress Policy:</strong></div>';
$found = false;
foreach ($components as $id => $array) {
if (($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($array['direction'] == 2) && ($array['parent'] == 0)) {
echo "<li class='liOpen'>";
echo('<a href="' . generate_url($vars, array('policy' => $id)) . '">' . $array['label'] . '</a>');
find_child($components, $id, 1);
echo "</li>";
$found = true;
}
}
if (!$found) {
// No Egress policies
echo '<div><i>No Policies</i></div>';
}
echo "</ul></div>\n\n";
// Let's make sure the policy we are trying to access actually exists.
foreach ($components as $id => $array) {
if (($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($id == $vars['policy'])) {
// The policy exists.
echo "<div class='col-md-12'>&nbsp;</div>\n\n";
// Display each graph row.
echo "<div class='col-md-12'>";
echo "<div class='graphhead'>Traffic by CBQoS Class - ".$components[$vars['policy']]['label']."</div>";
$graph_array['policy'] = $vars['policy'];
if (isset($vars['class'])) {
$graph_array['class'] = $vars['class'];
}
$graph_type = 'port_cbqos_traffic';
include 'includes/print-interface-graphs.inc.php';
echo "<div class='graphhead'>QoS Drops by CBQoS Class - ".$components[$vars['policy']]['label']."</div>";
$graph_array['policy'] = $vars['policy'];
if (isset($vars['class'])) {
$graph_array['class'] = $vars['class'];
}
$graph_type = 'port_cbqos_bufferdrops';
include 'includes/print-interface-graphs.inc.php';
echo "<div class='graphhead'>Buffer Drops by CBQoS Class - ".$components[$vars['policy']]['label']."</div>";
$graph_array['policy'] = $vars['policy'];
if (isset($vars['class'])) {
$graph_array['class'] = $vars['class'];
}
$graph_type = 'port_cbqos_qosdrops';
include 'includes/print-interface-graphs.inc.php';
echo "</div>\n\n";
}
}