2008-09-03 Sancho Lerena <slerena@artica.es>

* include/functions_reporting_pdf.php: Moved to contrib branch.

	* install.php: Update sample of use for homeurl variable. This should
	not contain HTTP:/x.x.x.x anymore.

	* operation/events/events_rss.php: Makes use of homeurl in the 
	correct way.

	* operation/agentes/estado_agente.php: Fixed a sprintf typo.




git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1075 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
slerena 2008-09-03 12:11:53 +00:00
parent 42d5f1a011
commit 77f3ff1ea1
5 changed files with 17 additions and 361 deletions

View File

@ -1,3 +1,15 @@
2008-09-03 Sancho Lerena <slerena@artica.es>
* include/functions_reporting_pdf.php: Moved to contrib branch.
* install.php: Update sample of use for homeurl variable. This should
not contain HTTP:/x.x.x.x anymore.
* operation/events/events_rss.php: Makes use of homeurl in the
correct way.
* operation/agentes/estado_agente.php: Fixed a sprintf typo.
2008-09-03 Esteban Sanchez <estebans@artica.es>
* include/config_process.php: Checks in homeurl config variable. Style

View File

@ -1,357 +0,0 @@
<?php
// Pandora FMS - the Flexible Monitoring System
// ============================================
// Copyright (c) 2008 Artica Soluciones Tecnologicas, http://www.artica.es
// Please see http://pandora.sourceforge.net for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License (LGPL)
// as published by the Free Software Foundation for version 2.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
global $config;
$reporting_debug = false;
if ($reporting_debug) {
error_reporting (E_ALL);
} else {
error_reporting (0);
}
function doTitle ($pdf, $title="") {
$pdf->transaction('start');
$ok=0;
while (!$ok) {
$thisPageNum = $pdf->ezPageCount;
$pdf->saveState();
$pdf->setColor(0.9,0.9,0.9);
$pdf->filledRectangle($pdf->ez['leftMargin'],$pdf->y-$pdf->getFontHeight(16)+$pdf->getFontDecender(16),$pdf->ez['pageWidth']-$pdf->ez['leftMargin']-$pdf->ez['rightMargin'],$pdf->getFontHeight(16));
$pdf->restoreState();
$pdf->ezText (utf8_decode($title),14,array('justification'=>'left'));
$pdf->ezText ("\n",6);
if ($pdf->ezPageCount==$thisPageNum){
$pdf->transaction('commit');
$ok = 1;
} else {
// then we have moved onto a new page, bad bad, as the background colour will be on the old one
$pdf->transaction('rewind');
$pdf->ezNewPage();
}
}
}
function doPageNumbering($pdf, $x=500, $y=25, $size=9) {
// Original code by Johny Mnemonic (mnemonic23 in SF site)
// God bless Sourceforge forums !
//count pages
$pages = count($pdf->ezPages);
//iterate through pages
for($pageno = 1; $pageno <= $pages; $pageno++) {
//build footer string
$foot = 'Page '.$pageno.' of '.$pages;
//open the page again
$pdf->reopenObject($pdf->ezPages[$pageno]);
//print the footer
$pdf->addText($x, $y, $size, $foot);
//close the page
$pdf->closeObject();
}
}
function doPageHeader ($pdf, $title){
global $config;
$pdf->addInfo("Title", $title);
$pdf->addInfo("Author","Pandora FMS 2.0");
$pdf->addInfo("Creator","Pandora FMS with ezPDF engine");
$pdf->addInfo("Subject","Automated Pandora FMS report for user defined report");
// Add header
$all = $pdf->openObject();
$pdf->saveState();
$pdf->addJpegFromFile($config["homedir"]."/images/pandora_logo.jpg",20,812,25);
$pdf->setStrokeColor(0,0,0,1);
$pdf->line(20,40,578,40);
$pdf->line(20,810,578,810);
$pdf->addText(25,25,8,'Pandora FMS 2.0 - http://pandora.sourceforge.net');
$pdf->addText(50,815,10,"Pandora FMS - Report $title");
$pdf->restoreState();
$pdf->closeObject();
$pdf->addObject($all,'all');
}
function get_pdf_report ($report) {
global $config;
$session_id = session_id ();
$report_name = html_entity_decode ($report['name'], ENT_COMPAT, "iso-8859-15");
$report_description = html_entity_decode ($report['description'], ENT_COMPAT, "iso-8859-15");
$report_private= $report['private'];
$report_user = $report['id_user'];
$date_today = date("Y/m/d H:i:s");
$report_title = utf8_decode ("$report_name");
// Start PDF
$pdf = new Cezpdf ();
$pdf->selectFont ($config["homedir"].'/include/pdf/fonts/Times-Roman.afm', array('encoding'=>'utf-8'));
doPageHeader ($pdf, $report_title);
$pdf->ezSetCmMargins (2, 2, 2, 2);
$pdf->ezText ("<b>$report_title </b>", 18);
$pdf->ezText ("Generated at $date_today", 8);
$pdf->ezText ("\n".$report_description, 10);
$pdf->ezText ("\n\n", 8);
$table_options = array ('width' => 450,
'fontSize' => 9,
'rowGap' => 2,
'outerLineThickness' => 0.8,
'innerLineThickness' => 0.2,
'shaded' => 1);
$group_name = dame_grupo ($report['id_group']);
$agents = get_agents_in_group ($report['id_group']);
$sql = sprintf ('SELECT * FROM treport_content WHERE id_report = %d ORDER BY `order`', $report['id_report']);
$contents = get_db_all_rows_sql ($sql);
foreach ($contents as $content) {
$module_name = utf8_decode (get_db_value ('nombre', 'tagente_modulo', 'id_agente_modulo', $content['id_agent_module']));
$agent_name = utf8_decode (dame_nombre_agente_agentemodulo ($content['id_agent_module']));
$period = human_time_description ($content['period']);
switch ($content["type"]) {
case 1:
case 'simple_graph':
doTitle ($pdf, __('Module graph').': '.$agent_name.
' - '.$module_name.' - '.$period);
$image = 'http://'.$_SERVER['HTTP_HOST'].$config["homeurl"].
'/reporting/fgraph.php?PHPSESSID='.$session_id.
'&tipo=sparse&id='.$content["id_agent_module"].
'&height=180&width=780&period='.$content['period'].
'&avg_only=1&pure=1';
//ezImage(image,[padding],[width],[resize],[justification],[array border]
$pdf->ezImage ($image,0,470,'none','left');
break;
case 2:
case 'custom_graph':
$graph = get_db_row ("tgraph", "id_graph", $content["id_gs"]);
$modules = array ();
$weights = array ();
$sql = sprintf ('SELECT * FROM tgraph_source
WHERE id_graph = %d',
$content["id_gs"]);
$result = mysql_query ($sql);
while ($content2 = mysql_fetch_array($result)) {
array_push ($modules, $content2['id_agent_module']);
array_push ($weights, $content2["weight"]);
}
doTitle ($pdf, __('Custom graph').': '.$graph["name"].
' - '.$period);
$image = 'http://'.$_SERVER['HTTP_HOST'].$config["homeurl"].
'/reporting/fgraph.php?PHPSESSID='.$session_id.'&tipo=combined&id='.
implode (',', $modules).'&weight_l='.implode (',', $weights).
'&height=230&width=720&period='.$content['period'].'&stacked='.
$graph["stacked"].'&pure=1';
$pdf->ezImage ($image, 0, 470, 'none', 'left');
break;
case 3:
case 'SLA':
doTitle ($pdf, __('S.L.A').': '.$period);
$slas = get_db_all_rows_field_filter ('treport_content_sla_combined',
'id_report_content', $content['id_rc']);
if (sizeof ($slas) == 0) {
$pdf->ezText ("<b>".__('There are no SLAs defined') . " %</b>", 18);
}
$table->data = array ();
$table->head = array (__('Info'),
__('SLA result'));
$sla_failed = false;
foreach ($slas as $sla) {
$data = array ();
$data[0] = __('Agent')." : ".dame_nombre_agente_agentemodulo ($sla['id_agent_module'])."\n";
$data[0] .= __('Module')." : ".dame_nombre_modulo_agentemodulo ($sla['id_agent_module'])."\n";
$data[0] .= __('SLA Max. (value)')." : ".$sla['sla_max']."\n";
$data[0] .= __('SLA Min. (value)')." : ".$sla['sla_min'];
$sla_value = get_agent_module_sla ($sla['id_agent_module'], $content['period'],
$sla['sla_min'], $sla['sla_max']);
if ($sla_value === false) {
$data[1] = __('Unknown');
} else {
if ($sla_value < $sla['sla_limit']) {
$pdf->setColor (0, 1, 0, 0); // Red
$sla_failed = true;
}
$data[1] = format_numeric ($sla_value). " %";
$pdf->setColor (0, 0, 0, 1); // Black
}
array_push ($table->data, $data);
}
$pdf->ezTable ($table->data, $table->head, "", $table_options);
if (! $sla_failed) {
$pdf->ezText ('<b>'.__('ok').'</b>', 8);
} else {
$pdf->ezText ('<b>'.__('Fail').'</b>', 8);
}
unset ($slas);
break;
case 4:
case 'event_report':
doTitle ($pdf, __('Event report').' - '.$period);
$table_events = event_reporting ($report['id_group'], $content['period'], 0, true);
$pdf->ezTable ($table_events->data, $table_events->head,
"", $table_options);
break;
case 5:
case 'alert_report':
$alerts = get_alerts_in_group ($report['id_group']);
$alerts_fired = get_alerts_fired ($alerts, $content['period']);
doTitle ($pdf, __('Alert report').': '.$group_name.
' - '.$period);
$fired_percentage = round (sizeof ($alerts_fired) / sizeof ($alerts) * 100, 2);
$not_fired_percentage = 100 - $fired_percentage;
$image = 'http://'.$_SERVER['HTTP_HOST'].$config["homeurl"].
'/reporting/fgraph.php?PHPSESSID='.$session_id.
'&tipo=alerts_fired_pipe&height=150&width=280&fired='.
$fired_percentage.'&not_fired='.$not_fired_percentage;
$pdf->ezImage ($image, 0, 150, 'none', 'left');
$pdf->ezText ('<b>'.__('Alerts fired').': '.sizeof ($alerts_fired).'</b>', 8);
$pdf->ezText ('<b>'.__('Total alerts monitored').': '.sizeof ($alerts).'</b>', 8);
$pdf->ezText ("\n", 8);
$table_alerts = get_fired_alerts_reporting_table ($alerts_fired);
$pdf->ezTable ($table_alerts->data, $table_alerts->head,
"", $table_options);
unset ($alerts);
unset ($alerts_fired);
break;
case 6:
case 'monitor_report':
$value = get_agent_module_sla ($content["id_agent_module"], $content['period'], 1, 1);
doTitle ($pdf, __('Monitor report').': '.$agent_name.' - '.$module_name.
' - '.$period);
$pdf->setColor (0, 0.9, 0, 0); // Red
$pdf->ezText ('<b>'.__('Up').': '.format_for_graph ($value, 2) . " %</b>", 18);
$pdf->setColor (0.9, 0, 0, 1); // Grey
$pdf->ezText ('<b>'.__('Down').': '.format_numeric (100 - $value, 2) . " %</b>", 18);
$pdf->setColor (0, 0, 0, 1); // Black
break;
case 7:
case 'avg_value':
$value = get_agent_module_value_average ($content["id_agent_module"], $content['period']);
doTitle ($pdf, __('Avg. Value').': '.$agent_name.' - '.
$module_name.' - '.$period);
$pdf->ezText ("<b>".format_for_graph ($value, 2)."</b>", 18);
break;
case 8:
case 'max_value':
$value = get_agent_module_value_max ($content["id_agent_module"], $content['period']);
doTitle ($pdf, __('Max. Value').': '.$agent_name.
' - '.$module_name.' - '.$period);
$pdf->ezText ("<b>".format_for_graph ($value, 2)."</b>", 18);
break;
case 9:
case 'min_value':
$value = get_agent_module_value_min ($content["id_agent_module"], $content['period']);
doTitle ($pdf, __('Min. Value').': '.$agent_name.
' - '.$module_name.' - '.$period);
$pdf->ezText ("<b>".format_for_graph ($value, 2)."</b>", 18);
break;
case 10:
case 'sumatory':
$value = get_agent_module_value_sumatory ($content["id_agent_module"], $content['period']);
doTitle ($pdf, __('Sumatory').': '.$agent_name.
' - '.$module_name.' - '.$period);
$pdf->ezText ("<b>".format_for_graph ($value, 2)."</b>", 18);
break;
case 11:
case 'general_group_report':
doTitle ($pdf, __('Group').': '.$group_name);
$pdf->ezText ("<b>".__('Agents in group').': '.sizeof ($agents)."</b>", 12);
break;
case 12:
case 'monitor_health':
$monitors = get_monitors_in_group ($report['id_group']);
$monitors_down = get_monitors_down ($monitors, $content['period']);
doTitle ($pdf, __('Monitor health').': '.
$group_name. ' - '.$period);
$down_percentage = round (sizeof ($monitors_down) / sizeof ($monitors) * 100, 2);
$not_down_percentage = 100 - $down_percentage;
$image = 'http://'.$_SERVER['HTTP_HOST'].$config["homeurl"].
'/reporting/fgraph.php?PHPSESSID='.$session_id.
'&tipo=monitors_health_pipe&height=150&width=280&down='.
$down_percentage.'&not_down='.$not_down_percentage;
$pdf->ezImage ($image, 0, 150, 'none', 'left');
$pdf->ezText ("\n", 4);
$pdf->ezText ('<b>'.__('Total monitors').': '.sizeof ($monitors).'</b>', 8);
$pdf->ezText ('<b>'.__('Monitors down on period').': '.sizeof ($monitors_down).'</b>', 8);
$pdf->ezText ("\n", 8);
$table_monitors = get_monitors_down_reporting_table ($monitors_down);
$pdf->ezTable ($table_monitors->data, $table_monitors->head,
"", $table_options);
unset ($monitors);
unset ($monitors_down);
break;
case 13:
case 'agents_detailed':
doTitle ($pdf, __('Agents detailed view').': '.
$group_name.' '.__('Group'));
foreach ($agents as $agent) {
$pdf->ezText ("<b>".$agent['nombre']."</b>", 18);
$table = get_agent_modules_reporting_table ($agent['id_agente'], $content['period']);
$pdf->ezText ("<b>".__('Modules')."</b>", 12);
$pdf->ezText ("\n", 3);
$pdf->ezTable ($table->data, array (__('Name')), "", $table_options);
$table = get_agent_alerts_reporting_table ($agent['id_agente'], $content['period']);
if (sizeof ($table->data)) {
$pdf->ezText ("<b>".__('Alerts')."</b>", 12);
$pdf->ezText ("\n", 3);
$pdf->ezTable ($table->data, $table->head, "", $table_options);
}
$table = get_agent_monitors_reporting_table ($agent['id_agente'], $content['period']);
if (sizeof ($table->data)) {
$pdf->ezText ("<b>".__('Monitors')."</b>", 12);
$pdf->ezText ("\n", 3);
$pdf->ezTable ($table->data, $table->head, "", $table_options);
}
}
break;
}
$pdf->ezText ("\n", 8);
}
// End report
doPageNumbering ($pdf);
$pdf->ezStream ();
}
?>

View File

@ -320,10 +320,10 @@ function install_step3() {
value='/var/www/pandora_console/'>
<div>Full local URL to Pandora FMS Console<br>
<span class='f9b'>For example http://localhost/pandora_console</span>
<span class='f9b'>For example '/pandora_console'</span>
</div>
<input class='login' type='text' name='url' style='width: 250px;'
value='http://localhost/pandora_console'>
value='/pandora_console'>
<div align='right'>
<input type='image' src='images/arrow_next.png' value='Step #4' id='step4'>

View File

@ -116,7 +116,7 @@ if ($ag_group > 1){
ORDER BY nombre, id_grupo LIMIT %d,%d",
$search_sql, $offset,
$config["block_size"]);
$sql2 = sprint ("SELECT COUNT(id_agente)
$sql2 = sprintf ("SELECT COUNT(id_agente)
FROM tagente WHERE disabled = 0 %s
ORDER BY nombre, id_grupo",
$search_sql);
@ -142,6 +142,7 @@ if ($ag_group > 1){
}
}
$result2 = mysql_query ($sql2);
$row2 = mysql_fetch_array ($result2);
$total_events = $row2[0];

View File

@ -35,7 +35,7 @@ $result=mysql_query($sql);
//$url = "https://".$_SERVER['HTTP_HOST']."/pandora_console";
$url = $config["homeurl"];
$url = 'http://'.$_SERVER['HTTP_HOST'].$config["homeurl"];
$rss_feed = '<?xml version="1.0" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel>
<title>Pandora RSS Feed</title>