<?php /** * Generate charts with given parameters. * * @category ChartGenerator. * @package Pandora FMS * @subpackage Opensource. * @version 1.0.0 * @license See below * * ______ ___ _______ _______ ________ * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| * | __/| _ | | _ || _ | _| _ | | ___| |__ | * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| * * ============================================================================ * Copyright (c) 2005-2021 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. require_once 'config.php'; 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'; 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'; $data_raw = get_parameter('data'); $data_decoded = json_decode(base64_decode($data_raw), true); if (json_last_error() === JSON_ERROR_NONE) { $data = urldecode($data_decoded['data']); $session_id = urldecode($data_decoded['session_id']); $data_combined = urldecode($data_decoded['data_combined']); $data_module_list = urldecode($data_decoded['data_module_list']); $type_graph_pdf = urldecode($data_decoded['type_graph_pdf']); $viewport_width = urldecode($data_decoded['viewport_width']); } /** * 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 } // Initialize session. global $config; // Try to initialize session using existing php session id. $user = new PandoraFMS\User(['phpsessionid' => $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> <script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script> <script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script> </head> <body> <h1>Access is not granted</h1> <?php echoPhantomCallback(); ?> </body> </html> <?php exit; } // Access granted. $params = json_decode($data, true); // Metaconsole connection to the node. $server_id = $params['server_id']; if (is_metaconsole() === true && empty($server_id) === false) { $server = metaconsole_get_connection_by_id($server_id); // Error connecting. if (metaconsole_connect($server) !== NOERR) { ?> <html> <body> <?php ui_print_error_message( __('There was a problem connecting with the node') ); echoPhantomCallback(); ?> </body> </html> <?php exit; } } $user_language = get_user_language($config['id_user']); if (file_exists('languages/'.$user_language.'.mo') === true) { $cfr = new CachedFileReader('languages/'.$user_language.'.mo'); $l10n = new gettext_reader($cfr); $l10n->load_tables(); } ?> <!DOCTYPE> <html> <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" /> <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> <script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script> <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> <body style='background-color: <?php echo $params['backgroundColor']; ?>;'> <?php $params['only_image'] = false; $params['menu'] = false; $params_combined = json_decode($data_combined, true); $module_list = json_decode($data_module_list, true); if (isset($params['vconsole']) === false || $params['vconsole'] === false) { if ((int) $viewport_width > 0) { $params['width'] = (int) $viewport_width; } if ((isset($params['width']) === false || ($params['width'] <= 0)) ) { if ((int) $params['width'] <= 0) { $params['width'] = 650; } if ((int) $params['landscape'] === 1) { $params['width'] = 850; } if ($type_graph_pdf === 'slicebar') { $params['width'] = 100; $params['height'] = 70; } } } echo '<div>'; switch ($type_graph_pdf) { case 'combined': $params['pdf'] = true; echo graphic_combined_module( $module_list, $params, $params_combined ); break; case 'sparse': $params['pdf'] = true; 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); 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['sizeForTicks'], $params['show'], $params['date_to'], $params['server_id'] ); break; default: // Code... break; } echo '</div>'; echoPhantomCallback(); ?> </body> </html>