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; $iAddLine($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 ""; } ?>