diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 3bbb329702..720ca63b12 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -150,7 +150,7 @@ function returnData($returnType, $data, $separator = ';') { else { if (!empty($data['data'])) { foreach ($data['data'] as $dataContent) { - $clean = array_map("array_apply_io_safe_output", $dataContent); + $clean = array_map("array_apply_io_safe_output", (array)$dataContent); foreach ($clean as $k => $v) { $clean[$k] = str_replace("\r", "\n", $clean[$k]); $clean[$k] = str_replace("\n", " ", $clean[$k]); @@ -10690,6 +10690,38 @@ function api_set_create_service($thrash1, $thrash2, $other, $thrash3) { } } + + + +function api_set_module_group_synch($thrash1, $thrash2, $other, $returnType) { + global $config; +enterprise_include_once ('meta/include/functions_meta.php'); + if (is_metaconsole()) { + + if (!check_acl($config['id_user'], 0, "PM")) { + returnError('forbidden', 'string'); + return; + } + $targets = array(); + foreach ($other['data'] as $server) { + $targets[] = $server; + } + + $return = meta_module_group_synchronizing($targets); + + // User feedback + returnData ($returnType, array('type' => 'array', 'data' => $return)); + + } + else{ + returnError ('not_defined_in_metaconsole',__('This function is only for metaconsole')); + } +} + + + + + /** * Update a service. * diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 338075ed7b..928cbd15fb 100644 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -144,7 +144,9 @@ sub help_screen{ help_screen_line('--create_snmp_module', " \n\t [ \n\t \n\t \n\t \n\t \n\t \n\t \n\t ]", 'Add snmp network module to agent'); help_screen_line('--create_plugin_module', " \n\t [ \n\t \n\t \n\t \n\t \n\t \n\t ]", 'Add plug-in module to agent'); + help_screen_line('--get_module_group', '[]', 'Dysplay all module groups'); help_screen_line('--create_module_group', ''); + help_screen_line('--module_group_synch', " []", 'Synchronize metaconsole module groups'); help_screen_line('--delete_module', 'Delete module from agent', ' '); help_screen_line('--data_module', " \n\t []", 'Insert data to module'); help_screen_line('--get_module_data', " []", "\n\t Show the data of a module in the last X seconds (interval) in CSV format"); @@ -241,8 +243,8 @@ sub help_screen{ ######################################################################## # ######################################################################## -sub api_call($$$;$$$) { - my ($pa_config, $op, $op2, $id, $id2, $other) = @_; +sub api_call($$$;$$$$) { + my ($pa_config, $op, $op2, $id, $id2, $other, $return_type) = @_; my $content = undef; eval { @@ -256,6 +258,7 @@ sub api_call($$$;$$$) { $params->{"id"} = $id; $params->{"id2"} = $id2; $params->{"other"} = $other; + $params->{"return_type"} = $return_type; $params->{"other_mode"} = "url_encode_separator_|"; # Call the API. @@ -1605,6 +1608,54 @@ sub cli_create_module_group () { db_insert ($dbh, 'id_mg', 'INSERT INTO tmodule_group (name) VALUES (?)', safe_input($module_group_name)); } +############################################################################## +# Show all the module group (without parameters) or the module groups with a filter parameters +# Related option: --get_module_group +############################################################################## + +sub cli_get_module_group() { + my ($module_group_name) = @ARGV[2..2]; + + my $condition = ' 1=1 '; + + if($module_group_name ne '') { + $condition .= " AND name LIKE '%$module_group_name%' "; + } + + my @module_group = get_db_rows ($dbh, "SELECT * FROM tmodule_group WHERE $condition"); + + if(scalar(@module_group) == 0) { + print_log "[INFO] No groups found\n\n"; + exit; + } + + my $head_print = 0; + foreach my $groups (@module_group) { + + if($head_print == 0) { + $head_print = 1; + print "id_module_group, group_name\n"; + } + print $groups->{'id_mg'}.",".safe_output($groups->{'name'})."\n"; + } + + if($head_print == 0) { + print_log "[INFO] No groups found\n\n"; + } + +} + + +sub cli_module_group_synch() { + my $other = @ARGV[2]; + my $return_type = @ARGV[3]; + if ($return_type eq '') { + $return_type = 'csv'; + } + my $result = api_call(\%conf,'set', 'module_group_synch', undef, undef, "$other", $return_type); + print "$result \n\n "; +} + ############################################################################## # Create network module from component. # Related option: --create_network_module_from_component @@ -5734,10 +5785,19 @@ sub pandora_manage_main ($$$) { param_check($ltotal, 38, 35); cli_create_web_module(0); } + + elsif ($param eq '--get_module_group') { + param_check($ltotal, 1, 1); + cli_get_module_group(); + } elsif ($param eq '--create_module_group') { param_check($ltotal, 1, 1); cli_create_module_group(); } + elsif ($param eq '--module_group_synch') { + param_check($ltotal, 2, 1); + cli_module_group_synch(); + } elsif ($param eq '--create_network_module') { param_check($ltotal, 32, 20); cli_create_network_module(0);