mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge branch 'master' into config_diff
This commit is contained in:
@@ -4,5 +4,6 @@ if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
|
||||
$_SESSION['screen_width'] = $_REQUEST['width'];
|
||||
$_SESSION['screen_height'] = $_REQUEST['height'];
|
||||
}
|
||||
header('Content-type: text/plain');
|
||||
echo $_SESSION['screen_width'];
|
||||
echo $_SESSION['screen_height'];
|
||||
|
||||
62
html/includes/graphs/device/cisco-otv-mac.inc.php
Normal file
62
html/includes/graphs/device/cisco-otv-mac.inc.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?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.
|
||||
*/
|
||||
|
||||
require_once "../includes/component.php";
|
||||
$component = new component();
|
||||
$options['filter']['type'] = array('=','Cisco-OTV');
|
||||
$components = $component->getComponents($device['device_id'],$options);
|
||||
|
||||
// We only care about our device id.
|
||||
$components = $components[$device['device_id']];
|
||||
|
||||
include "includes/graphs/common.inc.php";
|
||||
$rrd_options .= " -l 0 -E ";
|
||||
$rrd_options .= " COMMENT:'MAC Addresses Now Min Max\\n'";
|
||||
$rrd_additions = "";
|
||||
|
||||
$count = 0;
|
||||
foreach ($components as $id => $array) {
|
||||
if ($array['otvtype'] == 'endpoint') {
|
||||
$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/'.safename("cisco-otv-".$array['endpoint']."-mac.rrd");
|
||||
|
||||
if (file_exists($rrd_filename)) {
|
||||
// Stack the area on the second and subsequent DS's
|
||||
$stack = "";
|
||||
if ($count != 0) {
|
||||
$stack = ":STACK ";
|
||||
}
|
||||
|
||||
// Grab a color from the array.
|
||||
if ( isset($config['graph_colours']['mixed'][$count]) ) {
|
||||
$color = $config['graph_colours']['mixed'][$count];
|
||||
}
|
||||
else {
|
||||
$color = $config['graph_colours']['oranges'][$count-7];
|
||||
}
|
||||
|
||||
$rrd_additions .= " DEF:DS" . $count . "=" . $rrd_filename . ":count:AVERAGE ";
|
||||
$rrd_additions .= " AREA:DS" . $count . "#" . $color . ":'" . str_pad(substr($components[$id]['endpoint'],0,15),15) . "'" . $stack;
|
||||
$rrd_additions .= " GPRINT:DS" . $count . ":LAST:%4.0lf%s ";
|
||||
$rrd_additions .= " GPRINT:DS" . $count . ":MIN:%4.0lf%s ";
|
||||
$rrd_additions .= " GPRINT:DS" . $count . ":MAX:%4.0lf%s\\\l ";
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($rrd_additions == "") {
|
||||
// We didn't add any data points.
|
||||
}
|
||||
else {
|
||||
$rrd_options .= $rrd_additions;
|
||||
}
|
||||
62
html/includes/graphs/device/cisco-otv-vlan.inc.php
Normal file
62
html/includes/graphs/device/cisco-otv-vlan.inc.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?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.
|
||||
*/
|
||||
|
||||
require_once "../includes/component.php";
|
||||
$component = new component();
|
||||
$options['filter']['type'] = array('=','Cisco-OTV');
|
||||
$components = $component->getComponents($device['device_id'],$options);
|
||||
|
||||
// We only care about our device id.
|
||||
$components = $components[$device['device_id']];
|
||||
|
||||
include "includes/graphs/common.inc.php";
|
||||
$rrd_options .= " -l 0 -E ";
|
||||
$rrd_options .= " COMMENT:'VLANs Now Min Max\\n'";
|
||||
$rrd_additions = "";
|
||||
|
||||
$count = 0;
|
||||
foreach ($components as $id => $array) {
|
||||
if ($array['otvtype'] == 'overlay') {
|
||||
$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/'.safename("cisco-otv-".$array['label']."-vlan.rrd");
|
||||
|
||||
if (file_exists($rrd_filename)) {
|
||||
// Stack the area on the second and subsequent DS's
|
||||
$stack = "";
|
||||
if ($count != 0) {
|
||||
$stack = ":STACK ";
|
||||
}
|
||||
|
||||
// Grab a color from the array.
|
||||
if ( isset($config['graph_colours']['mixed'][$count]) ) {
|
||||
$color = $config['graph_colours']['mixed'][$count];
|
||||
}
|
||||
else {
|
||||
$color = $config['graph_colours']['oranges'][$count-7];
|
||||
}
|
||||
|
||||
$rrd_additions .= " DEF:DS" . $count . "=" . $rrd_filename . ":count:AVERAGE ";
|
||||
$rrd_additions .= " AREA:DS" . $count . "#" . $color . ":'" . str_pad(substr($components[$id]['label'],0,15),15) . "'" . $stack;
|
||||
$rrd_additions .= " GPRINT:DS" . $count . ":LAST:%4.0lf%s ";
|
||||
$rrd_additions .= " GPRINT:DS" . $count . ":MIN:%4.0lf%s ";
|
||||
$rrd_additions .= " GPRINT:DS" . $count . ":MAX:%4.0lf%s\\\l ";
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($rrd_additions == "") {
|
||||
// We didn't add any data points.
|
||||
}
|
||||
else {
|
||||
$rrd_options .= $rrd_additions;
|
||||
}
|
||||
@@ -420,7 +420,13 @@ $routing_count['ospf'] = dbFetchCell("SELECT COUNT(ospf_instance_id) FROM `ospf_
|
||||
$routing_count['cef'] = dbFetchCell("SELECT COUNT(cef_switching_id) from `cef_switching`");
|
||||
$routing_count['vrf'] = dbFetchCell("SELECT COUNT(vrf_id) from `vrfs`");
|
||||
|
||||
if ($_SESSION['userlevel'] >= '5' && ($routing_count['bgp']+$routing_count['ospf']+$routing_count['cef']+$routing_count['vrf']) > "0") {
|
||||
require_once "../includes/component.php";
|
||||
$component = new component();
|
||||
$options['type'] = 'Cisco-OTV';
|
||||
$otv = $component->getComponents(null,$options);
|
||||
$routing_count['cisco-otv'] = count($otv);
|
||||
|
||||
if ($_SESSION['userlevel'] >= '5' && ($routing_count['bgp']+$routing_count['ospf']+$routing_count['cef']+$routing_count['vrf']+$routing_count['cisco-otv']) > "0") {
|
||||
|
||||
?>
|
||||
<li class="dropdown">
|
||||
@@ -443,6 +449,16 @@ if ($_SESSION['userlevel'] >= '5' && ($routing_count['bgp']+$routing_count['ospf
|
||||
$separator++;
|
||||
}
|
||||
|
||||
// Cisco OTV Links
|
||||
if ($_SESSION['userlevel'] >= '5' && $routing_count['cisco-otv']) {
|
||||
if ($separator) {
|
||||
echo(' <li role="presentation" class="divider"></li>');
|
||||
$separator = 0;
|
||||
}
|
||||
echo('<li><a href="routing/protocol=cisco-otv/"><i class="fa fa-exchange fa-fw fa-lg"></i> Cisco OTV </a></li>');
|
||||
$separator++;
|
||||
}
|
||||
|
||||
// BGP Sessions
|
||||
if ($_SESSION['userlevel'] >= '5' && $routing_count['bgp']) {
|
||||
if ($separator) {
|
||||
|
||||
@@ -223,3 +223,24 @@ $(document).on("click", '.collapse-neighbors', function(event)
|
||||
list.toggle();
|
||||
continued.toggle();
|
||||
});
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
var lines = 'on';
|
||||
$("#linenumbers").button().click(function() {
|
||||
if (lines == 'on') {
|
||||
$($('.config').find('ol').get().reverse()).each(function(){
|
||||
$(this).replaceWith($('<ul>'+$(this).html()+'</ul>'))
|
||||
lines = 'off';
|
||||
$('#linenumbers').val('Show line numbers');
|
||||
});
|
||||
}
|
||||
else {
|
||||
$($('.config').find('ul').get().reverse()).each(function(){
|
||||
$(this).replaceWith($('<ol>'+$(this).html()+'</ol>'));
|
||||
lines = 'on';
|
||||
$('#linenumbers').val('Hide line numbers');
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -210,6 +210,16 @@ if (device_permitted($vars['device']) || $check_device == $vars['device']) {
|
||||
$routing_tabs[] = 'vrf';
|
||||
}
|
||||
|
||||
require_once "../includes/component.php";
|
||||
$component = new component();
|
||||
$options['type'] = 'Cisco-OTV';
|
||||
$options['filter']['device_id'] = array('=',$device['device_id']);
|
||||
$otv = $component->getComponents(null,$options);
|
||||
$device_routing_count['cisco-otv'] = count($otv);
|
||||
if ($device_routing_count['cisco-otv'] > 0) {
|
||||
$routing_tabs[] = 'cisco-otv';
|
||||
}
|
||||
|
||||
if (is_array($routing_tabs)) {
|
||||
echo '<li class="'.$select['routing'].'">
|
||||
<a href="'.generate_device_url($device, array('tab' => 'routing')).'">
|
||||
@@ -388,19 +398,25 @@ if (device_permitted($vars['device']) || $check_device == $vars['device']) {
|
||||
}
|
||||
|
||||
|
||||
echo '<li style="float: right;"><a href="https://'.$device['hostname'].'"><img src="images/16/http.png" alt="https" title="Launch browser to https://'.$device['hostname'].'" border="0" width="16" height="16" target="_blank"></a></li>
|
||||
<li style="float: right;"><a href="ssh://'.$device['hostname'].'"><img src="images/16/ssh.png" alt="ssh" title="SSH to '.$device['hostname'].'" border="0" width="16" height="16"></a></li>
|
||||
<li style="float: right;"><a href="telnet://'.$device['hostname'].'"><img src="images/16/telnet.png" alt="telnet" title="Telnet to '.$device['hostname'].'" border="0" width="16" height="16"></a></li>';
|
||||
|
||||
if (is_admin()) {
|
||||
echo '<li class="'.$select['edit'].'" style="float: right;">
|
||||
echo '<div class="dropdown pull-right">
|
||||
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown"><i class="fa fa-cog"></i>
|
||||
<span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="https://'.$device['hostname'].'"><img src="images/16/http.png" alt="https" title="Launch browser to https://'.$device['hostname'].'" border="0" width="16" height="16" target="_blank"> Launch</a></li>
|
||||
<li><a href="ssh://'.$device['hostname'].'"><img src="images/16/ssh.png" alt="ssh" title="SSH to '.$device['hostname'].'" border="0" width="16" height="16"> SSH</a></li>
|
||||
<li><a href="telnet://'.$device['hostname'].'"><img src="images/16/telnet.png" alt="telnet" title="Telnet to '.$device['hostname'].'" border="0" width="16" height="16"> Telnet</a></li>';
|
||||
if (is_admin()) {
|
||||
echo '<li>
|
||||
<a href="'.generate_device_url($device, array('tab' => 'edit')).'">
|
||||
<img src="images/16/wrench.png" align="absmiddle" border="0" />
|
||||
Edit
|
||||
</a>
|
||||
</li>';
|
||||
}
|
||||
|
||||
}
|
||||
echo '</ul>
|
||||
</div>';
|
||||
echo '</ul>';
|
||||
|
||||
}//end if
|
||||
|
||||
if (device_permitted($device['device_id']) || $check_device == $vars['device']) {
|
||||
|
||||
@@ -20,6 +20,7 @@ $type_text['bgp'] = 'BGP';
|
||||
$type_text['cef'] = 'CEF';
|
||||
$type_text['ospf'] = 'OSPF';
|
||||
$type_text['vrf'] = 'VRFs';
|
||||
$type_text['cisco-otv'] = 'OTV';
|
||||
|
||||
print_optionbar_start();
|
||||
|
||||
|
||||
94
html/pages/device/routing/cisco-otv.inc.php
Normal file
94
html/pages/device/routing/cisco-otv.inc.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
require_once "../includes/component.php";
|
||||
$component = new component();
|
||||
$options = array();
|
||||
$options['filter']['ignore'] = array('=',0);
|
||||
$options['type'] = 'Cisco-OTV';
|
||||
$components = $component->getComponents($device['device_id'],$options);
|
||||
$components = $components[$device['device_id']];
|
||||
|
||||
global $config;
|
||||
?>
|
||||
<div class="panel panel-default" id="overlays">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Overlay's & Adjacencies</h3>
|
||||
</div>
|
||||
<div class="panel list-group">
|
||||
<?php
|
||||
// Loop over each component, pulling out the Overlays.
|
||||
foreach ($components as $oid => $overlay) {
|
||||
if ($overlay['otvtype'] == 'overlay') {
|
||||
if ($overlay['status'] == 1) {
|
||||
$overlay_status = "<span class='green pull-right'>Normal</span>";
|
||||
$gli = "";
|
||||
}
|
||||
else {
|
||||
$overlay_status = "<span class='pull-right'>".$overlay['error']." - <span class='red'>Alert</span></span>";
|
||||
$gli = "list-group-item-danger";
|
||||
}
|
||||
?>
|
||||
<a class="list-group-item <?=$gli?>" data-toggle="collapse" data-target="#<?=$overlay['index']?>" data-parent="#overlays"><?=$overlay['label']?> - <?=$overlay['transport']?> <?=$overlay_status?></a>
|
||||
<div id="<?=$overlay['index']?>" class="sublinks collapse">
|
||||
<?php
|
||||
foreach ($components as $aid => $adjacency) {
|
||||
if (($adjacency['otvtype'] == 'adjacency') && ($adjacency['index'] == $overlay['index'])) {
|
||||
if ($adjacency['status'] == 1) {
|
||||
$adj_status = "<span class='green pull-right'>Normal</span>";
|
||||
$gli = "";
|
||||
}
|
||||
else {
|
||||
$adj_status = "<span class='pull-right'>".$adjacency['error']." - <span class='red'>Alert</span></span>";
|
||||
$gli = "list-group-item-danger";
|
||||
}
|
||||
?>
|
||||
<a class="list-group-item <?=$gli?> small"><span class="glyphicon glyphicon-chevron-right"></span> <?=$adjacency['label']?> - <?=$adjacency['endpoint']?> <?=$adj_status?></a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default" id="vlanperoverlay">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">AED Enabled VLAN's</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php
|
||||
|
||||
$graph_array = array();
|
||||
$graph_array['device'] = $device['device_id'];
|
||||
$graph_array['height'] = '100';
|
||||
$graph_array['width'] = '215';
|
||||
$graph_array['to'] = $config['time']['now'];
|
||||
$graph_array['type'] = 'device_cisco-otv-vlan';
|
||||
require 'includes/print-graphrow.inc.php';
|
||||
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default" id="macperendpoint">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">MAC Addresses</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php
|
||||
|
||||
$graph_array = array();
|
||||
$graph_array['device'] = $device['device_id'];
|
||||
$graph_array['height'] = '100';
|
||||
$graph_array['width'] = '215';
|
||||
$graph_array['to'] = $config['time']['now'];
|
||||
$graph_array['type'] = 'device_cisco-otv-mac';
|
||||
require 'includes/print-graphrow.inc.php';
|
||||
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -241,7 +241,10 @@ if (is_admin()) {
|
||||
// $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
|
||||
$geshi->set_overall_style('color: black;');
|
||||
// $geshi->set_line_style('color: #999999');
|
||||
echo '<div class="config">';
|
||||
echo '<input id="linenumbers" class="btn btn-primary" type="submit" value="Hide line numbers"/>';
|
||||
echo $geshi->parse_code();
|
||||
echo '</div>';
|
||||
}
|
||||
}//end if
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ $type_text['bgp'] = 'BGP';
|
||||
$type_text['cef'] = 'CEF';
|
||||
$type_text['ospf'] = 'OSPF';
|
||||
$type_text['vrf'] = 'VRFs';
|
||||
$type_text['cisco-otv'] = 'OTV';
|
||||
|
||||
print_optionbar_start();
|
||||
|
||||
@@ -53,6 +54,7 @@ switch ($vars['protocol']) {
|
||||
case 'vrf':
|
||||
case 'cef':
|
||||
case 'ospf':
|
||||
case 'cisco-otv':
|
||||
include 'pages/routing/'.$vars['protocol'].'.inc.php';
|
||||
break;
|
||||
|
||||
|
||||
58
html/pages/routing/cisco-otv.inc.php
Normal file
58
html/pages/routing/cisco-otv.inc.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
require_once "../includes/component.php";
|
||||
$COMPONENT = new component();
|
||||
$options = array();
|
||||
$options['filter']['ignore'] = array('=',0);
|
||||
$options['type'] = 'Cisco-OTV';
|
||||
$COMPONENTS = $COMPONENT->getComponents(null,$options);
|
||||
|
||||
foreach ($COMPONENTS as $DEVICE_ID => $COMP) {
|
||||
$LINK = generate_url(array('page' => 'device', 'device' => $DEVICE_ID, 'tab' => 'routing', 'proto' => 'cisco-otv'));
|
||||
?>
|
||||
<div class="panel panel-default" id="overlays-<?=$DEVICE_ID?>">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><a href="<?=$LINK?>"><?=gethostbyid($DEVICE_ID)?> - Overlay's & Adjacencies</a></h3>
|
||||
</div>
|
||||
<div class="panel list-group">
|
||||
<?php
|
||||
// Loop over each component, pulling out the Overlays.
|
||||
foreach ($COMP as $OID => $OVERLAY) {
|
||||
if ($OVERLAY['otvtype'] == 'overlay') {
|
||||
if ($OVERLAY['status'] == 1) {
|
||||
$OVERLAY_STATUS = "<span class='green pull-right'>Normal</span>";
|
||||
$GLI = "";
|
||||
}
|
||||
else {
|
||||
$OVERLAY_STATUS = "<span class='pull-right'>".$OVERLAY['error']." - <span class='red'>Alert</span></span>";
|
||||
$GLI = "list-group-item-danger";
|
||||
}
|
||||
?>
|
||||
<a class="list-group-item <?=$GLI?>" data-toggle="collapse" data-target="#<?=$OVERLAY['index']?>" data-parent="#overlays-<?=$DEVICE_ID?>"><?=$OVERLAY['label']?> - <?=$OVERLAY['transport']?> <?=$OVERLAY_STATUS?></a>
|
||||
<div id="<?=$OVERLAY['index']?>" class="sublinks collapse">
|
||||
<?php
|
||||
foreach ($COMP as $AID => $ADJACENCY) {
|
||||
if (($ADJACENCY['otvtype'] == 'adjacency') && ($ADJACENCY['index'] == $OVERLAY['index'])) {
|
||||
if ($ADJACENCY['status'] == 1) {
|
||||
$ADJ_STATUS = "<span class='green pull-right'>Normal</span>";
|
||||
$GLI = "";
|
||||
}
|
||||
else {
|
||||
$ADJ_STATUS = "<span class='pull-right'>".$ADJACENCY['error']." - <span class='red'>Alert</span></span>";
|
||||
$GLI = "list-group-item-danger";
|
||||
}
|
||||
?>
|
||||
<a class="list-group-item <?=$GLI?> small"><span class="glyphicon glyphicon-chevron-right"></span> <?=$ADJACENCY['label']?> - <?=$ADJACENCY['endpoint']?> <?=$ADJ_STATUS?></a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
@@ -244,6 +244,10 @@ $mail_conf = array(
|
||||
'descr' => 'From name',
|
||||
'type' => 'text',
|
||||
),
|
||||
array('name' => 'email_from',
|
||||
'descr' => 'From email address',
|
||||
'type' => 'text',
|
||||
),
|
||||
array('name' => 'email_sendmail_path',
|
||||
'descr' => 'Sendmail path',
|
||||
'type' => 'text',
|
||||
|
||||
Reference in New Issue
Block a user