Add old linkusage page (at the request of users)

This commit is contained in:
Nicolas Debrigode 2018-01-02 16:37:42 +01:00
parent b57ba64324
commit 902d6263d6
5 changed files with 244 additions and 4 deletions

View File

@ -277,6 +277,7 @@ function menu($selected_links) {
$active_searchas = $dpagename == "history" ? 'class="active"' : ""; $active_searchas = $dpagename == "history" ? 'class="active"' : "";
$active_searchasset = $dpagename == "asset" ? 'class="active"' : ""; $active_searchasset = $dpagename == "asset" ? 'class="active"' : "";
$active_ix = $dpagename == "ix" ? 'class="active"' : ""; $active_ix = $dpagename == "ix" ? 'class="active"' : "";
$active_linkusage = $dpagename == "linkusage" ? 'class="active"' : "";
$return = '<header class="main-header">'; $return = '<header class="main-header">';
$return .= '<nav class="navbar navbar-static-top">'; $return .= '<nav class="navbar navbar-static-top">';
@ -308,6 +309,20 @@ function menu($selected_links) {
$return .='<li '.$active_searchas.'><a href="history.php">View AS</a></li>'; $return .='<li '.$active_searchas.'><a href="history.php">View AS</a></li>';
$return .='<li '.$active_searchasset.'><a href="asset.php">View AS-SET</a></li>'; $return .='<li '.$active_searchasset.'><a href="asset.php">View AS-SET</a></li>';
$return .='<li '.$active_ix.'><a href="ix.php">View IX Stats</a></li>'; $return .='<li '.$active_ix.'><a href="ix.php">View IX Stats</a></li>';
//$return .='<li '.$active_linkusage.'><a href="linkusage.php">Link Usage</a></li>';
if ( count($top_intervals) < 2 ) {
$return .= '<li '.$active_linkusage.'><a href="linkusage.php">Link Usage</a></li>';
} else {
$return .= '<li class="dropdown '.$active_linkusage.'">';
$return .= '<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Link Usage <span class="caret"></span></a>';
$return .= '<ul class="dropdown-menu" role="menu">';
foreach ($top_intervals as $interval) {
$return .= '<li><a href="linkusage.php?numhours=' . $interval['hours'] . '">Link Usage - ' . $interval['label'] . '</a></li>';
}
$return .= '</ul>';
$return .= '</li>';
}
$return .='</ul>'; $return .='</ul>';
@ -379,4 +394,17 @@ function content_header($titre, $small) {
return $header; return $header;
} }
function box_linkusage ($title, $img) {
$return = '<div class="box box-primary">';
$return .= '<div class="box-header with-border">';
$return .= '<i class="fa fa-bar-chart-o"></i>';
$return .= '<h3 class="box-title">'.$title.'</h3>';
$return .= '</div>';
$return .= '<div class="box-body">';
$return .= '<center>'.$img.'</center>';
$return .= '</div>';
$return .= '</div>';
return $return;
}
?> ?>

View File

@ -20,13 +20,13 @@ if ( isset($_GET['as']) ) {
$rrdfile = getRRDFileForAS($as, $peerusage); $rrdfile = getRRDFileForAS($as, $peerusage);
$daily_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 24 * 3600, time(), $peerusage, 'daily graph', 'detailgraph', true); $daily_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 24 * 3600, time(), $peerusage, 'daily graph', 'detailgraph', true);
$weekly_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 7 * 86400, time(), $peerusage, 'weekly graph', 'detailgraph', true); $weekly_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 6.9 * 86400, time(), $peerusage, 'weekly graph', 'detailgraph', true);
$monthly_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 30 * 86400, time(), $peerusage, 'monthly graph', 'detailgraph', true); $monthly_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 30 * 86400, time(), $peerusage, 'monthly graph', 'detailgraph', true);
$yearly_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 365 * 86400, time(), $peerusage, 'yearly graph', 'detailgraph', true); $yearly_graph_v4 = getHTMLImg($as, 4, $asinfo['descr'], time() - 365 * 86400, time(), $peerusage, 'yearly graph', 'detailgraph', true);
if ($showv6) { if ($showv6) {
$daily_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 24 * 3600, time(), $peerusage, 'daily graph', 'detailgraph', true); $daily_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 24 * 3600, time(), $peerusage, 'daily graph', 'detailgraph', true);
$weekly_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 7 * 86400, time(), $peerusage, 'weekly graph', 'detailgraph', true); $weekly_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 6.9 * 86400, time(), $peerusage, 'weekly graph', 'detailgraph', true);
$monthly_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 30 * 86400, time(), $peerusage, 'monthly graph', 'detailgraph', true); $monthly_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 30 * 86400, time(), $peerusage, 'monthly graph', 'detailgraph', true);
$yearly_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 365 * 86400, time(), $peerusage, 'yearly graph', 'detailgraph', true); $yearly_graph_v6 = getHTMLImg($as, 6, $asinfo['descr'], time() - 365 * 86400, time(), $peerusage, 'yearly graph', 'detailgraph', true);
} }

View File

@ -15,6 +15,7 @@ if ($peerusage) {
$label = statsLabelForHours($hours); $label = statsLabelForHours($hours);
$knownlinks = getknownlinks(); $knownlinks = getknownlinks();
$selected_links = array(); $selected_links = array();
foreach($knownlinks as $link){ foreach($knownlinks as $link){
@ -185,9 +186,7 @@ if ( !$detect->isMobile() && !$detect->isTablet() ) {
<?php echo content_header('Top ' . $ntop . ' AS', '('.$label.')'); ?> <?php echo content_header('Top ' . $ntop . ' AS', '('.$label.')'); ?>
<section class="content"> <section class="content">
<div class="row"> <div class="row">
<div class="col-md-12 col-lg-<?php echo $first_col; ?>"> <div class="col-md-12 col-lg-<?php echo $first_col; ?>">
<div class="row"> <div class="row">
@ -270,6 +269,7 @@ if ( !$detect->isMobile() && !$detect->isTablet() ) {
<script src="bootstrap/js/bootstrap.min.js"></script> <script src="bootstrap/js/bootstrap.min.js"></script>
<script src="plugins/slimScroll/jquery.slimscroll.min.js"></script> <script src="plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="plugins/fastclick/fastclick.min.js"></script> <script src="plugins/fastclick/fastclick.min.js"></script>
<script src="plugins/jQueryUI/jquery-ui.min.js"></script>
<script src="dist/js/app.min.js"></script> <script src="dist/js/app.min.js"></script>
</body> </body>

111
linkgraph.php Normal file
View File

@ -0,0 +1,111 @@
<?php
/*
* $Id$
*
* written by Manuel Kasper <mk@neon1.net> for Monzoon Networks AG
*/
require_once('func.inc');
$numtop = 10;
$ascolors = array("A6CEE3", "1F78B4", "B2DF8A", "33A02C", "FB9A99", "E31A1C", "FDBF6F", "FF7F00", "CAB2D6", "6A3D9A");
$link = $_GET['link'];
if (!preg_match("/^[0-9a-zA-Z][0-9a-zA-Z\-_]+$/", $link))
die("Invalid link");
$v6_el = "";
if (@$_GET['v'] == 6)
$v6_el = "v6_";
$hours = 24;
if (@$_GET['numhours'])
$hours = (int)$_GET['numhours'];
$statsfile = statsFileForHours($hours);
$topas = getasstats_top($numtop, $statsfile, array($_GET['link']));
/* now make a beautiful graph :) */
header("Content-Type: image/png");
$width = $default_graph_width;
$height = $default_graph_height;
if (@$_GET['width'])
$width = (int)$_GET['width'];
if (@$_GET['height'])
$height = (int)$_GET['height'];
$knownlinks = getknownlinks();
if ($compat_rrdtool12) {
/* cannot use full-size-mode - must estimate height/width */
$height -= 205;
$width -= 81;
}
$start = time() - $hours*3600;
$end = time();
$cmd = "$rrdtool graph - " .
"--slope-mode --alt-autoscale -u 0 -l 0 --imgformat=PNG --base=1000 --height=$height --width=$width " .
"--color BACK#ffffff00 --color SHADEA#ffffff00 --color SHADEB#ffffff00 " .
"--start " . $start . " --end " . $end . " ";
if (!$compat_rrdtool12)
$cmd .= "--full-size-mode ";
if($showtitledetail && @$_GET['dname'] != "")
$cmd .= "--title " . escapeshellarg($_GET['dname']) . " ";
else
if (isset($_GET['v']) && is_numeric($_GET['v']))
$cmd .= "--title IPv" . $_GET['v'] . " ";
/* geneate RRD DEFs */
foreach ($topas as $as => $traffic) {
$rrdfile = getRRDFileForAS($as);
$cmd .= "DEF:as{$as}_{$v6_el}in=\"$rrdfile\":{$link}_{$v6_el}in:AVERAGE ";
$cmd .= "DEF:as{$as}_{$v6_el}out=\"$rrdfile\":{$link}_{$v6_el}out:AVERAGE ";
}
/* generate a CDEF for each DEF to multiply by 8 (bytes to bits), and reverse for outbound */
foreach ($topas as $as => $traffic) {
if ($outispositive) {
$cmd .= "CDEF:as{$as}_{$v6_el}in_bits=as{$as}_{$v6_el}in,-8,* ";
$cmd .= "CDEF:as{$as}_{$v6_el}out_bits=as{$as}_{$v6_el}out,8,* ";
} else {
$cmd .= "CDEF:as{$as}_{$v6_el}in_bits=as{$as}_{$v6_el}in,8,* ";
$cmd .= "CDEF:as{$as}_{$v6_el}out_bits=as{$as}_{$v6_el}out,-8,* ";
}
}
/* generate graph area/stack for inbound */
$i = 0;
foreach ($topas as $as => $traffic) {
$asinfo = getASInfo($as);
$descr = str_replace(":", "\\:", utf8_decode($asinfo['descr']));
$cmd .= "AREA:as{$as}_{$v6_el}in_bits#{$ascolors[$i]}:\"AS{$as} ({$descr})\\n\"";
if ($i > 0)
$cmd .= ":STACK";
$cmd .= " ";
$i++;
}
/* generate graph area/stack for outbound */
$i = 0;
foreach ($topas as $as => $traffic) {
$cmd .= "AREA:as{$as}_{$v6_el}out_bits#{$ascolors[$i]}:";
if ($i > 0)
$cmd .= ":STACK";
$cmd .= " ";
$i++;
}
# zero line
$cmd .= "HRULE:0#00000080";
passthru($cmd);
exit;
?>

101
linkusage.php Normal file
View File

@ -0,0 +1,101 @@
<?php include("func.inc"); ?>
<?php
$knownlinks = getknownlinks();
$hours = 24;
if (@$_GET['numhours'])
$hours = (int)$_GET['numhours'];
$label = statsLabelForHours($hours);
$i = 0;
foreach ($knownlinks as $link) {
$class = (($i % 2) == 0) ? "" : "even";
if ($showv6) {
$list_img[$link['tag']] = '<img alt="link graph" src="linkgraph.php?link='.$link['tag'].'&numhours='.$hours.'&width='.$linkusage_graph_width.'&height='.$linkusage_graph_height.'&dname='.rawurlencode($link['descr'] . " - IPv4").'" width="'.$linkusage_graph_width.'" height="'.$linkusage_graph_height.'" border="0" />';
$list_img_v6[$link['tag']] = '<img alt="link graph" src="linkgraph.php?link='.$link['tag'].'&numhours='.$hours.'&width='.$linkusage_graph_width.'&height='.$linkusage_graph_height.'&dname='.rawurlencode($link['descr'] . " - IPv6").'&v=6" width="'.$linkusage_graph_width.'" height="'.$linkusage_graph_height.'" border="0" />';
} else {
$list_img[$link['tag']] = '<img alt="link graph" src="linkgraph.php?link='.$link['tag'].'&numhours='.$hours.'&width='.$linkusage_graph_width.'&height='.$linkusage_graph_height.'&dname='.rawurlencode($link['descr']).'" width="'.$linkusage_graph_width.'" height="'.$linkusage_graph_height.'" border="0" />';
}
if ( ($showtitledetail && !$hidelinkusagename) || (!$showtitledetail) ) {
$txt_title[$link['tag']] = $link['descr'];
} else { $txt_title = ""; }
}
?>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Refresh" content="300">
<title>AS-Stats | Link Usage - Top 10 AS per link</title>
<link rel="icon" href="favicon.ico" />
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="plugins/font-awesome/font-awesome.min.css">
<link rel="stylesheet" href="plugins/ionicons/ionicons.min.css">
<link rel="stylesheet" href="dist/css/AdminLTE.min.css">
<link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">
<link rel="stylesheet" href="css/custom.css">
</head>
<body class="hold-transition skin-black-light sidebar-collapse layout-top-nav fixed">
<div class="wrapper">
<!-- =============================================== -->
<?php echo menu($selected_links); ?>
<!-- =============================================== -->
<div class="content-wrapper">
<?php echo content_header('Top 10 AS - per link usage', '(' . $label . ')'); ?>
<section class="content">
<div class="row">
<?php
if ( !$txt_title ) {
if (!$showv6) {
foreach ($list_img as $key => $img) {
echo '<div class="col-lg-6">';
echo box_linkusage('Link Usage', $img);
echo '</div>';
}
} else {
foreach ($list_img as $key => $img) {
echo '<div class="col-lg-12">';
echo box_linkusage('Link Usage', $img . ' ' . $list_img_v6[$key]);
echo '</div>';
}
}
} else {
if (!$showv6) {
foreach ($list_img as $key => $img) {
echo '<div class="col-lg-6">';
echo box_linkusage('Link Usage for ' . $txt_title[$key], $img);
echo '</div>';
}
} else {
foreach ($list_img as $key => $img) {
echo '<div class="col-lg-12">';
echo box_linkusage('Link Usage for ' . $txt_title[$key], $img . ' ' . $list_img_v6[$key]);
echo '</div>';
}
}
}
?>
</div>
</section>
</div>
<!-- =============================================== -->
<?php echo footer(); ?>
<!-- =============================================== -->
</div>
<script src="plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="plugins/fastclick/fastclick.min.js"></script>
<script src="plugins/jQueryUI/jquery-ui.min.js"></script>
<script src="dist/js/app.min.js"></script>
</body>
</html>