Merge remote-tracking branch 'origin/develop' into 1827-Graficas_TIP_eje_x_no_mantiene_ratio

Conflicts:
	pandora_console/include/functions_graph.php
	pandora_console/include/graphs/fgraph.php
This commit is contained in:
daniel 2018-06-06 11:57:02 +02:00
commit badfd83b0d
51 changed files with 1086 additions and 294 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.723-180601
Version: 7.0NG.723-180606
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.723-180601"
pandora_version="7.0NG.723-180606"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -42,7 +42,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.723';
use constant AGENT_BUILD => '180601';
use constant AGENT_BUILD => '180606';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.723
%define release 180601
%define release 180606
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.723
%define release 180601
%define release 180606
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.723"
PI_BUILD="180601"
PI_BUILD="180606"
OS_NAME=`uname -s`
FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{180601}
{180606}
ViewReadme
{Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.723(Build 180601)")
#define PANDORA_VERSION ("7.0NG.723(Build 180606)")
string pandora_path;
string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.723(Build 180601))"
VALUE "ProductVersion", "(7.0NG.723(Build 180606))"
VALUE "FileVersion", "1.0.0.0"
END
END

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.723-180601
Version: 7.0NG.723-180606
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.723-180601"
pandora_version="7.0NG.723-180606"
package_pear=0
package_pandora=1

View File

@ -247,12 +247,10 @@ function output_xml_visual_console($id) {
echo "<other_id>" . $item['id'] . "</other_id>\n"; //OLD ID USE FOR parent item
$agent = '';
if ($item['id_agent'] != 0) {
$agent = db_get_value ("alias","tagente","id_agente",$item['id_agent']);
$agent = db_get_value ("nombre","tagente","id_agente",$item['id_agent']);
}
if (!empty($item['label'])) {
$aux = explode("-",$item['label']);
$label = $agent .' -'. $aux[1];
echo "<label><![CDATA[" . io_safe_output($label) . "]]></label>\n";
echo "<label><![CDATA[" . io_safe_output($item['label']) . "]]></label>\n";
}
echo "<x>" . $item['pos_x'] . "</x>\n";
echo "<y>" . $item['pos_y'] . "</y>\n";
@ -273,7 +271,7 @@ function output_xml_visual_console($id) {
if ($item['id_agente_modulo'] != 0) {
$module = db_get_value('nombre', 'tagente_modulo', 'id_agente_modulo', $item['id_agente_modulo']);
$id_agent = db_get_value('id_agente', 'tagente_modulo', 'id_agente_modulo', $item['id_agente_modulo']);
$agent = db_get_value ("alias","tagente","id_agente",$id_agent);
$agent = db_get_value ("nombre","tagente","id_agente",$id_agent);
echo "<module><![CDATA[" . io_safe_output($module) . "]]></module>\n";
}
@ -287,6 +285,27 @@ function output_xml_visual_console($id) {
if ($item['parent_item'] != 0) {
echo "<parent_item>" . $item['parent_item'] . "</parent_item>\n";
}
if (!empty($item['clock_animation'])) {
echo "<clock_animation>" . $item['clock_animation'] . "</clock_animation>\n";
}
if (!empty($item['fill_color'])) {
echo "<fill_color>" . $item['fill_color'] . "</fill_color>\n";
}
if (!empty($item['type_graph'])) {
echo "<type_graph>" . $item['type_graph'] . "</type_graph>\n";
}
if (!empty($item['time_format'])) {
echo "<time_format>" . $item['time_format'] . "</time_format>\n";
}
if (!empty($item['timezone'])) {
echo "<timezone>" . $item['timezone'] . "</timezone>\n";
}
if (!empty($item['border_width'])) {
echo "<border_width>" . $item['border_width'] . "</border_width>\n";
}
if (!empty($item['border_color'])) {
echo "<border_color>" . $item['border_color'] . "</border_color>\n";
}
echo "</item>\n";
}
echo "</visual_map>\n";

View File

@ -455,13 +455,13 @@ function process_upload_xml_visualmap($xml, $filter_group = 0) {
$agents_in_item = array();
foreach ($agents as $id => $agent) {
if ($regular_expresion) {
if ((bool)preg_match("/" . $agent_clean . "/", io_safe_input($agent))) {
if ((bool)preg_match("/" . $agent_clean . "/", io_safe_output($agent))) {
$agents_in_item[$id]['name'] = $agent;
$no_agents = false;
}
}
else {
if ($agent_clean == io_safe_input($agent)) {
if ($agent_clean == io_safe_output($agent)) {
$agents_in_item[$id]['name'] = $agent;
$no_agents = false;
break;
@ -482,13 +482,13 @@ function process_upload_xml_visualmap($xml, $filter_group = 0) {
$modules_in_item = array();
foreach ($modules as $module) {
if ($regular_expresion) {
if ((bool)preg_match("/" . $module_clean . "/", io_safe_input($module['nombre']))) {
if ((bool)preg_match("/" . $module_clean . "/", io_safe_output($module['nombre']))) {
$modules_in_item[$module['id_agente_modulo']] = $module['nombre'];
$no_modules = false;
}
}
else {
if ($module_clean == io_safe_input($module['nombre'])) {
if ($module_clean == io_safe_output($module['nombre'])) {
$modules_in_item[$module['id_agente_modulo']] = $module['nombre'];
$no_modules = false;
break;
@ -527,6 +527,34 @@ function process_upload_xml_visualmap($xml, $filter_group = 0) {
$values['id_layout_linked'] = (string)$item->map_linked;
if (isset($item->type))
$values['type'] = (string)$item->type;
if (isset($item->clock_animation)) {
$values['clock_animation'] = (string)$item->clock_animation;
}
if (isset($item->fill_color)) {
$values['fill_color'] = (string)$item->fill_color;
}
if (isset($item->type_graph)) {
$values['type_graph'] = (string)$item->type_graph;
}
if (isset($item->time_format)) {
$values['time_format'] = (string)$item->time_format;
}
if (isset($item->timezone)) {
$values['timezone'] = (string)$item->timezone;
}
if (isset($item->border_width)) {
$values['border_width'] = (string)$item->border_width;
}
if (isset($item->border_color)) {
$values['border_color'] = (string)$item->border_color;
}
if ($no_agents) {
$id_item = db_process_sql_insert('tlayout_data', $values);

View File

@ -119,6 +119,17 @@ $(document).ready( function() {
$('div#menu')
.css('position', 'fixed')
.css('z-index', '9000')
.css('top','80px')
}else{
$('div#menu')
.css('z-index', '9000')
}
if (fixed_header) {
$('div#menu')
.css('position', 'fixed')
.css('z-index', '9000')
.css('top','80px')
$('#menu_tab_frame_view').css('margin-top','20px')
}
//Daniel maya 02/06/2016 Fixed menu position--END
/*
@ -244,6 +255,7 @@ $(document).ready( function() {
openTimeMenu = new Date().getTime();
$('#menu').css('width', '145px');
$('#menu').css('position', 'block');
$('div#menu').css('top', '80px');
$('li.menu_icon').addClass( " no_hidden_menu" );
$('ul.submenu').css('left', '144px');

View File

@ -106,6 +106,7 @@ if (is_ajax ()) {
$id_agent = get_parameter('id_agent');
$groups_to_add = get_parameter('groups');
if (enterprise_installed()) {
if (empty($groups_to_add)) return 0;
enterprise_include('include/functions_agents.php');
$ret = enterprise_hook(
'agents_update_secondary_groups',

View File

@ -392,7 +392,7 @@ if ($id_agente) {
$grouptab['active'] = false;
$gistab = "";
$gistab = array();
/* GIS tab */
if ($config['activate_gis']) {
@ -1265,7 +1265,6 @@ if ($update_module || $create_module) {
if ($update_module) {
$id_agent_module = (int) get_parameter ('id_agent_module');
$values = array (
'id_agente_modulo' => $id_agent_module,
'descripcion' => $description,
@ -1896,10 +1895,81 @@ switch ($tab) {
var wizard_tab_showed = 0;
$(document).ready (function () {
$('body').append('<div id="dialog"></div>');
// Control the tab and subtab hover. When mouse leave one,
// check if is hover the other before hide the subtab
$('.agent_wizard_tab').hover(agent_wizard_tab_show, agent_wizard_tab_hide);
$('#module_form').submit(function() {
var aget_id_os = '<?php echo agents_get_os(modules_get_agentmodule_agent(get_parameter("id_agent_module"))); ?>';
if('<?php echo modules_get_agentmodule_name(get_parameter("id_agent_module")); ?>' != $('#text-name').val() &&
'<?php echo agents_get_os(modules_get_agentmodule_agent(get_parameter("id_agent_module"))); ?>' == 19){
event.preventDefault();
$("#dialog").dialog({
resizable: true,
draggable: true,
modal: true,
height: 220,
width: 600,
title: 'Changing the module name of a satellite agent',
open: function(){
$('#dialog').html('<br><img src="images/icono-warning-triangulo.png" style="float:left;margin-left:25px;"><p style="float:right;font-style:nunito;font-size:11pt;margin-right:50px;"><span style="font-weight:bold;font-size:12pt;">Warning</span> <br>The names of the modules of a satellite should not be <br> altered manually. Unless you are absolutely certain of <br> the process, do not alter these names.</p>');
},
buttons: [{
text: "Ok",
click: function() {
$('#module_form').submit();
}
},
{
text: "Cancel",
click: function() {
$( this ).dialog( "close" );
return false;
}
}]
});
}
var module_type_snmp = '<?php echo modules_get_agentmodule_type(get_parameter("id_agent_module")); ?>';
if('<?php echo modules_get_agentmodule_name(get_parameter("id_agent_module")); ?>' != $('#text-name').val() && (
module_type_snmp == 15 || module_type_snmp == 16 || module_type_snmp == 17 || module_type_snmp == 18)){
event.preventDefault();
$("#dialog").dialog({
resizable: true,
draggable: true,
modal: true,
height: 260,
width: 600,
title: 'Changing snmp module name',
open: function(){
$('#dialog').html('<br><img src="images/icono-warning-triangulo.png" style="float:left;margin-left:25px;margin-top:30px;"><p style="float:right;font-style:nunito;font-size:11pt;margin-right:50px;"><span style="font-weight:bold;font-size:12pt;">Warning</span> <br> If you change the name of this module, various features <br> associated with this module, such as network maps, <br> interface graphs or other network modules, may no longer <br> work. If you are not completely sure of the process, please <br> do not change the name of the module. </p>');
},
buttons: [{
text: "Ok",
click: function() {
$('#module_form').submit();
}
},
{
text: "Cancel",
click: function() {
$( this ).dialog( "close" );
return false;
}
}]
});
}
});
});
// Set the position and width of the subtab

View File

@ -109,6 +109,7 @@ if (is_ajax()) {
'nombre' => $module_names
);
$module_plugin_macros = db_get_all_rows_filter('tagente_modulo', $filter, $fields);
$module_plugin_macros = io_safe_output($module_plugin_macros);
if (empty($module_plugin_macros)) $module_plugin_macros = array();
$module_plugin_macros = array_reduce($module_plugin_macros, function($carry, $item) {

View File

@ -116,11 +116,8 @@ if ($edit_graph) {
echo ">";
$own_info = get_user_info ($config['id_user']);
if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM"))
$return_all_groups = true;
else
$return_all_groups = false;
$return_all_groups = $own_info['is_admin'] || users_can_manage_group_all("RR");
echo "<td><b>".__('Group')."</b></td><td>";
if (check_acl ($config['id_user'], 0, "RW"))
echo html_print_select_groups($config['id_user'], 'RW', $return_all_groups, 'graph_id_group', $id_group, '', '', '', true);
@ -170,7 +167,8 @@ $stackeds = array(
CUSTOM_GRAPH_GAUGE => __('Gauge'),
CUSTOM_GRAPH_HBARS => __('Horizontal bars'),
CUSTOM_GRAPH_VBARS => __('Vertical bars'),
CUSTOM_GRAPH_PIE => __('Pie')
CUSTOM_GRAPH_PIE => __('Pie'),
CUSTOM_GRAPH_THERMOMETER => __('Thermometer')
);
html_print_select ($stackeds, 'stacked', $stacked);

View File

@ -23,7 +23,7 @@ check_login ();
$report_r = check_acl ($config['id_user'], 0, "RR");
$report_w = check_acl ($config['id_user'], 0, "RW");
$report_m = check_acl ($config['id_user'], 0, "RM");
$access = ($report_r == true) ? 'RR' : (($report_w == true) ? 'RW' : (($report_m == true) ? 'RM' : 'RR'));
if (!$report_r && !$report_w && !$report_m) {
db_pandora_audit("ACL Violation",
"Trying to access Inventory Module Management");
@ -31,6 +31,9 @@ if (!$report_r && !$report_w && !$report_m) {
return;
}
$access = ($report_r == true) ? 'RR' : (($report_w == true) ? 'RW' : (($report_m == true) ? 'RM' : 'RR'));
$manage_group_all = users_can_manage_group_all($access);
$activeTab = get_parameter('tab', 'main');
$enterpriseEnable = false;
@ -185,20 +188,21 @@ if (!empty ($graphs)) {
$data[2] = $graph["graphs_count"];
$data[3] = ui_print_group_icon($graph['id_group'],true);
if (($report_w || $report_m) && users_can_manage_group_all($access)) {
$data[4] = '';
if (($report_w || $report_m) && $manage_group_all) {
$data[4] = '<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&id='.
$graph['id_graph'].'">'.html_print_image("images/config.png", true).'</a>';
$data[4] .= '&nbsp;';
}
$data[4] .= '&nbsp;';
if ($report_m && $manage_group_all) {
$data[4] .= '<a href="index.php?sec=reporting&sec2=godmode/reporting/graphs&delete_graph=1&id='
.$graph['id_graph'].'" onClick="if (!confirm(\''.__('Are you sure?').'\'))
return false;">' . html_print_image("images/cross.png", true, array('alt' => __('Delete'), 'title' => __('Delete'))) . '</a>' .
html_print_checkbox_extended ('delete_multiple[]', $graph['id_graph'], false, false, '', 'class="check_delete" style="margin-left:2px;"', true);
} else {
if($op_column) $data[4] = '';
}
array_push ($table->data, $data);
}

View File

@ -930,10 +930,10 @@ You can of course remove the warnings, that's why we include the source and do n
$agents = agents_get_group_agents($group);
if ((empty($agents)) || $agents == -1) $agents = array();
$sql_log = 'SELECT source
$sql_log = 'SELECT source AS k, source AS v
FROM tagente,tagent_module_log
WHERE tagente.id_agente = tagent_module_log.id_agent ';
WHERE tagente.id_agente = tagent_module_log.id_agent AND tagente.disabled = 0';
if (!empty($agents)) {
$index = 0;
foreach ($agents as $key => $a) {
@ -947,7 +947,7 @@ You can of course remove the warnings, that's why we include the source and do n
}
$sql_log .= ")";
}
html_print_select_from_sql ($sql_log, 'source', $source, '', __('All'), '', false, false, false);
html_print_select_from_sql ($sql_log, 'source', $source, 'onselect=source_change_agents();', __('All'), '', false, false, false);
?>
</td>
</tr>
@ -1066,9 +1066,15 @@ You can of course remove the warnings, that's why we include the source and do n
<td style="font-weight:bold;"><?php echo __('Agents'); ?></td>
<td>
<?php
$sql_log_report = 'SELECT id_agente, alias
FROM tagente, tagent_module_log
WHERE tagente.id_agente = tagent_module_log.id_agent';
if ($source) {
$sql_log_report = 'SELECT id_agente, alias
FROM tagente, tagent_module_log
WHERE tagente.id_agente = tagent_module_log.id_agent AND tagente.disabled = 0 AND tagent_module_log.source like "'. $source.'"';
} else {
$sql_log_report = 'SELECT id_agente, alias
FROM tagente, tagent_module_log
WHERE tagente.id_agente = tagent_module_log.id_agent AND tagente.disabled = 0';
}
$all_agent_log = db_get_all_rows_sql($sql_log_report);
foreach ($all_agent_log as $key => $value) {
@ -1089,6 +1095,7 @@ You can of course remove the warnings, that's why we include the source and do n
}
}
html_print_select($agents2, 'id_agents2[]', $agents_select, $script = '', "", 0, false, true, true, '', false, "min-width: 180px");
echo "<span id='spinner_hack' style='display:none;'>" . html_print_image('images/spinner.gif', true) . "</span>";
?>
</td>
</tr>
@ -3521,4 +3528,22 @@ function set_last_value_period() {
$("#row_period").show();
}
}
function source_change_agents() {
$("#id_agents2").empty();
$("#spinner_hack").show();
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_agents_source_json" : 1,
"source" : $("#source").val()
},
function (data, status) {
for (var clave in data) {
$("#id_agents2").append('<option value="'+clave+'">'+data[clave]+'</option>');
}
$("#spinner_hack").hide();
},
"json"
);
}
</script>

View File

@ -690,25 +690,18 @@ switch ($action) {
switch ($type_access_selected) {
case 'group_view':
$edit = check_acl($config['id_user'],
$report['id_group'], "RW");
if ($config['id_user'] == $report['id_user'] || is_user_admin ($config["id_user"])) {
$delete = true; //owner can delete
} else {
$delete = false;
}
$edit = check_acl($config['id_user'], $report['id_group'], "RW");
$delete =
$edit ||
is_user_admin ($config["id_user"]) ||
$config['id_user'] == $report['id_user'];
break;
case 'group_edit':
$edit = check_acl($config['id_user'],
$report['id_group_edit'], "RW");
if ($config['id_user'] == $report['id_user'] || is_user_admin ($config["id_user"])) {
$delete = true; //owner can delete
} else {
$delete = check_acl($config['id_user'],
$report['id_group'], "RM");
}
$edit = check_acl($config['id_user'], $report['id_group_edit'], "RW");
$delete =
$edit ||
is_user_admin ($config["id_user"]) ||
$config['id_user'] == $report['id_user'];
break;
case 'user_edit':
if ($config['id_user'] == $report['id_user'] ||

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -22,7 +22,7 @@
/**
* Pandora build version and version
*/
$build_version = 'PC180601';
$build_version = 'PC180606';
$pandora_version = 'v7.0NG.723';
// Do not overwrite default timezone set if defined.

View File

@ -444,6 +444,7 @@ define("CUSTOM_GRAPH_LINE", 2);
define("CUSTOM_GRAPH_STACKED_LINE", 3);
define("CUSTOM_GRAPH_BULLET_CHART", 4);
define("CUSTOM_GRAPH_GAUGE", 5);
define("CUSTOM_GRAPH_THERMOMETER", 10);
define("CUSTOM_GRAPH_HBARS", 6);
define("CUSTOM_GRAPH_VBARS", 7);
define("CUSTOM_GRAPH_PIE", 8);

View File

@ -2434,7 +2434,7 @@ function clear_pandora_error_for_header() {
global $config;
$config["alert_cnt"] = 0;
$_SESSION["alert_msg"] = "";
$_SESSION["alert_msg"] = array();
}
function set_pandora_error_for_header($message, $title = null) {

View File

@ -83,9 +83,6 @@ function agents_create_agent ($name, $id_group, $interval, $ip_address, $values
if (empty ($id_group) && (int)$id_group != 0)
return false;
if (empty ($ip_address))
return false;
// Check interval greater than zero
if ($interval < 0)
$interval = false;
@ -97,16 +94,20 @@ function agents_create_agent ($name, $id_group, $interval, $ip_address, $values
$values['nombre'] = $name;
$values['id_grupo'] = $id_group;
$values['intervalo'] = $interval;
$values['direccion'] = $ip_address;
if (!empty ($ip_address)){
$values['direccion'] = $ip_address;
}
$id_agent = db_process_sql_insert ('tagente', $values);
if ($id_agent === false) {
return false;
}
// Create address for this agent in taddress
agents_add_address ($id_agent, $ip_address);
if (!empty ($ip_address)){
agents_add_address ($id_agent, $ip_address);
}
db_pandora_audit ("Agent management", "New agent '$name' created");

View File

@ -34,6 +34,7 @@ enterprise_include_once ('include/functions_local_components.php');
enterprise_include_once ('include/functions_events.php');
enterprise_include_once ('include/functions_agents.php');
enterprise_include_once ('include/functions_modules.php');
enterprise_include_once ('include/functions_clusters.php');
/**
* Parse the "other" parameter.
@ -8821,6 +8822,40 @@ function api_get_agent_name($id_agent, $trash1, $trash2, $returnType) {
returnData($returnType, $data);
}
/**
* Return the ID or an hash of IDs of the detected given agents
*
* @param array or value $data
*
*
**/
function api_get_agent_id($trash1, $trash2, $data, $returnType) {
$response;
if (is_metaconsole()) {
return;
}
if (empty($returnType)) {
$returnType = "json";
}
$response = array();
if ($data["type"] == "array") {
$response["type"] = "array";
$response["data"] = array();
foreach ($data["data"] as $name) {
$response["data"][$name] = agents_get_agent_id($name, 1);
}
} else {
$response["type"] = "string";
$response["data"] = agents_get_agent_id($data["data"], 1);
}
returnData($returnType, $response);
}
/**
* Agent alias for a given id
*
@ -10204,7 +10239,7 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3) {
db_pandora_audit("Report management", "Fail try to create agent");
returnData('string',
array('type' => 'string', 'data' => (int)((bool)$id_cluster)));
array('type' => 'string', 'data' => (int)$id_cluster));
}
}
@ -10253,7 +10288,7 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3) {
//
if($element["type"] == "AA"){
//
$tcluster_module = db_process_sql_insert('tcluster_item',array('name'=>$element["name"],'id_cluster'=>$element["id_cluster"],'critical_limit'=>$element["critical_limit"],'warning_limit'=>$element["warning_limit"]));
$tcluster_module = db_process_sql_insert('tcluster_item',array('name'=>io_safe_input($element["name"]),'id_cluster'=>$element["id_cluster"],'critical_limit'=>$element["critical_limit"],'warning_limit'=>$element["warning_limit"]));
$id_agent = db_process_sql('select id_agent from tcluster where id = '.$element["id_cluster"]);
@ -10272,7 +10307,7 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3) {
$get_module_interval_value = $get_module_type[0]['module_interval'];
$values_module = array(
'nombre' => $element["name"],
'nombre' => io_safe_input($element["name"]),
'id_modulo' => 0,
'prediction_module' => 6,
'id_agente' => $id_agent[0]['id_agent'],
@ -10624,4 +10659,94 @@ function api_get_cluster_status($id_cluster, $trash1, $trash2, $returnType) {
returnData($returnType, $data);
}
function api_get_cluster_id_by_name($cluster_name, $trash1, $trash2, $returnType) {
if (defined ('METACONSOLE')) {
return;
}
$cluster_name = io_safe_output($cluster_name);
$value = cluster_get_id_by_name($cluster_name);
if ($value === false) {
returnError('id_not_found', $returnType);
}
$data = array('type' => 'string', 'data' => $value);
returnData($returnType, $data);
}
function api_get_agents_id_name_by_cluster_id($cluster_id, $trash1, $trash2, $returnType) {
if (defined ('METACONSOLE')) {
return;
}
$all_agents = cluster_get_agents_id_name_by_cluster_id($cluster_id);
if (count($all_agents) > 0 and $all_agents !== false) {
$data = array('type' => 'array', 'data' => $all_agents);
returnData('json', $data);
}
else {
returnError('error_agents', 'No agents retrieved.');
}
}
function api_get_agents_id_name_by_cluster_name($cluster_name, $trash1, $trash2, $returnType) {
if (defined ('METACONSOLE')) {
return;
}
$all_agents = cluster_get_agents_id_name_by_cluster_name($cluster_name);
if (count($all_agents) > 0 and $all_agents !== false) {
$data = array('type' => 'array', 'data' => $all_agents);
returnData('json', $data);
}
else {
returnError('error_agents', 'No agents retrieved.');
}
}
function api_get_modules_id_name_by_cluster_id ($cluster_id){
if (defined ('METACONSOLE')) {
return;
}
$all_modules = cluster_get_modules_id_name_by_cluster_id($cluster_id);
if (count($all_modules) > 0 and $all_modules !== false) {
$data = array('type' => 'array', 'data' => $all_modules);
returnData('json', $data);
}
else {
returnError('error_agent_modules', 'No modules retrieved.');
}
}
function api_get_modules_id_name_by_cluster_name ($cluster_name){
if (defined ('METACONSOLE')) {
return;
}
$all_modules = cluster_get_modules_id_name_by_cluster_name($cluster_name);
if (count($all_modules) > 0 and $all_modules !== false) {
$data = array('type' => 'array', 'data' => $all_modules);
returnData('json', $data);
}
else {
returnError('error_agent_modules', 'No modules retrieved.');
}
}
?>

View File

@ -1944,6 +1944,94 @@ function graphic_combined_module (
);
}
break;
case CUSTOM_GRAPH_THERMOMETER:
$datelimit = $params['date'] - $params['period'];
$i = 0;
foreach ($module_list as $module_item) {
$automatic_custom_graph_meta = false;
if ($config['metaconsole']) {
// Automatic custom graph from the report template in metaconsole
if (is_array($module_list[$i])) {
$server = metaconsole_get_connection_by_id ($module_item['server']);
metaconsole_connect($server);
$automatic_custom_graph_meta = true;
}
}
if ($automatic_custom_graph_meta)
$module = $module_item['module'];
else
$module = $module_item;
$temp[$module] = modules_get_agentmodule($module);
$query_last_value = sprintf('
SELECT datos
FROM tagente_datos
WHERE id_agente_modulo = %d
AND utimestamp < %d
ORDER BY utimestamp DESC',
$module, $params['date']);
$temp_data = db_get_value_sql($query_last_value);
if ( $temp_data ) {
if (is_numeric($temp_data))
$value = $temp_data;
else
$value = count($value);
}
else {
$value = false;
}
$temp[$module]['label'] = ($labels[$module] != '') ? $labels[$module] : $temp[$module]['nombre'];
$temp[$module]['value'] = $value;
$temp[$module]['label'] = ui_print_truncate_text($temp[$module]['label'],"module_small",false,true,false,"..");
if ($temp[$module]['unit'] == '%') {
$temp[$module]['min'] = 0;
$temp[$module]['max'] = 100;
}
else {
$min = $temp[$module]['min'];
if ($temp[$module]['max'] == 0)
$max = reporting_get_agentmodule_data_max($module,$params['period'],$params['date']);
else
$max = $temp[$module]['max'];
$temp[$module]['min'] = ($min == 0 ) ? 0 : $min;
$temp[$module]['max'] = ($max == 0 ) ? 100 : $max;
}
$temp[$module]['gauge'] = uniqid('gauge_');
if ($config['metaconsole']) {
// Automatic custom graph from the report template in metaconsole
if (is_array($module_list[0])) {
metaconsole_restore_db();
}
}
$i++;
//XXXX
$graph_values = $temp;
return stacked_thermometers(
$flash_charts,
$graph_values,
$width,
$height,
$color,
$module_name_list,
$long_index,
ui_get_full_url("images/image_problem_area_small.png", false, false, false),
"",
"",
$water_mark,
$config['fontpath'],
$fixed_font_size,
"",
$ttl,
$homeurl,
$background_color
);
}
break;
case CUSTOM_GRAPH_PIE:
$total_modules = 0;

View File

@ -393,10 +393,8 @@ function groupview_monitor_alerts ($group_array, $strict_user = false, $id_group
function groupview_monitor_fired_alerts ($group_array, $strict_user = false, $id_group_strict = false) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
}
else if (!is_array ($group_array)) {
$group_array = array($group_array);
@ -405,30 +403,12 @@ function groupview_monitor_fired_alerts ($group_array, $strict_user = false, $id
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
if ($strict_user) {
$group_clause_strict = implode (",", $id_group_strict);
$group_clause_strict = "(" . $group_clause_strict . ")";
if ($group_clause_strict !== '()'){
$sql = "SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause_strict AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo
AND times_fired > 0 ";
}
$count = db_get_sql ($sql);
return $count;
} else {
//TODO REVIEW ORACLE AND POSTGRES
return db_get_sql ("SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo
AND times_fired > 0");
}
return db_get_sql ("SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo
AND times_fired > 0");
}
function groupview_get_groups_list($id_user = false, $user_strict = false, $access = 'AR', $force_group_and_tag = true, $returnAllGroup = false) {
@ -630,150 +610,9 @@ function groupview_get_data ($id_user = false, $user_strict = false, $acltags, $
$list_groups = array();
}
if (is_metaconsole()) { // Agent cache
foreach ($list_groups as $group) {
// If id group is 0 get all accesses groups
$group_id = $group['id_grupo'] == 0
? $user_groups_ids
: $group['id_grupo'];
$group_agents = db_get_row_sql("SELECT SUM(warning_count) AS _monitors_warning_,
SUM(critical_count) AS _monitors_critical_,
SUM(normal_count) AS _monitors_ok_,
SUM(unknown_count) AS _monitors_unknown_,
SUM(notinit_count) AS _monitors_not_init_,
SUM(fired_count) AS _monitors_alerts_fired_,
COUNT(*) AS _total_agents_, id_grupo, intervalo,
ultimo_contacto, disabled
FROM tmetaconsole_agent ta
LEFT JOIN tmetaconsole_agent_secondary_group tasg
ON tasg.id_agent = ta.id_agente
WHERE (
ta.id_grupo IN (" . $group_id . ")
OR tasg.id_group IN (" . $group_id . ")
)
AND disabled = 0");
$list[$group['id_grupo']]['_monitors_critical_'] = (int)$group_agents['_monitors_critical_'];
$list[$group['id_grupo']]['_monitors_warning_'] = (int)$group_agents['_monitors_warning_'];
$list[$group['id_grupo']]['_monitors_unknown_'] = (int)$group_agents['_monitors_unknown_'];
$list[$group['id_grupo']]['_monitors_not_init_'] = (int)$group_agents['_monitors_not_init_'];
$list[$group['id_grupo']]['_monitors_ok_'] = (int)$group_agents['_monitors_ok_'];
$list[$group['id_grupo']]['_monitors_alerts_fired_'] = (int)$group_agents['_monitors_alerts_fired_'];
$list[$group['id_grupo']]['_total_agents_'] = (int)$group_agents['_total_agents_'];
$list[$group['id_grupo']]["_monitor_checks_"] = $list[$group['id_grupo']]["_monitors_not_init_"]
+ $list[$group['id_grupo']]["_monitors_unknown_"]
+ $list[$group['id_grupo']]["_monitors_warning_"]
+ $list[$group['id_grupo']]["_monitors_critical_"]
+ $list[$group['id_grupo']]["_monitors_ok_"];
if ($group['icon'])
$list[$group['id_grupo']]["_iconImg_"] = html_print_image ("images/".$group['icon'].".png", true, array ("style" => 'vertical-align: middle;'));
// Calculate not_normal monitors
$list[$group['id_grupo']]["_monitor_not_normal_"] = $list["_monitor_checks_"] - $list["_monitors_ok_"];
$total_agents = $list[$group['id_grupo']]['_total_agents_'];
if ($total_agents > 0) {
$agents = db_get_all_rows_sql(sprintf ("SELECT warning_count,
critical_count,
normal_count,
unknown_count,
notinit_count,
fired_count,
disabled
FROM tmetaconsole_agent ta
LEFT JOIN tmetaconsole_agent_secondary_group tasg
ON ta.id_agente = tasg.id_agent
WHERE ta.id_grupo IN (%s) OR tasg.id_group IN (%s)",
$group_id, $group_id));
foreach ($agents as $agent) {
if ($agent['critical_count'] > 0) {
$list[$group['id_grupo']]['_agents_critical_'] += 1;
}
else {
if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0)) {
if ($agent['unknown_count'] > 0) {
$list[$group['id_grupo']]['_agents_unknown_'] += 1;
}
}
if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0) && ($agent['unknown_count'] == 0)) {
if ($agent['notinit_count'] > 0) {
$list[$group['id_grupo']]['_agents_not_init_'] += 1;
}
}
}
}
}
}
}
else if (false) { //FIXME: The cached group view is wasted. Avoid to reach this code.
$group_stat = db_get_all_rows_sql ("SELECT
SUM(ta.normal_count) as normal, SUM(ta.critical_count) as critical,
SUM(ta.warning_count) as warning,SUM(ta.unknown_count) as unknown,
SUM(ta.notinit_count) as not_init, SUM(fired_count) as alerts_fired
FROM tagente ta
WHERE id_grupo IN ($user_groups_ids)");
$list['_agents_unknown_'] = $group_stat[0]["unknown"];
$list['_monitors_alerts_fired_'] = $group_stat[0]["alerts_fired"];
$list['_monitors_ok_'] = $group_stat[0]["normal"];
$list['_monitors_warning_'] = $group_stat[0]["warning"];
$list['_monitors_critical_'] = $group_stat[0]["critical"];
$list['_monitors_unknown_'] = $group_stat[0]["unknown"];
$list['_monitors_not_init_'] = $group_stat[0]["not_init"];
$total_agentes = agents_get_agents (false, array('count(*) as total_agents'), $access,false, false);
$list['_total_agents_'] = $total_agentes[0]['total_agents'];
$list["_monitor_alerts_fire_count_"] = $group_stat[0]["alerts_fired"];
$list['_monitors_alerts_'] = groupview_monitor_alerts (explode(',',$user_groups_ids), $user_strict,explode(',',$user_groups_ids));
// Get total count of monitors for this group, except disabled.
$list["_monitor_checks_"] = $list["_monitors_not_init_"] + $list["_monitors_unknown_"] + $list["_monitors_warning_"] + $list["_monitors_critical_"] + $list["_monitors_ok_"];
// Calculate not_normal monitors
$list["_monitor_not_normal_"] = $list["_monitor_checks_"] - $list["_monitors_ok_"];
if ($list["_monitor_not_normal_"] > 0 && $list["_monitor_checks_"] > 0) {
$list["_monitor_health_"] = format_numeric (100 - ($list["_monitor_not_normal_"] / ($list["_monitor_checks_"] / 100)), 1);
}
else {
$list["_monitor_health_"] = 100;
}
if ($list["_monitors_not_init_"] > 0 && $list["_monitor_checks_"] > 0) {
$list["_module_sanity_"] = format_numeric (100 - ($list["_monitors_not_init_"] / ($list["_monitor_checks_"] / 100)), 1);
}
else {
$list["_module_sanity_"] = 100;
}
if (isset($list["_alerts_"])) {
if ($list["_monitors_alerts_fired_"] > 0 && $list["_alerts_"] > 0) {
$list["_alert_level_"] = format_numeric (100 - ($list["_monitors_alerts_fired_"] / ($list["_alerts_"] / 100)), 1);
}
else {
$list["_alert_level_"] = 100;
}
}
else {
$list["_alert_level_"] = 100;
$list["_alerts_"] = 0;
}
$list["_monitor_bad_"] = $list["_monitors_critical_"] + $list["_monitors_warning_"];
if ($list["_monitor_bad_"] > 0 && $list["_monitor_checks_"] > 0) {
$list["_global_health_"] = format_numeric (100 - ($list["_monitor_bad_"] / ($list["_monitor_checks_"] / 100)), 1);
}
else {
$list["_global_health_"] = 100;
}
$list["_server_sanity_"] = format_numeric (100 - $list["_module_sanity_"], 1);
}
else {
if (is_metaconsole() || ($config["realtimestats"] == 0)) { // Agent cache
$list = group_view_get_cache_stats ($list, $list_groups, $user_groups_ids);
} else {
foreach ($list_groups as $group) {
// If id group is 0 get all accesses groups
$group_id = $group['id_grupo'] == 0
@ -954,4 +793,100 @@ function groupview_array_unique_multidim($groups, $key){
return $temp_group;
}
/**
* Get the stats to group view using the cache
*
* @param array Skeleton to fill with the group information
* @param array Groups information
* @param string Groups that user has access separated by commas
*/
function group_view_get_cache_stats ($list, $list_groups, $user_groups_ids) {
$table_agent = 'tagente';
$table_secondary = 'tagent_secondary_group';
// Change the metaconsole tables
if (is_metaconsole()) {
$table_agent = 'tmetaconsole_agent';
$table_secondary = 'tmetaconsole_agent_secondary_group';
}
// Walk for each group
foreach ($list_groups as $group) {
// If id group is 0 get all accesses groups
$group_id = $group['id_grupo'] == 0
? $user_groups_ids
: $group['id_grupo'];
$group_agents = db_get_row_sql("SELECT SUM(warning_count) AS _monitors_warning_,
SUM(critical_count) AS _monitors_critical_,
SUM(normal_count) AS _monitors_ok_,
SUM(unknown_count) AS _monitors_unknown_,
SUM(notinit_count) AS _monitors_not_init_,
SUM(fired_count) AS _monitors_alerts_fired_,
COUNT(*) AS _total_agents_, id_grupo, intervalo,
ultimo_contacto, disabled
FROM $table_agent ta
LEFT JOIN $table_secondary tasg
ON tasg.id_agent = ta.id_agente
WHERE (
ta.id_grupo IN (" . $group_id . ")
OR tasg.id_group IN (" . $group_id . ")
)
AND disabled = 0");
$list[$group['id_grupo']]['_monitors_critical_'] = (int)$group_agents['_monitors_critical_'];
$list[$group['id_grupo']]['_monitors_warning_'] = (int)$group_agents['_monitors_warning_'];
$list[$group['id_grupo']]['_monitors_unknown_'] = (int)$group_agents['_monitors_unknown_'];
$list[$group['id_grupo']]['_monitors_not_init_'] = (int)$group_agents['_monitors_not_init_'];
$list[$group['id_grupo']]['_monitors_ok_'] = (int)$group_agents['_monitors_ok_'];
$list[$group['id_grupo']]['_monitors_alerts_fired_'] = (int)$group_agents['_monitors_alerts_fired_'];
$list[$group['id_grupo']]['_total_agents_'] = (int)$group_agents['_total_agents_'];
$list[$group['id_grupo']]["_monitor_checks_"] = $list[$group['id_grupo']]["_monitors_not_init_"]
+ $list[$group['id_grupo']]["_monitors_unknown_"]
+ $list[$group['id_grupo']]["_monitors_warning_"]
+ $list[$group['id_grupo']]["_monitors_critical_"]
+ $list[$group['id_grupo']]["_monitors_ok_"];
if ($group['icon'])
$list[$group['id_grupo']]["_iconImg_"] = html_print_image ("images/".$group['icon'].".png", true, array ("style" => 'vertical-align: middle;'));
// Calculate not_normal monitors
$list[$group['id_grupo']]["_monitor_not_normal_"] = $list["_monitor_checks_"] - $list["_monitors_ok_"];
$total_agents = $list[$group['id_grupo']]['_total_agents_'];
if ($total_agents > 0) {
$agents = db_get_all_rows_sql(sprintf ("SELECT warning_count,
critical_count,
normal_count,
unknown_count,
notinit_count,
fired_count,
disabled
FROM $table_agent ta
LEFT JOIN $table_secondary tasg
ON ta.id_agente = tasg.id_agent
WHERE ta.id_grupo IN (%s) OR tasg.id_group IN (%s)",
$group_id, $group_id));
foreach ($agents as $agent) {
if ($agent['critical_count'] > 0) {
$list[$group['id_grupo']]['_agents_critical_'] += 1;
}
else {
if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0)) {
if ($agent['unknown_count'] > 0) {
$list[$group['id_grupo']]['_agents_unknown_'] += 1;
}
}
if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0) && ($agent['unknown_count'] == 0)) {
if ($agent['notinit_count'] > 0) {
$list[$group['id_grupo']]['_agents_not_init_'] += 1;
}
}
}
}
}
}
return $list;
}
?>

View File

@ -2712,8 +2712,8 @@ function get_module_realtime_link_graph ($module) {
$params = array(
'graph' => 'snmp_module',
'agent_alias' => modules_get_agentmodule_agent_alias($module['id_agente_modulo']),
'module_name' => $module['nombre'],
'agent_alias' => urlencode(modules_get_agentmodule_agent_alias($module['id_agente_modulo'])),
'module_name' => urlencode($module['nombre']),
'snmp_address' => $module['ip_target'],
'snmp_community' => $module['snmp_community'],
'snmp_oid' => $module['snmp_oid'],

View File

@ -344,7 +344,7 @@ function users_get_groups ($id_user = false, $privilege = "AR", $returnAllGroup
$acl_column = get_acl_column($privilege);
if (array_key_exists($users_group_cache_key, $users_group_cache)) {
if (array_key_exists($users_group_cache_key, $users_group_cache) && $cache) {
return $users_group_cache[$users_group_cache_key];
}

View File

@ -469,7 +469,7 @@ function visual_map_print_item($mode = "read", $layoutData,
}
}
else if ($is_a_link_to_other_visualconsole) {
if (empty($layout_data['id_metaconsole'])) {
if (!is_metaconsole()) {
$url = $config['homeurl'] . "index.php?sec=reporting&amp;sec2=operation/visual_console/render_view&amp;pure=" . $config["pure"] . "&amp;id=" . $layoutData["id_layout_linked"];
}
else {

View File

@ -270,6 +270,33 @@ function stacked_bullet_chart($chart_data, $width, $height,
}
function stacked_thermometers($flash_chart, $chart_data, $width, $height,
$color, $legend, $long_index, $no_data_image, $xaxisname = "",
$yaxisname = "", $water_mark = "", $font = '', $font_size = '',
$unit = '', $ttl = 1, $homeurl = '', $backgroundColor = 'white') {
include_once('functions_d3.php');
setup_watermark($water_mark, $water_mark_file, $water_mark_url);
if (empty($chart_data)) {
return '<img src="' . $no_data_image . '" />';
}
return d3_thermometers(
$chart_data,
$width,
$height,
$color,
$legend,
$homeurl,
$unit,
$font,
$font_size + 2,
$no_data_image
);
}
function stacked_gauge($chart_data, $width, $height,
$color, $legend, $no_data_image, $font = '', $font_size = '',
$unit = '', $homeurl = '') {

View File

@ -285,6 +285,31 @@ function d3_gauges($chart_data, $width, $height, $color, $legend,
return $output;
}
function d3_thermometers($chart_data, $width, $height, $color, $legend,
$homeurl, $unit, $font, $font_size, $no_data_image) {
global $config;
foreach ($chart_data as $key => $value) {
$chart_data[$key]['agent_name'] = agents_get_alias($chart_data[$key]['id_agente']);
$chart_data[$key]['label'] = io_safe_output($chart_data[$key]['label']);
}
if (is_array($chart_data))
$data = json_encode($chart_data);
$output = include_javascript_d3(true);
$count = 0;
$output .= "<div id='thermometers_div' style='float:left; overflow: hidden; margin-left: 10px;'></div>";
$output .= "<script language=\"javascript\" type=\"text/javascript\">
var data = $data;
createthermometers(data, '$width', '$height','$font_size','$no_data_image','$font');
</script>";
return $output;
}
function ux_console_phases_donut ($phases, $id, $return = false) {
global $config;
@ -638,7 +663,6 @@ function print_clock_digital_1 ($time_format, $timezone, $clock_animation,$width
</g>
</g>
</svg>
';

View File

@ -1060,6 +1060,228 @@ function createGauges(data, width, height, font_size, no_data_image, font) {
}
}
function createthermometers(data, width, height, font_size, no_data_image, font) {
for (var variable in data) {
module_data = data[variable];
}
// var svg = d3.select('.databox,.filters td')
var svg = d3.select('#thermometers_div')
.append("svg")
.attr("width", 250)
.attr("height", 400);
var rect = svg.append("rect")
.attr("x", 50)
.attr("y", 50)
.attr("width", 150)
.attr("height", 330)
.attr("fill", "black")
.attr("stroke-width", 5)
.attr("stroke", "rgb(37,133,177)")
.attr("rx", "10")
.attr("ry", "10")
.attr("fill", "rgb(235,235,235)");
var circle = svg.append("circle")
.attr("cx", 130)
.attr("cy", 280)
.attr("r", 12)
.attr("height", 300)
.attr("fill", "rgb(74,185,197)");
var progress_back = svg.append('rect')
.attr('fill', 'rgb(51,51,53)')
.attr('height', 200)
.attr('width', 12)
.attr('x', 123)
.attr('y', 70);
var defs = svg.append("defs");
var gradient = defs.append("linearGradient")
.attr("id", "svgGradient")
.attr("x1", "0%")
.attr("x2", "0%")
.attr("y1", "100%")
.attr("y2", "0%");
gradient.append("stop")
.attr('class', 'start')
.attr("offset", "0%")
.attr("stop-color", "rgb(74,185,197)");
if(parseFloat(module_data.value) >= parseFloat(module_data.min_warning) && parseFloat(module_data.value) < parseFloat(module_data.min_critical)){
gradient.append("stop")
.attr('class', 'end')
.attr("offset", "100%")
.attr("stop-color", "yellow");
}
else if((module_data.min_critical != 0 && module_data.max_critical != 0) && parseFloat(module_data.value) >= parseFloat(module_data.min_critical) && (parseFloat(module_data.value) <= parseFloat(module_data.max_critical) || parseFloat(module_data.max_critical) == 0)){
gradient.append("stop")
.attr('class', 'end')
.attr("offset", "100%")
.attr("stop-color", "red");
}
else{
gradient.append("stop")
.attr('class', 'end')
.attr("offset", "100%")
.attr("stop-color", "rgb(130,185,46)");
}
var progress_front = svg.append('rect')
.attr('fill', 'red')
.attr('height', 0)
.attr('width', 12)
.attr('x', 123)
.attr('y', 270)
.attr("fill", "url(#svgGradient)");
if(module_data.value.toString().indexOf('.') != -1){
if(Math.trunc(module_data.value).toString().length > 1){
module_data.value = Math.trunc(module_data.value);
}
else {
module_data.value = parseFloat(module_data.value).toFixed(2);
}
}
if(module_data.value >= 1000){
module_data.value_label = Math.trunc(module_data.value/1000);
var text = svg.append("text")
.attr("x", 100)
.attr("y", 320)
.style("font-size", "1.5em")
.text(module_data.value_label+"k"+" ["+module_data.unit+"]");
}
else{
var text = svg.append("text")
.attr("x", 100)
.attr("y", 320)
.style("font-size", "1.5em")
.text(module_data.value+" ["+module_data.unit+"]");
}
agent_text = module_data.agent_name;
if(agent_text.length > 12){
agent_text = agent_text.substring(0, 10)+"...";
}
var text = svg.append("text")
.attr("x", 65)
.attr("y", 370)
.style("font-size", "1.5em")
.text(agent_text);
label_text = module_data.label;
if(label_text.length > 12){
label_text = label_text.substring(0, 10)+"...";
}
var text = svg.append("text")
.attr("x", 65)
.attr("y", 350)
.style("font-size", "1.5em")
.text(label_text);
var temp_sum = module_data.max-module_data.min;
var div_sum = (temp_sum/10);
var max_temp = module_data.max;
var min_temp = module_data.min;
var y = 75;
var count = 0;
var startPercent = 0;
var endPercent = module_data.value * 200 / max_temp;
var step = endPercent / 20;
while (max_temp >= min_temp) {
if(count != 9){
if(max_temp.toString().indexOf('.') != -1){
if(Math.trunc(max_temp).toString().length > 1){
max_temp = Math.trunc(max_temp);
}
else {
max_temp = parseFloat(max_temp).toFixed(2);
}
}
if(max_temp >= 1000){
max_temp_label = Math.trunc(max_temp/1000);
var text = svg.append("text")
.attr("x", 160)
.attr("y", y)
.style("font-size", "1.2em")
.text(max_temp_label+'k');
}
else{
var text = svg.append("text")
.attr("x", 160)
.attr("y", y)
.style("font-size", "1.2em")
.text(max_temp);
}
var line = svg.append("line")
.attr("x1", 142)
.attr("y1", y-4)
.attr("x2", 153)
.attr("y2", y-4)
.attr("stroke", "black")
.style("font-size", "1.2em")
.text(max_temp);
y += 20;
max_temp = max_temp-div_sum;
}
if(count==10){
max_temp = module_data.min;
}
count++;
}
function updateProgress(bar_progress) {
var bar_progress = Number(bar_progress);
progress_front.attr('height', (bar_progress));
progress_front.attr('y', (270-bar_progress));
}
var bar_progress = startPercent;
(function loops() {
updateProgress(bar_progress);
if (bar_progress < endPercent) {
bar_progress += step;
setTimeout(loops, 30);
}
else{
delete data[module_data['id_agente_modulo']];
if(Object.keys(data).length > 0){
createthermometers(data, width, height, font_size, no_data_image, font)
}
}
})();
}
function Gauge(placeholderName, configuration, font)
{

View File

@ -71,7 +71,7 @@
<div style='height: 10px'>
<?php
$version = '7.0NG.723';
$build = '180601';
$build = '180606';
$banner = "v$version Build $build";
error_reporting(0);

View File

@ -44,6 +44,7 @@ if (is_ajax ()) {
$get_agentmodule_status_tooltip = (bool) get_parameter ("get_agentmodule_status_tooltip");
$get_group_status_tooltip = (bool) get_parameter ("get_group_status_tooltip");
$get_agent_id = (bool) get_parameter ("get_agent_id");
$get_agents_source_json = (bool) get_parameter ("get_agents_source_json");
$cluster_mode = (bool) get_parameter ("cluster_mode",0);
$agent_alias = get_parameter('alias', '');
$agents_inserted = get_parameter('agents_inserted', array());
@ -1001,6 +1002,29 @@ if (is_ajax ()) {
return;
}
if ($get_agents_source_json) {
$source = get_parameter('source', '');
if (empty($source)) {
$sql_report_log = 'SELECT id_agente, alias
FROM tagente, tagent_module_log
WHERE tagente.id_agente = tagent_module_log.id_agent AND tagente.disabled = 0';
} else {
$sql_report_log = 'SELECT id_agente, alias
FROM tagente, tagent_module_log
WHERE tagente.id_agente = tagent_module_log.id_agent AND tagente.disabled = 0 AND tagent_module_log.source like "'. $source.'"';
}
$all_agent_log = db_get_all_rows_sql($sql_report_log);
foreach ($all_agent_log as $key => $value) {
$agents2[$value['id_agente']] = $value['alias'];
}
echo json_encode($agents2);
return;
}
return;
}
@ -1060,7 +1084,7 @@ else {
$tab = get_parameter ("tab", "main");
/* Manage tab */
$managetab = "";
$managetab = array();
if (check_acl_one_of_groups ($config['id_user'],$all_groups, "AW") || $is_extra) {
$managetab['text'] ='<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'">'
@ -1141,7 +1165,7 @@ if ($url_route_analyzer) {
}
/* GIS tab */
$gistab="";
$gistab=array();
if ($config['activate_gis']) {
$gistab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&tab=gis&id_agente='.$id_agente.'">'
.html_print_image("images/op_gis.png", true, array( "title" => __('GIS data')))

View File

@ -107,7 +107,7 @@ if($count_events == 0){
if ($search != "") {
$filter_resume['free_search'] = $search;
$sql_post .= " AND (evento LIKE '%". io_safe_input($search) . "%' OR id_evento LIKE '%$search%' ".$events_wi_cdata_id.")";
$sql_post .= " AND (evento LIKE '%". $search . "%' OR id_evento LIKE '%$search%' ".$events_wi_cdata_id.")";
}
if ($event_type != "") {

View File

@ -124,6 +124,12 @@ if ($view_graph) {
$height = $graph["height"];
}
if ($stacked == CUSTOM_GRAPH_THERMOMETER ){
// Use the defined graph height, that's why
// the user can setup graph height.
$height = $graph["height"];
}
$name = $graph["name"];
if (($graph["private"]==1) && ($graph["id_user"] != $id_user)) {
db_pandora_audit("ACL Violation",
@ -261,6 +267,7 @@ if ($view_graph) {
$stackeds[CUSTOM_GRAPH_HBARS] = __('Horizontal Bars');
$stackeds[CUSTOM_GRAPH_VBARS] = __('Vertical Bars');
$stackeds[CUSTOM_GRAPH_PIE] = __('Pie');
$stackeds[CUSTOM_GRAPH_THERMOMETER] = __('Thermometer');
html_print_select ($stackeds, 'stacked', $stacked , '', '', -1, false, false);
echo "</td>";

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.723
%define release 180601
%define release 180606
# User and Group under which Apache is running
%define httpd_name httpd

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.723
%define release 180601
%define release 180606
%define httpd_name httpd
# User and Group under which Apache is running
%define httpd_name apache2

View File

@ -1,5 +1,5 @@
package: pandorafms-server
Version: 7.0NG.723-180601
Version: 7.0NG.723-180606
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.723-180601"
pandora_version="7.0NG.723-180606"
package_cpan=0
package_pandora=1
@ -82,6 +82,7 @@ then
mkdir -p temp_package/var/spool/pandora/data_in/trans
chmod 770 temp_package/var/spool/pandora/data_in/trans
mkdir -p temp_package/var/log/pandora/
chmod 754 temp_package/var/log/pandora/
mkdir -p temp_package/usr/share/pandora_server/conf/
mkdir -p temp_package/usr/share/tentacle_server/conf/
mkdir -p temp_package/usr/lib/perl5/

View File

@ -45,7 +45,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.723";
my $pandora_build = "180601";
my $pandora_build = "180606";
our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash

View File

@ -31,7 +31,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.723";
my $pandora_build = "180601";
my $pandora_build = "180606";
our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
@ -40,6 +40,7 @@ our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
api_available
api_call
api_create_custom_field
api_create_tag
api_create_group
@ -50,11 +51,12 @@ our @EXPORT = qw(
extract_dbpass
extract_key_map
get_addresses
get_current_utime_milis
get_lib_version
get_unit
get_unix_time
get_sys_environment
get_current_utime_milis
get_value_translated
getCurrentUTimeMilis
head
in_array
@ -295,6 +297,37 @@ sub get_unit {
return $str;
}
################################################################################
# Get unit
################################################################################
sub get_value_translated {
my $str = shift;
if (empty($str)) {
return $str;
}
$str = trim($str);
my $value = $str;
my $unit = get_unit($str);
if(empty($unit)) {
return $str;
}
$value =~ s/$unit//g;
if ($unit =~ /kb/i) { return $value * (2**10);}
if ($unit =~ /kib/i) { return $value * (2**10);}
if ($unit =~ /mb/i) { return $value * (2**20);}
if ($unit =~ /mib/i) { return $value * (2**20);}
if ($unit =~ /gb/i) { return $value * (2**30);}
if ($unit =~ /gib/i) { return $value * (2**30);}
if ($unit =~ /tb/i) { return $value * (2**40);}
return $value;
}
################################################################################
## Decodes a json strin into an hash
################################################################################
@ -1433,10 +1466,10 @@ sub api_available {
($api_url, $api_pass, $api_user, $api_user_pass) = @{$apidata};
}
$api_url = $conf->{'api_url'} unless empty($api_url);
$api_pass = $conf->{'api_pass'} unless empty($api_pass);
$api_user = $conf->{'api_user'} unless empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} unless empty($api_user_pass);
$api_url = $conf->{'api_url'} if empty($api_url);
$api_pass = $conf->{'api_pass'} if empty($api_pass);
$api_user = $conf->{'api_user'} if empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} if empty($api_user_pass);
my $op = "get";
my $op2 = "test";
@ -1460,7 +1493,83 @@ sub api_available {
id => (empty($rs)?undef:trim($rs))
}
}
}
#########################################################################################
# Pandora API call
# apidata->{other} = [field1,field2,...,fieldi,...,fieldn]
#########################################################################################
sub api_call {
my ($conf, $apidata) = @_;
my ($api_url, $api_pass, $api_user, $api_user_pass,
$op, $op2, $other_mode, $other, $return_type);
my $separator;
if (ref $apidata eq "ARRAY") {
($api_url, $api_pass, $api_user, $api_user_pass,
$op, $op2, $return_type, $other_mode, $other) = @{$apidata};
}
if (ref $apidata eq "HASH") {
$api_url = $apidata->{'api_url'};
$api_pass = $apidata->{'api_pass'};
$api_user = $apidata->{'api_user'};
$api_user_pass = $apidata->{'api_user_pass'};
$op = $apidata->{'op'};
$op2 = $apidata->{'op2'};
$return_type = $apidata->{'return_type'};
$other_mode = "url_encode_separator_" . $apidata->{'url_encode_separator'} unless empty($apidata->{'url_encode_separator'});
$other_mode = "url_encode_separator_|" if empty($other_mode);
($separator) = $other_mode =~ /url_encode_separator_(.*)/;
}
$api_url = $conf->{'api_url'} if empty($api_url);
$api_pass = $conf->{'api_pass'} if empty($api_pass);
$api_user = $conf->{'api_user'} if empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} if empty($api_user_pass);
$op = $conf->{'op'} if empty($op);
$op2 = $conf->{'op2'} if empty($op2);
$return_type = $conf->{'return_type'} if empty($return_type);
$return_type = 'json' if empty($return_type);
if (ref ($apidata->{'other'}) eq "ARRAY") {
$other_mode = "url_encode_separator_|" if empty($other_mode);
($separator) = $other_mode =~ /url_encode_separator_(.*)/;
if (empty($separator)) {
$separator = "|";
$other_mode = "url_encode_separator_|";
}
$other = join $separator, @{$apidata->{'other'}};
}
else {
$other = $apidata->{'other'};
}
my $call;
$call = $api_url . '?';
$call .= 'op=' . $op . '&op2=' . $op2;
$call .= '&other_mode=url_encode_separator_' . $separator;
$call .= '&other=' . $other;
$call .= '&apipass=' . $api_pass . '&user=' . $api_user . '&pass=' . $api_user_pass;
$call .= '&return_type=' . $return_type;
my $rs = call_url($conf, "$call");
if (ref($rs) ne "HASH") {
return {
rs => (empty($rs)?1:0),
error => (empty($rs)?"Empty response.":undef),
id => (empty($rs)?undef:trim($rs)),
response => (empty($rs)?undef:$rs),
}
}
else {
return {
rs => 1,
error => $rs->{'error'},
}
}
}
#########################################################################################
@ -1473,10 +1582,10 @@ sub api_create_custom_field {
($api_url, $api_pass, $api_user, $api_user_pass) = @{$apidata};
}
$api_url = $conf->{'api_url'} unless empty($api_url);
$api_pass = $conf->{'api_pass'} unless empty($api_pass);
$api_user = $conf->{'api_user'} unless empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} unless empty($api_user_pass);
$api_url = $conf->{'api_url'} if empty($api_url);
$api_pass = $conf->{'api_pass'} if empty($api_pass);
$api_user = $conf->{'api_user'} if empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} if empty($api_user_pass);
@ -1572,10 +1681,10 @@ sub api_create_tag {
($api_url, $api_pass, $api_user, $api_user_pass) = @{$apidata};
}
$api_url = $conf->{'api_url'} unless empty($api_url);
$api_pass = $conf->{'api_pass'} unless empty($api_pass);
$api_user = $conf->{'api_user'} unless empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} unless empty($api_user_pass);
$api_url = $conf->{'api_url'} if empty($api_url);
$api_pass = $conf->{'api_pass'} if empty($api_pass);
$api_user = $conf->{'api_user'} if empty($api_user);
$api_user_pass = $conf->{'api_user_pass'} if empty($api_user_pass);
my $op = "set";
my $op2 = "create_tag";

View File

@ -19,6 +19,7 @@ use Socket qw/inet_aton/;
my $DEVNULL = ($^O eq 'MSWin32') ? '/Nul' : '/dev/null';
# Some useful OIDs.
our $ATPHYSADDRESS = ".1.3.6.1.2.1.3.1.1.2";
our $DOT1DBASEBRIDGEADDRESS = ".1.3.6.1.2.1.17.1.1.0";
our $DOT1DBASEPORTIFINDEX = ".1.3.6.1.2.1.17.1.4.1.2";
our $DOT1DTPFDBADDRESS = ".1.3.6.1.2.1.17.4.3.1.1";
@ -30,11 +31,12 @@ our $IFINDEX = ".1.3.6.1.2.1.2.2.1.1";
our $IFINOCTECTS = ".1.3.6.1.2.1.2.2.1.10";
our $IFOPERSTATUS = ".1.3.6.1.2.1.2.2.1.8";
our $IFOUTOCTECTS = ".1.3.6.1.2.1.2.2.1.16";
our $IFTYPE = ".1.3.6.1.2.1.2.2.1.3";
our $IPENTADDR = ".1.3.6.1.2.1.4.20.1.1";
our $IFNAME = ".1.3.6.1.2.1.31.1.1.1.1";
our $IFPHYSADDRESS = ".1.3.6.1.2.1.2.2.1.6";
our $IPNETTOMEDIAPHYSADDRESS = ".1.3.6.1.2.1.4.22.1.2";
our $IPADENTIFINDEX = ".1.3.6.1.2.1.4.20.1.2";
our $IPNETTOMEDIAPHYSADDRESS = ".1.3.6.1.2.1.4.22.1.2";
our $IPROUTEIFINDEX = ".1.3.6.1.2.1.4.21.1.2";
our $IPROUTENEXTHOP = ".1.3.6.1.2.1.4.21.1.7";
our $IPROUTETYPE = ".1.3.6.1.2.1.4.21.1.8";
@ -88,6 +90,9 @@ sub new {
# Keep our own ARP cache to connect hosts to switches/routers.
arp_cache => {},
# Found children.
children => {},
# Working SNMP community for each device.
community_cache => {},
@ -289,20 +294,9 @@ sub snmp_discovery($$) {
# Find interfaces for the device.
$self->find_ifaces($device);
# Try to learn more MAC addresses from the device's ARP cache.
my @output = $self->snmp_get($device, $IPNETTOMEDIAPHYSADDRESS);
foreach my $line (@output) {
next unless ($line =~ /^$IPNETTOMEDIAPHYSADDRESS.\d+.(\S+)\s+=\s+\S+:\s+(.*)$/);
my ($ip_addr, $mac_addr) = ($1, $2);
# Skip broadcast, net and local addresses.
next if ($ip_addr =~ m/\.255$|\.0$|127\.0\.0\.1$/);
$mac_addr = parse_mac($mac_addr);
$self->add_mac($mac_addr, $ip_addr);
$self->call('message', "Found MAC $mac_addr for host $ip_addr in the ARP cache of host $device.", 5);
}
# Check remote ARP caches.
$self->remote_arp($device);
}
}
@ -411,6 +405,9 @@ sub find_ifaces($$) {
next unless ($if_index =~ /^[0-9]+$/);
# Ignore virtual interfaces.
next if ($self->get_if_type($device, $if_index) eq '53');
# Get the MAC.
my $mac = $self->get_if_mac($device, $if_index);
next unless (defined($mac) && $mac ne '');
@ -636,7 +633,7 @@ sub get_if_ip($$$) {
my @output = $self->snmp_get($device, $IPADENTIFINDEX);
foreach my $line (@output) {
chomp ($line);
return $1 if ($line =~ m/^IPADENTIFINDEX.(\S+)\s+=\s+\S+:\s+$if_index$/);
return $1 if ($line =~ m/^$IPADENTIFINDEX.(\S+)\s+=\s+\S+:\s+$if_index$/);
}
return '';
@ -657,6 +654,18 @@ sub get_if_mac($$$) {
return $mac;
}
########################################################################################
# Returns the type of the given interface (by index).
########################################################################################
sub get_if_type($$$) {
my ($self, $device, $if_index) = @_;
my $type = $self->snmp_get_value($device, "$IFTYPE.$if_index");
return '' unless defined($type);
return $type;
}
########################################################################################
# Get an IP address from the ARP cache given the MAC address.
########################################################################################
@ -858,6 +867,20 @@ sub guess_device_type($$) {
$self->set_device_type($device, $device_type);
}
########################################################################################
# Return 1 if the given device has children.
########################################################################################
sub has_children($$) {
my ($self, $device) = @_;
# Check for aliases!
$device = $self->{'aliases'}->{$device} if defined($self->{'aliases'}->{$device});
return 1 if (defined($self->{'children'}->{$device}));
return 0;
}
########################################################################################
# Return 1 if the given device has a parent.
########################################################################################
@ -949,6 +972,7 @@ sub mark_connected($$;$$$) {
# A parent-child relationship is always created to help complete the map with
# layer 3 information.
$self->{'parents'}->{$child} = $parent;
$self->{'children'}->{$parent} = $child;
$self->call('set_parent', $child, $parent);
}
}
@ -999,6 +1023,54 @@ sub snmp_responds($$) {
return 0;
}
##############################################################################
# Parse the local ARP cache.
##############################################################################
sub local_arp($) {
my ($self) = @_;
my @output = `arp -an 2>/dev/null`;
foreach my $line (@output) {
next unless ($line =~ m/\((\S+)\) at ([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+)/);
$self->add_mac(parse_mac($2), $1);
}
}
##############################################################################
# Parse remote SNMP ARP caches.
##############################################################################
sub remote_arp($$) {
my ($self, $device) = @_;
# Try to learn more MAC addresses from the device's ARP cache.
my @output = $self->snmp_get($device, $IPNETTOMEDIAPHYSADDRESS);
foreach my $line (@output) {
next unless ($line =~ /^$IPNETTOMEDIAPHYSADDRESS\.\d+\.(\S+)\s+=\s+\S+:\s+(.*)$/);
my ($ip_addr, $mac_addr) = ($1, $2);
# Skip broadcast, net and local addresses.
next if ($ip_addr =~ m/\.255$|\.0$|127\.0\.0\.1$/);
$mac_addr = parse_mac($mac_addr);
$self->add_mac($mac_addr, $ip_addr);
$self->call('message', "Found MAC $mac_addr for host $ip_addr in the ARP cache of host $device.", 5);
}
# Look in atPhysAddress for MAC addresses too.
@output = $self->snmp_get($device, $ATPHYSADDRESS);
foreach my $line (@output) {
next unless ($line =~ m/^$ATPHYSADDRESS\.\d+\.\d+\.(\S+)\s+=\s+\S+:\s+(.*)$/);
my ($ip_addr, $mac_addr) = ($1, $2);
# Skip broadcast, net and local addresses.
next if ($ip_addr =~ m/\.255$|\.0$|127\.0\.0\.1$/);
$mac_addr = parse_mac($mac_addr);
$self->add_mac($mac_addr, $ip_addr);
$self->call('message', "Found MAC $mac_addr for host $ip_addr in the ARP cache (atPhysAddress) of host $device.", 5);
}
}
##############################################################################
# Ping the given host. Returns 1 if the host is alive, 0 otherwise.
##############################################################################
@ -1152,6 +1224,9 @@ sub scan($) {
$self->call('message', "[1/5] Scanning the network...", 3);
$self->scan_subnet();
# Read the local ARP cache.
$self->local_arp();
# Get a list of found hosts.
my @hosts = @{$self->get_hosts()};
if (scalar(@hosts) > 0 && $self->{'parent_detection'} == 1) {
@ -1173,7 +1248,7 @@ sub scan($) {
foreach my $host (@hosts) {
$self->call('update_progress', $progress);
$progress += $step;
next if ($self->has_parent($host));
next if ($self->has_parent($host) || $self->has_children($host));
$self->traceroute_connectivity($host);
}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.723
%define release 180601
%define release 180606
Summary: Pandora FMS Server
Name: %{name}
@ -176,10 +176,12 @@ exit 0
%{_bindir}/pandora_exec
%{_bindir}/pandora_server
%{_bindir}/tentacle_server
%dir %{_localstatedir}/log/pandora
%dir %{_sysconfdir}/pandora
%dir %{_localstatedir}/spool/pandora
%defattr(-,pandora,root, 754)
%dir %{_localstatedir}/log/pandora
%defattr(600,root,root)
/etc/pandora/pandora_server.conf.new

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.723
%define release 180601
%define release 180606
Summary: Pandora FMS Server
Name: %{name}

View File

@ -9,7 +9,7 @@
# **********************************************************************
PI_VERSION="7.0NG.723"
PI_BUILD="180601"
PI_BUILD="180606"
MODE=$1
if [ $# -gt 1 ]; then
@ -317,7 +317,7 @@ install () {
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/trans
mkdir -p $DESTDIR$PANDORA_LOG 2> /dev/null
chown -R pandora $DESTDIR$PANDORA_LOG 2> /dev/null
chmod 2770 $DESTDIR$PANDORA_LOG 2> /dev/null
chmod 2774 $DESTDIR$PANDORA_LOG 2> /dev/null
echo "Giving proper permission to /var/spool/pandora"
for group in "www-data" wwwrun www apache

View File

@ -34,7 +34,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB;
# version: define current version
my $version = "7.0NG.723 PS180601";
my $version = "7.0NG.723 PS180606";
# Pandora server configuration
my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv;
# version: define current version
my $version = "7.0NG.723 PS180601";
my $version = "7.0NG.723 PS180606";
# save program name for logging
my $progname = basename($0);