2018-05-28 17:47:40 +02:00
|
|
|
<?php
|
2019-10-25 12:51:33 +02:00
|
|
|
/**
|
|
|
|
* Generate charts with given parameters.
|
|
|
|
*
|
|
|
|
* @category ChartGenerator.
|
|
|
|
* @package Pandora FMS
|
|
|
|
* @subpackage Opensource.
|
|
|
|
* @version 1.0.0
|
|
|
|
* @license See below
|
|
|
|
*
|
|
|
|
* ______ ___ _______ _______ ________
|
|
|
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
|
|
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
|
|
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
|
|
|
*
|
|
|
|
* ============================================================================
|
|
|
|
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
|
|
|
|
* Please see http://pandorafms.org for full contribution list
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* 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.
|
|
|
|
* ============================================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Begin.
|
2019-01-30 16:18:44 +01:00
|
|
|
require_once 'config.php';
|
2019-10-21 21:09:03 +02:00
|
|
|
|
|
|
|
require_once __DIR__.'/config.php';
|
|
|
|
require_once __DIR__.'/functions.php';
|
|
|
|
require_once __DIR__.'/functions_db.php';
|
|
|
|
require_once __DIR__.'/auth/mysql.php';
|
|
|
|
require_once $config['homedir'].'/include/lib/User.php';
|
2019-01-30 16:18:44 +01:00
|
|
|
require_once $config['homedir'].'/include/functions_reporting.php';
|
|
|
|
require_once $config['homedir'].'/include/functions_graph.php';
|
|
|
|
require_once $config['homedir'].'/include/functions_custom_graphs.php';
|
|
|
|
require_once $config['homedir'].'/include/functions_modules.php';
|
|
|
|
require_once $config['homedir'].'/include/functions_agents.php';
|
|
|
|
require_once $config['homedir'].'/include/functions_tags.php';
|
2018-05-28 17:47:40 +02:00
|
|
|
|
2018-06-08 08:58:18 +02:00
|
|
|
|
2019-10-25 12:51:33 +02:00
|
|
|
/**
|
|
|
|
* Echo to stdout a PhantomJS callback call.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
function echoPhantomCallback()
|
|
|
|
{
|
|
|
|
?>
|
|
|
|
<script type="text/javascript">
|
|
|
|
$('document').ready(function () {
|
|
|
|
setTimeout(function () {
|
|
|
|
try {
|
|
|
|
var status = window.callPhantom({ status: "loaded" });
|
|
|
|
} catch (error) {
|
|
|
|
console.log("CALLBACK ERROR", error.message)
|
|
|
|
}
|
|
|
|
}, 100);
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
<?php
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-10-21 21:09:03 +02:00
|
|
|
// Initialize session.
|
2018-06-08 08:58:18 +02:00
|
|
|
global $config;
|
2019-10-21 21:09:03 +02:00
|
|
|
|
|
|
|
// Try to initialize session using existing php session id.
|
|
|
|
$user = new PandoraFMS\User(['phpsessionid' => $_REQUEST['session_id']]);
|
|
|
|
if (check_login(false) === false) {
|
|
|
|
// Error handler.
|
|
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Access denied</title>
|
|
|
|
<link rel="stylesheet" href="styles/pandora.css" type="text/css" />
|
|
|
|
<link rel="stylesheet" href="styles/pandora_minimal.css" type="text/css" />
|
|
|
|
<link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" />
|
|
|
|
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
|
|
|
|
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
|
2019-11-21 16:42:39 +01:00
|
|
|
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
|
2019-10-21 21:09:03 +02:00
|
|
|
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>Access is not granted</h1>
|
2019-10-25 12:51:33 +02:00
|
|
|
<?php echoPhantomCallback(); ?>
|
2019-10-21 21:09:03 +02:00
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
|
|
|
|
<?php
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Access granted.
|
2018-06-19 19:07:36 +02:00
|
|
|
$params = json_decode($_REQUEST['data'], true);
|
2018-06-20 11:31:43 +02:00
|
|
|
|
2019-10-21 21:09:03 +02:00
|
|
|
// Metaconsole connection to the node.
|
2018-06-14 19:19:58 +02:00
|
|
|
$server_id = $params['server_id'];
|
2018-05-28 17:47:40 +02:00
|
|
|
|
2019-12-13 16:01:24 +01:00
|
|
|
if (is_metaconsole() && !empty($server_id)) {
|
2019-01-30 16:18:44 +01:00
|
|
|
$server = metaconsole_get_connection_by_id($server_id);
|
2019-10-21 21:09:03 +02:00
|
|
|
// Error connecting.
|
2019-01-30 16:18:44 +01:00
|
|
|
if (metaconsole_connect($server) !== NOERR) {
|
2019-10-25 12:51:33 +02:00
|
|
|
?>
|
|
|
|
<html>
|
|
|
|
<body>
|
|
|
|
<?php
|
|
|
|
ui_print_error_message(
|
|
|
|
__('There was a problem connecting with the node')
|
|
|
|
);
|
|
|
|
echoPhantomCallback();
|
|
|
|
?>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
<?php
|
2019-01-30 16:18:44 +01:00
|
|
|
exit;
|
|
|
|
}
|
2018-05-28 17:47:40 +02:00
|
|
|
}
|
2018-06-14 19:19:58 +02:00
|
|
|
|
2018-05-28 17:47:40 +02:00
|
|
|
|
|
|
|
$user_language = get_user_language($config['id_user']);
|
2019-10-21 21:09:03 +02:00
|
|
|
if (file_exists('languages/'.$user_language.'.mo') === true) {
|
|
|
|
$cfr = new CachedFileReader('languages/'.$user_language.'.mo');
|
|
|
|
$l10n = new gettext_reader($cfr);
|
2019-01-30 16:18:44 +01:00
|
|
|
$l10n->load_tables();
|
2018-05-28 17:47:40 +02:00
|
|
|
}
|
2018-06-08 08:58:18 +02:00
|
|
|
|
2018-05-28 17:47:40 +02:00
|
|
|
?>
|
|
|
|
<!DOCTYPE>
|
|
|
|
<html>
|
2019-01-30 16:18:44 +01:00
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Pandora FMS Graph (<?php echo agents_get_alias($agent_id).' - '.$interface_name; ?>)</title>
|
|
|
|
<link rel="stylesheet" href="styles/pandora.css" type="text/css" />
|
|
|
|
<link rel="stylesheet" href="styles/pandora_minimal.css" type="text/css" />
|
2019-02-05 09:23:53 +01:00
|
|
|
<link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" />
|
2019-06-03 11:55:56 +02:00
|
|
|
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
|
2019-01-30 16:18:44 +01:00
|
|
|
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
|
2019-11-21 16:42:39 +01:00
|
|
|
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
|
2019-01-30 16:18:44 +01:00
|
|
|
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
|
|
|
|
<script language="javascript" type='text/javascript' src='javascript/jquery.pandora.js'></script>
|
|
|
|
<script language="javascript" type='text/javascript' src='javascript/jquery-ui.min.js'></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.min.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.time.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.pie.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.crosshair.min.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.stack.min.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.selection.min.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.resize.min.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.threshold.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.threshold.multiple.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.symbol.min.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.exportdata.pandora.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.axislabels.js"></script>
|
|
|
|
<script language="javascript" type="text/javascript" src="graphs/flot/pandora.flot.js"></script>
|
|
|
|
</head>
|
2020-01-13 13:31:23 +01:00
|
|
|
<body style='background-color: <?php echo $params['backgroundColor']; ?>;'>
|
2019-01-30 16:18:44 +01:00
|
|
|
<?php
|
|
|
|
$params['only_image'] = false;
|
2019-10-25 12:51:33 +02:00
|
|
|
$params['menu'] = false;
|
2019-01-30 16:18:44 +01:00
|
|
|
|
2019-12-11 15:07:38 +01:00
|
|
|
$params_combined = json_decode($_REQUEST['data_combined'], true);
|
|
|
|
$module_list = json_decode($_REQUEST['data_module_list'], true);
|
|
|
|
$type_graph_pdf = $_REQUEST['type_graph_pdf'];
|
|
|
|
|
2020-01-13 13:31:23 +01:00
|
|
|
if ($params['vconsole'] === false) {
|
|
|
|
$params['width'] = (int) $_REQUEST['viewport_width'];
|
|
|
|
if ((isset($params['width']) === false
|
|
|
|
|| ($params['width'] <= 0))
|
|
|
|
) {
|
|
|
|
$params['width'] = 650;
|
|
|
|
if ((int) $params['landscape'] === 1) {
|
|
|
|
$params['width'] = 850;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($type_graph_pdf === 'slicebar') {
|
|
|
|
$params['width'] = 150;
|
|
|
|
$params['height'] = 70;
|
|
|
|
}
|
2019-12-11 15:07:38 +01:00
|
|
|
}
|
2019-01-30 16:18:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
echo '<div>';
|
|
|
|
switch ($type_graph_pdf) {
|
|
|
|
case 'combined':
|
|
|
|
echo graphic_combined_module(
|
|
|
|
$module_list,
|
|
|
|
$params,
|
|
|
|
$params_combined
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'sparse':
|
|
|
|
echo grafico_modulo_sparse($params);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'pie_chart':
|
|
|
|
echo flot_pie_chart(
|
|
|
|
$params['values'],
|
|
|
|
$params['keys'],
|
|
|
|
$params['width'],
|
|
|
|
$params['height'],
|
|
|
|
$params['water_mark_url'],
|
|
|
|
$params['font'],
|
|
|
|
$config['font_size'],
|
|
|
|
$params['legend_position'],
|
|
|
|
$params['colors'],
|
|
|
|
$params['hide_labels']
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'vbar':
|
|
|
|
echo flot_vcolumn_chart(
|
|
|
|
$params['chart_data'],
|
|
|
|
$params['width'],
|
|
|
|
$params['height'],
|
|
|
|
$params['color'],
|
|
|
|
$params['legend'],
|
|
|
|
$params['long_index'],
|
|
|
|
$params['homeurl'],
|
|
|
|
$params['unit'],
|
|
|
|
$params['water_mark_url'],
|
|
|
|
$params['homedir'],
|
|
|
|
$params['font'],
|
|
|
|
$config['font_size'],
|
|
|
|
$params['from_ux'],
|
|
|
|
$params['from_wux'],
|
|
|
|
$params['backgroundColor'],
|
|
|
|
$params['tick_color']
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'hbar':
|
|
|
|
echo flot_hcolumn_chart(
|
|
|
|
$params['chart_data'],
|
|
|
|
$params['width'],
|
|
|
|
$params['height'],
|
|
|
|
$params['water_mark_url'],
|
|
|
|
$params['font'],
|
|
|
|
$config['font_size'],
|
|
|
|
$params['backgroundColor'],
|
|
|
|
$params['tick_color'],
|
|
|
|
$params['val_min'],
|
|
|
|
$params['val_max']
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'ring_graph':
|
|
|
|
echo flot_custom_pie_chart(
|
|
|
|
$params['chart_data'],
|
|
|
|
$params['width'],
|
|
|
|
$params['height'],
|
|
|
|
$params['colors'],
|
|
|
|
$params['module_name_list'],
|
|
|
|
$params['long_index'],
|
|
|
|
$params['no_data'],
|
|
|
|
false,
|
|
|
|
'',
|
|
|
|
$params['water_mark'],
|
|
|
|
$params['font'],
|
|
|
|
$config['font_size'],
|
|
|
|
$params['unit'],
|
|
|
|
$params['ttl'],
|
|
|
|
$params['homeurl'],
|
|
|
|
$params['background_color'],
|
|
|
|
$params['legend_position'],
|
|
|
|
$params['background_color']
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'slicebar':
|
|
|
|
echo flot_slicesbar_graph(
|
|
|
|
$params['graph_data'],
|
|
|
|
$params['period'],
|
|
|
|
$params['width'],
|
|
|
|
$params['height'],
|
|
|
|
$params['legend'],
|
|
|
|
$params['colors'],
|
|
|
|
$params['fontpath'],
|
|
|
|
$params['round_corner'],
|
|
|
|
$params['homeurl'],
|
|
|
|
$params['watermark'],
|
|
|
|
$params['adapt_key'],
|
|
|
|
$params['stat_winalse'],
|
|
|
|
$params['id_agent'],
|
|
|
|
$params['full_legend_daterray'],
|
|
|
|
$params['not_interactive'],
|
|
|
|
$params['ttl'],
|
|
|
|
$params['widgets'],
|
2020-01-27 11:52:13 +01:00
|
|
|
$params['show'],
|
|
|
|
$params['date_to']
|
2019-01-30 16:18:44 +01:00
|
|
|
);
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
2019-10-21 21:09:03 +02:00
|
|
|
// Code...
|
2019-01-30 16:18:44 +01:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
echo '</div>';
|
2019-10-25 12:51:33 +02:00
|
|
|
echoPhantomCallback();
|
2019-01-30 16:18:44 +01:00
|
|
|
?>
|
|
|
|
</body>
|
2018-06-14 16:47:23 +02:00
|
|
|
</html>
|