Files
pannello/graph.php.old
2015-10-08 11:41:53 +02:00

241 lines
8.7 KiB
PHP

<?php
include_once ("core/config.php");
$UTENTE = login();
//isadmin();
include_once "jpgraph/jpgraph.php";
include_once "jpgraph/jpgraph_line.php";
include_once "jpgraph/jpgraph_plotline.php";
include_once "jpgraph/jpgraph_bar.php";
if (isset ($_GET['datainizio'])) $datainizio = $_GET['datainizio'];
if (isset ($_GET['orainizio'])) $orainizio = $_GET['orainizio'];
if (isset ($_GET['mininizio'])) $mininizio = $_GET['mininizio'];
if (isset ($_GET['datafine'])) $datafine = $_GET['datafine'];
if (isset ($_GET['orafine'])) $orafine = $_GET['orafine'];
if (isset ($_GET['minfine'])) $minfine = $_GET['minfine'];
if (isset ($_GET['dettaglio'])) $dettaglio = $_GET['dettaglio'];
if (isset ($_GET['rif'])) $riferimento = $_GET['rif'];
if (isset ($_GET['device'])) $device = $_GET['device'];
if ($dettaglio == 'ora') {
$mininizio = $minfine = 0;
}
$data_ini = new DateTime($datainizio);
$data_fin = new DateTime($datafine);
$data_dif = $data_fin->diff($data_ini)->days;
$datainizioquery = "$datainizio $orainizio:$mininizio:0";
$datafinequery = "$datafine $orafine:$minfine:0";
list ($annoinizio, $meseinizio, $giornoinizio) = explode ("-",$datainizio);
list ($annofine, $mesefine, $giornofine) = explode ("-",$datafine);
$l = 900;
$h = 400;
$inizio = @mktime ($orainizio, $mininizio, 0, $meseinizio, $giornoinizio, $annoinizio);
$fine = @mktime ($orafine, $minfine, 0, $mesefine, $giornofine, $annofine);
$mezzanotte = mktime (0,0,0,$mesefine ,$giornofine, $annofine);
if ($riferimento == 0) {
$query = "SELECT descrizione AS servizio, rate * 1024 AS garantiti, ceil * 1024 AS massimo FROM interfacce WHERE id='$device'";
} else {
$query = "SELECT descrizione AS servizio, rate * 1024 AS garantiti, ceil * 1024 AS massimo FROM defrule WHERE id='$riferimento' and idinterfacce='$device'";
}
$res = mysql_query( $query );
list ($servizio, $garantiti, $limite) = mysql_fetch_array($res);
switch ($dettaglio) {
case "minuto":
$query = "SELECT idfirewall, UNIX_TIMESTAMP(data) AS time, rate AS picco, rate AS media, diff AS dati FROM dati_traffico WHERE ((iddefrule='$riferimento' and idinterfacce='$device') and (data between '$datainizioquery' and '$datafinequery')) order by data";
$query_max = "SELECT firewall.nome, MAX(dati_traffico.rate) AS massimo, AVG(dati_traffico.rate) AS media, STDDEV(dati_traffico.rate) AS deviazione, SUM(dati_traffico.diff) AS traffico FROM dati_traffico JOIN firewall ON firewall.id=dati_traffico.idfirewall WHERE iddefrule='$riferimento' AND idinterfacce='$device' AND data BETWEEN '$datainizioquery' AND '$datafinequery' GROUP BY idfirewall";
$txt_sotto = "Dalle ore ".date ("H:i",$inizio)." del ".date ("d.m.Y",$inizio)." alle ore ".date ("H:i",$fine)." del ".date ("d.m.Y",$fine);
break;
case "ora":
$query = "SELECT idfirewall, UNIX_TIMESTAMP(data) AS time, max AS picco, media, traffico AS dati FROM dati_ora WHERE ((iddefrule='$riferimento' and idinterfacce='$device') and (data between '$datainizioquery' and '$datafinequery')) order by data";
$query_max = "SELECT firewall.nome, MAX(dati_ora.max) AS massimo, avg(dati_ora.max) AS media, stddev(dati_ora.max) AS deviazione, sum(dati_ora.traffico) AS traffico FROM dati_ora JOIN firewall ON firewall.id=dati_ora.idfirewall WHERE iddefrule='$riferimento' AND idinterfacce='$device' AND data BETWEEN '$datainizioquery' and '$datafinequery' GROUP BY idfirewall";
$txt_sotto = "Dalle ore ".date ("H",$inizio).":00 del ".date ("d.m.Y",$inizio)." alle ore ".date ("H",$fine).":00 del ".date ("d.m.Y",$fine);
$barre = array();
break;
case "giorno":
$query = "SELECT idfirewall, UNIX_TIMESTAMP(data) AS time, max AS picco, media, traffico AS dati FROM dati_giorno WHERE ((iddefrule='$riferimento' and idinterfacce='$device') and (data BETWEEN DATE('$datainizio') and DATE('$datafine'))) order by data";
$query_max = "SELECT firewall.nome, MAX(dati_giorno.max) AS massimo, AVG(dati_giorno.max) AS media, STDDEV(dati_giorno.max) AS deviazione, SUM(dati_giorno.traffico) AS traffico FROM dati_giorno JOIN firewall ON firewall.id=dati_giorno.idfirewall WHERE iddefrule='$riferimento' AND idinterfacce='$device' AND data BETWEEN '$datainizioquery' AND '$datafinequery' GROUP BY idfirewall";
$txt_sotto = "Dal giorno ".date ("d.m.Y",$inizio)." al giorno ".date ("d.m.Y",$fine);
$barre = array();
break;
case "settimana":
break;
}
$testo_leg = "";
$res_max = mysql_query( $query_max );
while ($dati_max = mysql_fetch_array($res_max)) {
$testo_leg .= "(".$dati_max['nome'].") Picco: ".fsize ($dati_max['massimo'])."/s Media: ".fsize($dati_max['media'])."/s Traffico Totale: ".fsize($dati_max['traffico']*1024)."\n";
}
$res = mysql_query( $query );
$xdata = array(array());
$ydata = array(array());
$tag = array(array());
$alt = array(array());
$cambiogiorno = array();
while ( list ($fw, $tempo, $picco, $media, $dati) = mysql_fetch_array($res)) {
switch ($dettaglio) {
case "minuto":
inslabel ($tempo, $fw, $data_dif);
$ydata[$fw][] = $picco / 1024;
$mediadata[$fw][] = $media / 1024;
break;
case "ora":
inslabel ($tempo, $fw, $data_dif);
$ydata[$fw][] = $picco / 1024;
$tag[$fw][] = " ";
$alt[$fw][] = "Picco: ".fsize($picco)."/s\nMedia: ".fsize($media)."/s\nTraffico: ".fsize($dati*1024);
break;
case "giorno":
$xdata[$fw][] = date ("d.m.Y",$tempo);
$ydata[$fw][] = $picco / 1024;
$tag[$fw][] = " ";
$alt[$fw][] = "Picco: ".fsize($picco)."/s\nMedia: ".fsize($media)."/s\nTraffico: ".fsize($dati*1024);
break;
}
};
// Create the graph
$g = new Graph($l,$h);
$g->SetMargin(60,20,50,80);
$g->title->SetFont(FF_VERDANA);
$g->title->Set("Traffico regola \"$servizio\"");
$g->subtitle->Set("$testo_leg Banda garantita: ".fsize ($garantiti * 1024)."/s - Banda massima: ".fsize($limite * 1024)."/s\n$txt_sotto");
$g->SetShadow();
$g->SetScale('textlin');
$g->xaxis->SetLabelAngle(90);
$g->yaxis->title->SetFont(FF_VERDANA);
$g->yaxis->SetLabelFormatCallback('udm');
$query = "SELECT id, nome, colore FROM firewall WHERE id > 0";
$res = mysql_query( $query );
while ( list ($fwid, $fwnome, $fwcolore) = mysql_fetch_array($res)) {
switch ($dettaglio) {
case "minuto":
$$fwnome = new LinePlot($ydata[$fwid]);
$g->Add($$fwnome);
$g->xaxis->SetTickLabels($xdata[$fwid]);
$$fwnome->SetColor($fwcolore);
$$fwnome->SetLegend ($fwnome);
break;
case "ora":
case "giorno":
$$fwnome = new BarPlot($ydata[$fwid]);
$g->xaxis->SetTickLabels($xdata[$fwid]);
$$fwnome->SetCSIMTargets($tag[$fwid],$alt[$fwid]);
$barre[] = $$fwnome;
break;
}
};
if ($dettaglio == "ora" || $dettaglio == "giorno") {
$gbarre = new GroupBarPlot ($barre);
$g->Add($gbarre);
$res = mysql_query( $query );
while ( list ($fwid, $fwnome, $fwcolore) = mysql_fetch_array($res)) {
$color1 = sprintf ("%s1",$fwcolore);
$color2 = sprintf ("%s4",$fwcolore);
$$fwnome->SetFillGradient($color1,$color2,GRAD_VERT);
$$fwnome->SetFillColor($fwcolore);
$$fwnome->SetColor($fwcolore);
$$fwnome->SetLegend ($fwnome);
}
}
if ($limite == $garantiti) {
$spessore = 2;
} else {
$spessore = 1;
}
# Inserisco linea di Massimo
if (($massimo / 1024 ) > $limite) {
$llim = new PlotLine (HORIZONTAL,$limite, "red",$spessore);
$g->Add($llim);
}
# Inserisco linea di Garantito
if (($massimo / 1024) > $garantiti) {
$lgar = new PlotLine (HORIZONTAL,$garantiti, "green",1);
$g->Add($lgar);
}
# Inserisco linea di Media
$lmedia = new PlotLine (HORIZONTAL,$med/1024, "yellow",1);
$g->Add($lmedia);
# Inserisco cambi di giorno
for ($i = 0; $i<count($cambiogiorno); $i++) {
$dayline = new PlotLine(VERTICAL,$cambiogiorno[$i],"black",2);
$g->AddLine($dayline);
}
$g->legend->Pos( 0.02,0.02,"right" ,"top");
$g->legend->SetColumns(1);
$g->legend->SetFrameWeight(2);
$g->legend->SetShadow();
$g->StrokeCSIM('graph.php','giorni');
function inslabel ($tempo, $fw, $data_dif) {
global $xdata, $cambiogiorno;
if ($data_dif <= 1) {
if (date("H:i",$tempo) == "00:00") {
$xdata[$fw][] = date ("d.m H:i",$tempo);
if (!array_search(count($xdata[$fw]), $cambiogiorno)) {
$cambiogiorno[] = count($xdata[$fw]);
}
} else if (date("i",$tempo) == "00") {
$xdata[$fw][] = date ("H:i",$tempo);
} else {
$xdata[$fw][] = "";
}
} else if ($data_dif <= 12) {
if (date("H:i",$tempo) == "00:00") {
$xdata[$fw][] = date ("d.m H:i",$tempo);
if (!array_search(count($xdata[$fw]), $cambiogiorno)) {
$cambiogiorno[] = count($xdata[$fw]);
}
} else if ((date("i",$tempo) == "00") && ( ( date("H",$tempo)%(floor(24/floor(24/$data_dif))) ) == 0 )) {
$xdata[$fw][] = date ("H:i",$tempo);
} else {
$xdata[$fw][] = "";
}
} else {
if (date("H:i",$tempo) == "00:00") {
$xdata[$fw][] = date ("d.m H:i",$tempo);
} else {
$xdata[$fw][] = "";
}
}
}
function udm ($valore) {
if ($valore)
return fsize ($valore*1024);
else
return "";
}
?>