From 2bde6ac6cef82aba6968a4bb52a9743ab0feb977 Mon Sep 17 00:00:00 2001 From: samucarc Date: Fri, 7 Dec 2018 15:36:13 +0100 Subject: [PATCH 1/5] Create module group API Former-commit-id: a2da223ae925935bcc449ee151597fd035b453e2 --- pandora_console/include/functions_api.php | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 53479ae7ed..06309a4865 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -7627,6 +7627,49 @@ function api_set_alert_actions($id, $id2, $other, $trash1) { } } +/** + * Create a new module group + * @param $id as module group name (mandatory) + example: + + *http://localhost/pandora_console/include/api.php?op=set&op2=new_module_group&id=Module_group_name&apipass=1234&user=admin&pass=pandora +*/ +function api_set_new_module_group($id, $thrash2, $other, $trash1) { + global $config; + + if (defined ('METACONSOLE')) { + return; + } + + if (!check_acl($config['id_user'], 0, "PM")){ + returnError('forbidden', 'string'); + return; + } + + if ($id == '' || !$id) { + returnError('error_parameter', __('Module group must have a name')); + return; + } + + $name = db_get_value ('name', 'tmodule_group', 'name', $id); + + + if ($name) { + returnError('error_parameter', __('Each module group must have a different name')); + return; + } + + $return = db_process_sql_insert('tmodule_group', array('name' => $id)); + + + if ($return === false) + returnError('error_new_moodule_group', 'There was a problem creating group'); + else + returnData('string', array('type' => 'string', 'data' => $return)); + +} + + function api_set_new_event($trash1, $trash2, $other, $trash3) { $simulate = false; $time = get_system_time(); From 3a80a0467bad83b3f595015c6856c8b732a61ef3 Mon Sep 17 00:00:00 2001 From: samucarc Date: Mon, 10 Dec 2018 15:55:09 +0100 Subject: [PATCH 2/5] synchronize group of modules from the meta console Former-commit-id: 172cd23a0f0f2fa12ad4d37893cae6d22951ee54 --- pandora_console/include/functions_api.php | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 06309a4865..f085bbce0e 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -7670,6 +7670,49 @@ function api_set_new_module_group($id, $thrash2, $other, $trash1) { } +/** + * synchronize module group + * @param $other as server_names (mandatory) + example: + + *api.php?op=set&op2=module_group_synch&other=server_name1|server_name2|server_name3&other_mode=url_encode_separator_|&apipass=1234&user=admin&pass=pandora +*/ + +function api_set_module_group_synch($thrash1, $thrash2, $other, $thrash4) { + global $config; + + if (defined('METACONSOLE')) { + if (!check_acl($config['id_user'], 0, "PM")) { + returnError('forbidden', 'string'); + return; + } + + enterprise_include_once('include/functions_meta.php'); + $target = array(); + foreach ($other['data'] as $server) { + $target[] = $server; + } + + $return = meta_module_group_synchronizing($targets); + + $module_group_update_err = $return["module_group_update_err"]; + $module_group_create_err = $return["module_group_create_err"]; + $module_group_update_ok = $return["module_group_update_ok"]; + $module_group_create_ok = $return["module_group_create_ok"]; + + // User feedback + if ($module_group_create_err > 0 or $module_group_update_err > 0) { + ui_print_error_message (__('Error creating/updating %s/%s module groups', $module_group_create_err, $module_group_update_err)); + } + if ($module_group_create_ok > 0 or $module_group_update_ok > 0){ + ui_print_success_message (__('Created/Updated %s/%s module groups', $module_group_create_ok, $module_group_update_ok)); + } + } + else{ + echo __('This function is only for metaconsole'); + } +} + function api_set_new_event($trash1, $trash2, $other, $trash3) { $simulate = false; $time = get_system_time(); From 484d79d97429609b4f5fc4e59cd0b75a176aec52 Mon Sep 17 00:00:00 2001 From: samucarc Date: Mon, 10 Dec 2018 16:06:25 +0100 Subject: [PATCH 3/5] Fixed synch error Former-commit-id: 9b370b64fd24302f76733ca84792d0a57418d688 --- pandora_console/include/functions_api.php | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index f085bbce0e..3aca9aae6e 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -7680,39 +7680,41 @@ function api_set_new_module_group($id, $thrash2, $other, $trash1) { function api_set_module_group_synch($thrash1, $thrash2, $other, $thrash4) { global $config; + enterprise_include_once ('meta/include/functions_meta.php'); - if (defined('METACONSOLE')) { + if (is_metaconsole()) { if (!check_acl($config['id_user'], 0, "PM")) { returnError('forbidden', 'string'); return; } - - enterprise_include_once('include/functions_meta.php'); - $target = array(); + $targets = array(); foreach ($other['data'] as $server) { - $target[] = $server; + $targets[] = $server; } - - $return = meta_module_group_synchronizing($targets); + $return = meta_module_group_synchronizing($targets, true); $module_group_update_err = $return["module_group_update_err"]; $module_group_create_err = $return["module_group_create_err"]; $module_group_update_ok = $return["module_group_update_ok"]; $module_group_create_ok = $return["module_group_create_ok"]; + + $string_ok = __('Created/Updated %s/%s module groups', $module_group_create_ok, $module_group_update_ok); // User feedback if ($module_group_create_err > 0 or $module_group_update_err > 0) { - ui_print_error_message (__('Error creating/updating %s/%s module groups', $module_group_create_err, $module_group_update_err)); + returnError ('module_group_synch_err',__('Error creating/updating %s/%s module groups
', $module_group_create_err, $module_group_update_err)); } if ($module_group_create_ok > 0 or $module_group_update_ok > 0){ - ui_print_success_message (__('Created/Updated %s/%s module groups', $module_group_create_ok, $module_group_update_ok)); + returnData ('string', array('type' => 'string', 'data' => $string_ok)); } + } else{ - echo __('This function is only for metaconsole'); + returnError ('not_defined_in_metaconsole',__('This function is only for metaconsole')); } } + function api_set_new_event($trash1, $trash2, $other, $trash3) { $simulate = false; $time = get_system_time(); From 7f99a8f9f4efdc14cdbb843f47142232dcb3cd81 Mon Sep 17 00:00:00 2001 From: samucarc Date: Tue, 11 Dec 2018 14:43:27 +0100 Subject: [PATCH 4/5] List and synchronize group of modules of the meta console with CLI Former-commit-id: 2fc699ee17ac08fe2d60746c0a3d8859a5083f7a --- pandora_console/include/functions_api.php | 34 +++++++++++- pandora_server/util/pandora_manage.pl | 64 ++++++++++++++++++++++- 2 files changed, 95 insertions(+), 3 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 53479ae7ed..1405d7897e 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -149,7 +149,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]); @@ -10539,6 +10539,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 1c226ad44e..f7182dbfe8 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"); @@ -240,8 +242,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 { @@ -255,6 +257,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. @@ -1596,6 +1599,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 @@ -5712,10 +5763,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); From bd48c96de466aab3c3b4f94a96da7d12404b427f Mon Sep 17 00:00:00 2001 From: samucarc Date: Mon, 21 Jan 2019 15:03:02 +0100 Subject: [PATCH 5/5] Fixed duplicated function module group synch in API Former-commit-id: 03b23a85223add6d8f730dbfebaf58fbf7839e2a --- pandora_console/include/functions_api.php | 31 ----------------------- 1 file changed, 31 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 720ca63b12..851a77b2a7 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -10691,37 +10691,6 @@ 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. *