2012-01-17 Juan Manuel Ramon <juanmanuel.ramon@artica.es>

* include/functions_network_components.php
	 include/functions_api.php: Added new functions to Api.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@5384 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
juanmanuelr 2012-01-17 20:20:45 +00:00
parent 112e2b9b30
commit 9a9807fcc0
3 changed files with 428 additions and 15 deletions

View File

@ -1,3 +1,8 @@
2012-01-17 Juan Manuel Ramon <juanmanuel.ramon@artica.es>
* include/functions_network_components.php
include/functions_api.php: Added new functions to Api.
2012-01-17 Ramon Novoa <rnovoa@artica.es>
* include/functions_netflow.php: Clean \r and \n from advanced

View File

@ -22,6 +22,8 @@ include_once($config['homedir'] . "/include/functions_profile.php");
include_once($config['homedir'] . "/include/functions.php");
include_once($config['homedir'] . "/include/functions_events.php");
include_once($config['homedir'] . "/include/functions_groups.php");
include_once($config['homedir'] . "/include/functions_network_components.php");
enterprise_include_once ('include/functions_local_components.php');
/**
* Parse the "other" parameter.
@ -1401,31 +1403,323 @@ function set_update_snmp_module($module_name, $thrash1, $other, $thrash3) {
}
/**
* Create new module template.
* Create new network component.
*
* @param $id string Name of the module template.
* @param $id string Name of the network component.
* @param $thrash1 Don't use.
* @param array $other it's array, $other as param is <description> in this
* @param array $other it's array, $other as param is <network_component_type>;<description>;
* <module_interval>;<max_value>;<min_value>;<snmp_community>;<id_module_group>;<max_timeout>;
* <history_data>;<min_warning>;<max_warning>;<str_warning>;<min_critical>;<max_critical>;<str_critical>;
* <ff_threshold>;<post_process>;<network_component_group> in this
* order and separator char (after text ; ) and separator (pass in param
* othermode as othermode=url_encode_separator_<separator>)
* example:
*
* api.php?op=set&op2=new_module_template&id=example_template_name&other=This%20is%20a%20module%20template%20created%20by%20the%20Api&other_mode=url_encode_separator_|
* api.php?op=set&op2=new_network_component&id=example_network_component_name&other=7|network%20component%20created%20by%20Api|300|30|10|public|3||1|10|20|str|21|30|str1|10|50.00|12&other_mode=url_encode_separator_|
*
* @param $thrash2 Don't use.
*/
function set_new_module_template($id, $thrash1, $other, $thrash2) {
function set_new_network_component($id, $thrash1, $other, $thrash2) {
$values['name'] = $id;
$values['description'] = $other['data'][0];
if ($id == ""){
returnError('error_set_new_network_component', __('Error creating network component. Network component name cannot be left blank.'));
return;
}
if ($other['data'][0] < 6 or $other['data'][0] > 18){
returnError('error_set_new_network_component', __('Error creating network component. Incorrect value for Network component type field.'));
return;
}
if ($other['data'][17] == ""){
returnError('error_set_new_network_component', __('Error creating network component. Network component group cannot be left blank.'));
return;
}
$values = array (
'description' => $other['data'][1],
'module_interval' => $other['data'][2],
'max' => $other['data'][3],
'min' => $other['data'][4],
'snmp_community' => $other['data'][5],
'id_module_group' => $other['data'][6],
'id_modulo' => 2,
'max_timeout' => $other['data'][7],
'history_data' => $other['data'][8],
'min_warning' => $other['data'][9],
'max_warning' => $other['data'][10],
'str_warning' => $other['data'][11],
'min_critical' => $other['data'][12],
'max_critical' => $other['data'][13],
'str_critical' => $other['data'][14],
'min_ff_event' => $other['data'][15],
'post_process' => $other['data'][16]);
$name_check = db_get_value ('name', 'tnetwork_component', 'name', $id);
if ($name_check !== false){
returnError('error_set_new_network_component', __('Error creating network component. This network component already exists.'));
return;
}
$id = network_components_create_network_component ($id, $other['data'][0], $other['data'][17], $values);
$result = db_process_sql_insert('tnetwork_profile', $values);
if (!$result)
returnError('error_new_module_template', 'Error creating module template.');
if (!$id)
returnError('error_set_new_network_component', 'Error creating network component.');
else
returnData('string', array('type' => 'string', 'data' => __('Module template created.')));
returnData('string', array('type' => 'string', 'data' => $id));
}
/**
* Create new plugin component.
*
* @param $id string Name of the plugin component.
* @param $thrash1 Don't use.
* @param array $other it's array, $other as param is <plugin_component_type>;<description>;
* <module_interval>;<max_value>;<min_value>;<module_port>;<id_module_group>;<id_plugin>;<max_timeout>;
* <history_data>;<min_warning>;<max_warning>;<str_warning>;<min_critical>;<max_critical>;<str_critical>;
* <ff_threshold>;<post_process>;<plugin_component_group> in this
* order and separator char (after text ; ) and separator (pass in param
* othermode as othermode=url_encode_separator_<separator>)
* example:
*
* api.php?op=set&op2=new_plugin_component&id=example_plugin_component_name&other=2|plugin%20component%20created%20by%20Api|300|30|10|66|3|2|example_user|example_pass|-p%20max||1|10|20|str|21|30|str1|10|50.00|12&other_mode=url_encode_separator_|
*
* @param $thrash2 Don't use.
*/
function set_new_plugin_component($id, $thrash1, $other, $thrash2) {
if ($id == ""){
returnError('error_set_new_plugin_component', __('Error creating plugin component. Plugin component name cannot be left blank.'));
return;
}
if ($other['data'][7] == ""){
returnError('error_set_new_plugin_component', __('Error creating plugin component. Incorrect value for Id plugin.'));
return;
}
if ($other['data'][21] == ""){
returnError('error_set_new_plugin_component', __('Error creating plugin component. Plugin component group cannot be left blank.'));
return;
}
$values = array (
'description' => $other['data'][1],
'module_interval' => $other['data'][2],
'max' => $other['data'][3],
'min' => $other['data'][4],
'tcp_port' => $other['data'][5],
'id_module_group' => $other['data'][6],
'id_modulo' => 4,
'id_plugin' => $other['data'][7],
'plugin_user' => $other['data'][8],
'plugin_pass' => $other['data'][9],
'plugin_parameter' => $other['data'][10],
'max_timeout' => $other['data'][11],
'history_data' => $other['data'][12],
'min_warning' => $other['data'][13],
'max_warning' => $other['data'][14],
'str_warning' => $other['data'][15],
'min_critical' => $other['data'][16],
'max_critical' => $other['data'][17],
'str_critical' => $other['data'][18],
'min_ff_event' => $other['data'][19],
'post_process' => $other['data'][20]);
$name_check = db_get_value ('name', 'tnetwork_component', 'name', $id);
if ($name_check !== false){
returnError('error_set_new_plugin_component', __('Error creating plugin component. This plugin component already exists.'));
return;
}
$id = network_components_create_network_component ($id, $other['data'][0], $other['data'][21], $values);
if (!$id)
returnError('error_set_new_plugin_component', 'Error creating plugin component.');
else
returnData('string', array('type' => 'string', 'data' => $id));
}
/**
* Create new SNMP component.
*
* @param $id string Name of the SNMP component.
* @param $thrash1 Don't use.
* @param array $other it's array, $other as param is <snmp_component_type>;<description>;
* <module_interval>;<max_value>;<min_value>;<id_module_group>;<max_timeout>;
* <history_data>;<min_warning>;<max_warning>;<str_warning>;<min_critical>;<max_critical>;<str_critical>;
* <ff_threshold>;<post_process>;<snmp_version>;<snmp_oid>;<snmp_community>;
* <snmp3_auth_user>;<snmp3_auth_pass>;<module_port>;<snmp3_privacy_method>;<snmp3_privacy_pass>;<snmp3_auth_method>;<snmp3_security_level>;<snmp_component_group> in this
* order and separator char (after text ; ) and separator (pass in param
* othermode as othermode=url_encode_separator_<separator>)
* example:
*
* api.php?op=set&op2=new_snmp_component&id=example_snmp_component_name&other=16|SNMP%20component%20created%20by%20Api|300|30|10|3||1|10|20|str|21|30|str1|15|50.00|3|.1.3.6.1.2.1.2.2.1.8.2|public|example_auth_user|example_auth_pass|66|AES|example_priv_pass|MD5|authNoPriv|12&other_mode=url_encode_separator_|
*
* @param $thrash2 Don't use.
*/
function set_new_snmp_component($id, $thrash1, $other, $thrash2) {
if ($id == ""){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. SNMP component name cannot be left blank.'));
return;
}
if ($other['data'][0] < 15 or $other['data'][0] > 17){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. Incorrect value for Snmp component type field.'));
return;
}
if ($other['data'][25] == ""){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. Snmp component group cannot be left blank.'));
return;
}
# SNMP version 3
if ($other['data'][16] == "3"){
if ($other['data'][22] != "AES" and $other['data'][22] != "DES"){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. snmp3_priv_method doesn\'t exists. Set it to \'AES\' or \'DES\'. '));
return;
}
if ($other['data'][25] != "authNoPriv" and $other['data'][25] != "authPriv" and $other['data'][25] != "noAuthNoPriv"){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. snmp3_sec_level doesn\'t exists. Set it to \'authNoPriv\' or \'authPriv\' or \'noAuthNoPriv\'. '));
return;
}
if ($other['data'][24] != "MD5" and $other['data'][24] != "SHA"){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. snmp3_auth_method doesn\'t exists. Set it to \'MD5\' or \'SHA\'. '));
return;
}
$values = array (
'description' => $other['data'][1],
'module_interval' => $other['data'][2],
'max' => $other['data'][3],
'min' => $other['data'][4],
'id_module_group' => $other['data'][5],
'max_timeout' => $other['data'][6],
'history_data' => $other['data'][7],
'min_warning' => $other['data'][8],
'max_warning' => $other['data'][9],
'str_warning' => $other['data'][10],
'min_critical' => $other['data'][11],
'max_critical' => $other['data'][12],
'str_critical' => $other['data'][13],
'min_ff_event' => $other['data'][14],
'post_process' => $other['data'][15],
'tcp_send' => $other['data'][16],
'snmp_oid' => $other['data'][17],
'snmp_community' => $other['data'][18],
'plugin_user' => $other['data'][19], // snmp3_auth_user
'plugin_pass' => $other['data'][20], // snmp3_auth_pass
'tcp_port' => $other['data'][21],
'id_modulo' => 2,
'custom_string_1' => $other['data'][22], // snmp3_privacy_method
'custom_string_2' => $other['data'][23], // snmp3_privacy_pass
'plugin_parameter' => $other['data'][24], // snmp3_auth_method
'custom_string_3' => $other['data'][25], // snmp3_security_level
);
}
else {
$values = array (
'description' => $other['data'][1],
'module_interval' => $other['data'][2],
'max' => $other['data'][3],
'min' => $other['data'][4],
'id_module_group' => $other['data'][5],
'max_timeout' => $other['data'][6],
'history_data' => $other['data'][7],
'min_warning' => $other['data'][8],
'max_warning' => $other['data'][9],
'str_warning' => $other['data'][10],
'min_critical' => $other['data'][11],
'max_critical' => $other['data'][12],
'str_critical' => $other['data'][13],
'min_ff_event' => $other['data'][14],
'post_process' => $other['data'][15],
'tcp_send' => $other['data'][16],
'snmp_oid' => $other['data'][17],
'snmp_community' => $other['data'][18],
'plugin_user' => '',
'plugin_pass' => '',
'tcp_port' => $other['data'][21],
'id_modulo' => 2
);
}
$name_check = db_get_value ('name', 'tnetwork_component', 'name', $id);
if ($name_check !== false){
returnError('error_set_new_snmp_component', __('Error creating SNMP component. This SNMP component already exists.'));
return;
}
$id = network_components_create_network_component ($id, $other['data'][0], $other['data'][25], $values);
if (!$id)
returnError('error_set_new_snmp_component', 'Error creating SNMP component.');
else
returnData('string', array('type' => 'string', 'data' => $id));
}
/**
* Create new local (data) component.
*
* @param $id string Name of the local component.
* @param $thrash1 Don't use.
* @param array $other it's array, $other as param is <description>;<id_os>;
* <local_component_group>;<configuration_data> in this
* order and separator char (after text ; ) and separator (pass in param
* othermode as othermode=url_encode_separator_<separator>)
* example:
*
* api.php?op=set&op2=new_local_component&id=example_local_component_name&other=local%20component%20created%20by%20Api~5~12~module_begin%0dmodule_name%20example_local_component_name%0dmodule_type%20generic_data%0dmodule_exec%20ps%20|%20grep%20pid%20|%20wc%20-l%0dmodule_interval%202%0dmodule_end&other_mode=url_encode_separator_~
*
* @param $thrash2 Don't use.
*/
function set_new_local_component($id, $thrash1, $other, $thrash2) {
if ($id == ""){
returnError('error_set_new_local_component', __('Error creating local component. Local component name cannot be left blank.'));
return;
}
if ($other['data'][1] == ""){
returnError('error_set_new_local_component', __('Error creating local component. Local component group cannot be left blank.'));
return;
}
$values = array (
'description' => $other['data'][0],
'id_network_component_group' => $other['data'][1]
);
$name_check = enterprise_hook('local_components_get_local_components', array(array('name' => $id), 'name'));
if ($name_check === ENTERPRISE_NOT_HOOK) {
returnError('error_set_new_local_component', __('Error creating local component.'));
return;
}
if ($name_check !== false){
returnError('error_set_new_local_component', __('Error creating local component. This local component already exists.'));
return;
}
$id = enterprise_hook('local_components_create_local_component', array($id, $other['data'][3], $other['data'][1], $values));
if (!$id)
returnError('error_set_new_local_component', 'Error creating local component.');
else
returnData('string', array('type' => 'string', 'data' => $id));
}
/**
@ -2171,6 +2465,120 @@ function set_add_snmp_module_policy($id, $thrash1, $other, $thrash3) {
}
/**
* Apply policy. And return id from the applying operation.
*
* @param string $id Id of the target policy.
* @param $thrash1 Don't use.
* @param array $other Don't use
* and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>)
* example:
*
* api.php?op=set&op2=apply_policy&id=1
*
* @param $thrash3 Don't use
*/
function set_apply_policy($id, $thrash1, $other, $thrash3) {
if ($id == ""){
returnError('error_apply_policy', __('Error applying policy. Id_policy cannot be left blank.'));
return;
}
# Check if this operation is duplicated
$duplicated = enterprise_hook('policies_get_policy_queue_status', array($id));
if ($duplicated === ENTERPRISE_NOT_HOOK) {
// We want to return a value
if ($other == "return"){
return -1;
}else{
returnError('error_apply_policy', __('Error applying policy.'));
return;
}
}
if ($duplicated == STATUS_IN_QUEUE_APPLYING or $duplicated == STATUS_IN_QUEUE_IN){
// We want to return a value
if ($other == "return"){
return -1;
}else{
returnError('error_apply_policy', __('Error applying policy. This policy is already pending to apply.'));
return;
}
}
$id = enterprise_hook('add_policy_queue_operation', array($id, 0, 'apply'));
if ($id === ENTERPRISE_NOT_HOOK) {
// We want to return a value
if ($other == "return"){
return -1;
}else{
returnError('error_apply_policy', __('Error applying policy.'));
return;
}
}
// We want to return a value
if ($other == "return"){
if ($id)
return $id;
else
return -1;
} else {
if ($id)
returnData('string', array('type' => 'string', 'data' => $id));
else
returnError('error_apply_policy', 'Error applying policy.');
}
}
/**
* Apply all policy in database. And return the number of policies applied.
*
* @param string $id Don't use.
* @param $thrash1 Don't use.
* @param array $other Don't use
* and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>)
* example:
*
* api.php?op=set&op2=apply_all_policies
*
* @param $thrash3 Don't use
*/
function set_apply_all_policies($id, $thrash1, $other, $thrash3) {
$policies = array();
# Get all policies
$policies = enterprise_hook('policies_get_policies', array(false, false, false, true));
if ($duplicated === ENTERPRISE_NOT_HOOK) {
returnError('error_apply_all_policy', __('Error applying all policies.'));
return;
}
$num_policies = count($policies);
$count_results = 0;
foreach ($policies as $policy){
$return_value = set_apply_policy($policy['id'], '', 'return', '');
if ($return_value != -1){
$count_results++;
}
}
if ($num_policies > $count_results){
$errors = $num_policies - $count_results;
returnError('error_apply_policy', 'Error applying policy. ' . $errors . ' failed. ');
}
else {
returnData('string', array('type' => 'string', 'data' => $count_results));
}
}
/**
* Create a new group. And return the id_group of the new group.
*

View File

@ -21,9 +21,9 @@
/**
* Include modules functions
*/
require_once ('include/functions_modules.php');
require_once ('include/functions_agents.php');
require_once ('include/functions_users.php');
include_once ('include/functions_modules.php');
include_once ('include/functions_agents.php');
include_once ('include/functions_users.php');
/**
* Get a list of network components.