2008-01-16 08:36:45 +00:00
|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* $Id$
|
2013-06-06 19:02:30 +02:00
|
|
|
*
|
2013-04-29 10:43:44 +02:00
|
|
|
* written by Manuel Kasper <mk@neon1.net> for Monzoon Networks AG
|
2008-01-16 08:36:45 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
require_once('func.inc');
|
|
|
|
|
|
|
|
$as = $_GET['as'];
|
2008-12-18 12:35:42 +00:00
|
|
|
if (!preg_match("/^[0-9a-zA-Z]+$/", $as))
|
2008-01-16 08:36:45 +00:00
|
|
|
die("Invalid AS");
|
|
|
|
|
|
|
|
header("Content-Type: image/png");
|
|
|
|
|
|
|
|
$width = 500;
|
|
|
|
$height = 300;
|
2010-08-02 11:23:42 +00:00
|
|
|
if (isset($_GET['width']))
|
2008-01-16 08:36:45 +00:00
|
|
|
$width = (int)$_GET['width'];
|
2010-08-02 11:23:42 +00:00
|
|
|
if (isset($_GET['height']))
|
2008-01-16 08:36:45 +00:00
|
|
|
$height = (int)$_GET['height'];
|
2013-01-21 15:12:01 +00:00
|
|
|
$v6_el = "";
|
|
|
|
if (@$_GET['v'] == 6)
|
|
|
|
$v6_el = "v6_";
|
2008-01-16 08:36:45 +00:00
|
|
|
|
|
|
|
$knownlinks = getknownlinks();
|
2009-10-10 16:53:25 +00:00
|
|
|
$rrdfile = getRRDFileForAS($as);
|
2008-01-16 08:36:45 +00:00
|
|
|
|
|
|
|
$cmd = "$rrdtool graph - " .
|
2008-12-06 11:19:22 +00:00
|
|
|
"--slope-mode --alt-autoscale -u 0 -l 0 --imgformat=PNG --base=1000 --height=$height --width=$width " .
|
2008-01-16 08:36:45 +00:00
|
|
|
"--color BACK#ffffff00 --color SHADEA#ffffff00 --color SHADEB#ffffff00 ";
|
|
|
|
|
2014-02-11 16:08:36 +01:00
|
|
|
if($outispositive)
|
2014-03-12 14:05:29 +01:00
|
|
|
$cmd .= "--vertical-label '<- IN | OUT ->' ";
|
2014-02-11 16:08:36 +01:00
|
|
|
else
|
2014-03-12 14:05:29 +01:00
|
|
|
$cmd .= "--vertical-label '<- OUT | IN ->' ";
|
2014-02-11 16:08:36 +01:00
|
|
|
|
2014-03-12 13:45:30 +01:00
|
|
|
if($showtitledetail && $_GET['dname'] != "")
|
2014-03-12 14:05:29 +01:00
|
|
|
$cmd .= "--title " . escapeshellarg($_GET['dname']) . " ";
|
2014-03-12 13:45:30 +01:00
|
|
|
else
|
|
|
|
if (isset($_GET['v']) && is_numeric($_GET['v']))
|
|
|
|
$cmd .= "--title IPv" . $_GET['v'] . " ";
|
2013-01-21 15:12:01 +00:00
|
|
|
|
2010-08-02 11:23:42 +00:00
|
|
|
if (isset($_GET['nolegend']))
|
2008-01-16 08:36:45 +00:00
|
|
|
$cmd .= "--no-legend ";
|
|
|
|
|
2010-08-02 11:23:42 +00:00
|
|
|
if (isset($_GET['start']) && is_numeric($_GET['start']))
|
2008-01-16 08:36:45 +00:00
|
|
|
$cmd .= "--start " . $_GET['start'] . " ";
|
|
|
|
|
2010-08-02 11:23:42 +00:00
|
|
|
if (isset($_GET['end']) && is_numeric($_GET['end']))
|
2008-01-16 08:36:45 +00:00
|
|
|
$cmd .= "--end " . $_GET['end'] . " ";
|
|
|
|
|
|
|
|
/* geneate RRD DEFs */
|
|
|
|
foreach ($knownlinks as $link) {
|
2013-01-21 15:12:01 +00:00
|
|
|
$cmd .= "DEF:{$link['tag']}_{$v6_el}in=\"$rrdfile\":{$link['tag']}_{$v6_el}in:AVERAGE ";
|
|
|
|
$cmd .= "DEF:{$link['tag']}_{$v6_el}out=\"$rrdfile\":{$link['tag']}_{$v6_el}out:AVERAGE ";
|
2008-01-16 08:36:45 +00:00
|
|
|
}
|
|
|
|
|
2014-03-12 14:05:29 +01:00
|
|
|
if ($compat_rrdtool12) {
|
|
|
|
/* generate a CDEF for each DEF to multiply by 8 (bytes to bits), and reverse for outbound */
|
|
|
|
foreach ($knownlinks as $link) {
|
|
|
|
if ($outispositive) {
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}in_bits={$link['tag']}_{$v6_el}in,-8,* ";
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}out_bits={$link['tag']}_{$v6_el}out,8,* ";
|
|
|
|
} else {
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}in_bits={$link['tag']}_{$v6_el}in,8,* ";
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}out_bits={$link['tag']}_{$v6_el}out,-8,* ";
|
|
|
|
}
|
|
|
|
}
|
2014-02-11 16:07:22 +01:00
|
|
|
} else {
|
2014-03-12 14:05:29 +01:00
|
|
|
$tot_in_bits = "CDEF:tot_in_bits=0";
|
|
|
|
$tot_out_bits = "CDEF:tot_out_bits=0";
|
|
|
|
|
|
|
|
/* generate a CDEF for each DEF to multiply by 8 (bytes to bits), and reverse for outbound */
|
|
|
|
foreach ($knownlinks as $link) {
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}in_bits_pos={$link['tag']}_{$v6_el}in,8,* ";
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}out_bits_pos={$link['tag']}_{$v6_el}out,8,* ";
|
|
|
|
$tot_in_bits .= ",{$link['tag']}_{$v6_el}in_bits_pos,ADDNAN";
|
|
|
|
$tot_out_bits .= ",{$link['tag']}_{$v6_el}out_bits_pos,ADDNAN";
|
|
|
|
}
|
|
|
|
|
|
|
|
$cmd .= "$tot_in_bits ";
|
|
|
|
$cmd .= "$tot_out_bits ";
|
|
|
|
|
|
|
|
$cmd .= "VDEF:tot_in_bits_95th_pos=tot_in_bits,95,PERCENT ";
|
|
|
|
$cmd .= "VDEF:tot_out_bits_95th_pos=tot_out_bits,95,PERCENT ";
|
|
|
|
|
|
|
|
if ($outispositive) {
|
|
|
|
$cmd .= "CDEF:tot_in_bits_95th=tot_in_bits,POP,tot_in_bits_95th_pos,-1,* ";
|
|
|
|
$cmd .= "CDEF:tot_out_bits_95th=tot_out_bits,POP,tot_out_bits_95th_pos,1,* ";
|
|
|
|
} else {
|
|
|
|
$cmd .= "CDEF:tot_in_bits_95th=tot_in_bits,POP,tot_in_bits_95th_pos,1,* ";
|
|
|
|
$cmd .= "CDEF:tot_out_bits_95th=tot_out_bits,POP,tot_out_bits_95th_pos,-1,* ";
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($knownlinks as $link) {
|
|
|
|
if ($outispositive) {
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}in_bits={$link['tag']}_{$v6_el}in_bits_pos,-1,* ";
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}out_bits={$link['tag']}_{$v6_el}out_bits_pos,1,* ";
|
|
|
|
} else {
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}out_bits={$link['tag']}_{$v6_el}out_bits_pos,-1,* ";
|
|
|
|
$cmd .= "CDEF:{$link['tag']}_{$v6_el}in_bits={$link['tag']}_{$v6_el}in_bits_pos,1,* ";
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 08:36:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* generate graph area/stack for inbound */
|
|
|
|
$i = 0;
|
|
|
|
foreach ($knownlinks as $link) {
|
2014-06-16 15:49:03 +02:00
|
|
|
if ($outispositive && (!isset($brighten_negative) || $brighten_negative))
|
2008-12-06 11:19:22 +00:00
|
|
|
$col = $link['color'] . "BB";
|
|
|
|
else
|
|
|
|
$col = $link['color'];
|
2013-06-06 19:02:30 +02:00
|
|
|
$descr = str_replace(':', '\:', $link['descr']); # Escaping colons in description
|
2013-06-06 19:18:58 +02:00
|
|
|
$cmd .= "AREA:{$link['tag']}_{$v6_el}in_bits#{$col}:\"{$descr}\"";
|
2008-01-16 08:36:45 +00:00
|
|
|
if ($i > 0)
|
|
|
|
$cmd .= ":STACK";
|
|
|
|
$cmd .= " ";
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* generate graph area/stack for outbound */
|
|
|
|
$i = 0;
|
|
|
|
foreach ($knownlinks as $link) {
|
2014-06-16 15:49:03 +02:00
|
|
|
if ($outispositive || !(!isset($brighten_negative) || $brighten_negative))
|
2008-12-06 11:19:22 +00:00
|
|
|
$col = $link['color'];
|
|
|
|
else
|
|
|
|
$col = $link['color'] . "BB";
|
2013-01-21 15:12:01 +00:00
|
|
|
$cmd .= "AREA:{$link['tag']}_{$v6_el}out_bits#{$col}:";
|
2008-01-16 08:36:45 +00:00
|
|
|
if ($i > 0)
|
|
|
|
$cmd .= ":STACK";
|
|
|
|
$cmd .= " ";
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
|
2014-03-12 14:05:29 +01:00
|
|
|
if ($show95th && !$compat_rrdtool12) {
|
|
|
|
$cmd .= "LINE1:tot_in_bits_95th#FF0000 ";
|
|
|
|
$cmd .= "LINE1:tot_out_bits_95th#FF0000 ";
|
|
|
|
$cmd .= "GPRINT:tot_in_bits_95th_pos:'95th in %6.2lf%s' ";
|
|
|
|
$cmd .= "GPRINT:tot_out_bits_95th_pos:'95th out %6.2lf%s' ";
|
2014-02-11 16:07:22 +01:00
|
|
|
}
|
|
|
|
|
2008-01-16 08:36:45 +00:00
|
|
|
# zero line
|
|
|
|
$cmd .= "HRULE:0#00000080";
|
|
|
|
|
|
|
|
passthru($cmd);
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
?>
|