$id_agent,
'delete_pending' => 0,
];
if ($module_type != 0) {
$filter['id_tipo_modulo'] = $module_type;
}
$module_name = db_get_all_rows_filter('tagente_modulo', $filter, 'nombre');
if ($module_name === false) {
$module_name = [];
}
foreach ($module_name as $mod_name) {
$result = process_manage_edit($mod_name['nombre'], $id_agent, $module_status, $modules_selection_mode);
$count++;
$success += (int) $result;
}
}
if ($success == 0) {
$error_msg = __('Error updating the modules from a module type');
}
} else if ($force === 'group') {
$agents_ = array_keys(agents_get_group_agents($group_select, false, 'none'));
foreach ($agents_ as $id_agent) {
$filter = [
'id_agente' => $id_agent,
'delete_pending' => 0,
];
$module_name = db_get_all_rows_filter('tagente_modulo', $filter, 'nombre');
if ($module_name === false) {
$module_name = [];
}
foreach ($module_name as $mod_name) {
$result = process_manage_edit($mod_name['nombre'], $id_agent, $module_status, $modules_selection_mode);
$count++;
$success += (int) $result;
}
}
if ($success == 0) {
$error_msg = __('Error updating the modules from an agent group');
}
}
} else {
// Standard procedure.
foreach ($agents_ as $agent_) {
if ($modules_ == false) {
$modules_ = [];
}
foreach ($modules_ as $module_) {
$result = process_manage_edit($module_, $agent_, $module_status, $modules_selection_mode);
$count++;
$success += (int) $result;
}
}
if ($success == 0) {
$error_msg = __('Error updating the modules (maybe there was no field to update)');
}
}
ui_print_result_message(
$success > 0,
__('Successfully updated').'('.$success.'/'.$count.')',
$error_msg
);
$info = '{"Modules":"'.implode(',', $modules_).'","Agents":"'.implode(',', $agents_).'"}';
if ($success > 0) {
db_pandora_audit(
AUDIT_LOG_MASSIVE_MANAGEMENT,
'Edit module',
false,
false,
$info
);
} else {
db_pandora_audit(
AUDIT_LOG_MASSIVE_MANAGEMENT,
'Fail try to edit module',
false,
false,
$info
);
}
}
$table = new stdClass();
$table->id = 'delete_table';
$table->class = 'databox filters';
$table->width = '100%';
$table->data = [];
$table->style = [];
$table->style[0] = 'font-weight: bold;';
$table->style[2] = 'font-weight: bold';
$table->rowstyle = [];
$table->size = [];
$table->size[0] = '15%';
$table->size[1] = '35%';
$table->size[2] = '15%';
$table->size[3] = '35%';
if (! $module_type) {
$table->rowstyle['edit1'] = 'display: none';
$table->rowstyle['edit0'] = 'display: none';
$table->rowstyle['edit1_1'] = 'display: none';
$table->rowstyle['edit2'] = 'display: none';
$table->rowstyle['edit3'] = 'display: none';
$table->rowstyle['edit35'] = 'display: none';
$table->rowstyle['edit4'] = 'display: none';
$table->rowstyle['edit5'] = 'display: none';
$table->rowstyle['edit6'] = 'display: none';
$table->rowstyle['edit7'] = 'display: none';
}
$agents = agents_get_group_agents(
array_keys(users_get_groups()),
false,
'none'
);
switch ($config['dbtype']) {
case 'mysql':
$module_types = db_get_all_rows_filter(
'tagente_modulo,ttipo_modulo',
['tagente_modulo.id_tipo_modulo = ttipo_modulo.id_tipo',
'id_agente' => array_keys($agents),
'disabled' => 0,
'order' => 'ttipo_modulo.nombre'
],
[
'DISTINCT(id_tipo)',
'CONCAT(ttipo_modulo.descripcion," (",ttipo_modulo.nombre,")") AS description',
]
);
break;
case 'oracle':
$module_types = db_get_all_rows_filter(
'tagente_modulo,ttipo_modulo',
['tagente_modulo.id_tipo_modulo = ttipo_modulo.id_tipo',
'id_agente' => array_keys($agents),
'disabled' => 0,
'order' => 'ttipo_modulo.nombre'
],
[
'id_tipo',
'ttipo_modulo.descripcion || \' (\' || ttipo_modulo.nombre || \')\' AS description',
]
);
break;
case 'postgresql':
$module_types = db_get_all_rows_filter(
'tagente_modulo,ttipo_modulo',
['tagente_modulo.id_tipo_modulo = ttipo_modulo.id_tipo',
'id_agente' => array_keys($agents),
'disabled' => 0,
'order' => 'description'
],
[
'DISTINCT(id_tipo)',
'ttipo_modulo.descripcion || \' (\' || ttipo_modulo.nombre || \')\' AS description',
]
);
break;
}
if ($module_types === false) {
$module_types = [];
}
$types = [];
foreach ($module_types as $type) {
$types[$type['id_tipo']] = $type['description'];
}
$snmp_versions['1'] = 'v. 1';
$snmp_versions['2'] = 'v. 2';
$snmp_versions['2c'] = 'v. 2c';
$snmp_versions['3'] = 'v. 3';
$table->width = '100%';
$table->data = [];
$table->data['selection_mode'][0] = __('Selection mode');
$table->data['selection_mode'][1] = ''.__('Select modules first ').''.html_print_radio_button_extended('selection_mode', 'modules', '', $selection_mode, false, '', 'class="mrgn_right_40px"', true).'
';
$table->data['selection_mode'][1] .= ''.__('Select agents first ').''.html_print_radio_button_extended('selection_mode', 'agents', '', $selection_mode, false, '', 'class="mrgn_right_40px"', true);
$table->rowclass['form_modules_1'] = 'select_modules_row';
$table->data['form_modules_1'][0] = __('Module type');
$types[0] = __('All');
$table->colspan['form_modules_1'][1] = 2;
$table->data['form_modules_1'][1] = html_print_select(
$types,
'module_type',
'',
false,
__('Select'),
-1,
true,
false,
true
);
$table->data['form_modules_1'][3] = __('Select all modules of this type').' '.html_print_checkbox_extended(
'force_type',
'type',
'',
'',
false,
'class="mrgn_right_40px"',
true,
''
);
$modules = [];
if ($module_type != '') {
$filter = ['id_tipo_modulo' => $module_type];
} else {
$filter = false;
}
$names = agents_get_modules(
array_keys($agents),
'tagente_modulo.nombre',
$filter,
false
);
foreach ($names as $name) {
$modules[$name['nombre']] = $name['nombre'];
}
$table->rowclass['form_agents_1'] = 'select_agents_row';
$table->data['form_agents_1'][0] = __('Agent group');
$groups = groups_get_all(true);
$groups[0] = __('All');
$table->colspan['form_agents_1'][1] = 2;
$table->data['form_agents_1'][1] = html_print_select_groups(
false,
'AW',
true,
'groups_select',
'',
false,
'',
'',
true
).' '.__('Group recursion').' '.html_print_checkbox('recursion', 1, false, true, false);
$table->data['form_agents_1'][3] = __('Select all modules of this group').' '.html_print_checkbox_extended(
'force_group',
'group',
'',
'',
false,
'',
'class="mrgn_right_40px"'
);
$table->rowclass['form_modules_3'] = '';
$table->data['form_modules_3'][0] = __('Module Status');
$table->colspan['form_modules_3'][1] = 2;
$status_list = [];
$status_list[AGENT_MODULE_STATUS_NORMAL] = __('Normal');
$status_list[AGENT_MODULE_STATUS_WARNING] = __('Warning');
$status_list[AGENT_MODULE_STATUS_CRITICAL_BAD] = __('Critical');
$status_list[AGENT_MODULE_STATUS_UNKNOWN] = __('Unknown');
$status_list[AGENT_MODULE_STATUS_NOT_NORMAL] = __('Not normal');
$status_list[AGENT_MODULE_STATUS_NOT_INIT] = __('Not init');
$table->data['form_modules_3'][1] = html_print_select(
$status_list,
'status_module',
'selected',
'',
__('All'),
AGENT_MODULE_STATUS_ALL,
true
);
$table->data['form_modules_3'][3] = '';
$tags = tags_get_user_tags();
$table->rowstyle['form_modules_4'] = 'vertical-align: top;';
$table->rowclass['form_modules_4'] = 'select_modules_row select_modules_row_2';
$table->data['form_modules_4'][0] = __('Tags');
$table->data['form_modules_4'][1] = html_print_select(
$tags,
'tags[]',
$tags_name,
false,
__('Any'),
-1,
true,
true,
true
);
$table->rowstyle['form_modules_filter'] = 'vertical-align: top;';
$table->rowclass['form_modules_filter'] = 'select_modules_row select_modules_row_2';
$table->data['form_modules_filter'][0] = __('Filter Modules');
$table->data['form_modules_filter'][1] = html_print_input_text('filter_modules', '', '', 20, 255, true);
$table->rowstyle['form_modules_2'] = 'vertical-align: top;';
$table->rowclass['form_modules_2'] = 'select_modules_row select_modules_row_2';
$table->data['form_modules_2'][0] = __('Modules');
$table->data['form_modules_2'][1] = html_print_select(
$modules,
'module_name[]',
$module_name,
false,
__('Select'),
-1,
true,
true,
true
).' '.__('Select all modules').' '.html_print_checkbox('select_all_modules', 1, false, true, false, '', false, "class='static'");
$table->data['form_modules_2'][2] = __('When select modules');
$table->data['form_modules_2'][2] .= '
';
$table->data['form_modules_2'][2] .= html_print_select(
[
'common' => __('Show common agents'),
'all' => __('Show all agents'),
],
'agents_selection_mode',
'common',
false,
'',
'',
true
);
$table->data['form_modules_2'][3] = html_print_select(
[],
'agents[]',
$agents_select,
false,
__('None'),
0,
true,
true,
false
);
$table->rowclass['form_agents_2'] = 'select_agents_row';
$table->data['form_agents_2'][0] = __('Agent Status');
$table->colspan['form_agents_2'][1] = 2;
$status_list = [];
$status_list[AGENT_STATUS_NORMAL] = __('Normal');
$status_list[AGENT_STATUS_WARNING] = __('Warning');
$status_list[AGENT_STATUS_CRITICAL] = __('Critical');
$status_list[AGENT_STATUS_UNKNOWN] = __('Unknown');
$status_list[AGENT_STATUS_NOT_NORMAL] = __('Not normal');
$status_list[AGENT_STATUS_NOT_INIT] = __('Not init');
$table->data['form_agents_2'][1] = html_print_select(
$status_list,
'status_agents',
'selected',
'',
__('All'),
AGENT_STATUS_ALL,
true
);
$table->data['form_agents_2'][3] = '';
$tags = tags_get_user_tags();
$table->rowstyle['form_agents_4'] = 'vertical-align: top;';
$table->rowclass['form_agents_4'] = 'select_agents_row select_agents_row_2';
$table->data['form_agents_4'][0] = __('Tags');
$table->data['form_agents_4'][1] = html_print_select(
$tags,
'tags[]',
$tags_name,
false,
__('Any'),
-1,
true,
true,
true
);
$table->rowstyle['form_agents_filter'] = 'vertical-align: top;';
$table->rowclass['form_agents_filter'] = 'select_agents_row select_agents_row_2';
$table->data['form_agents_filter'][0] = __('Filter agents');
$table->data['form_agents_filter'][1] = html_print_input_text('filter_agents', '', '', 20, 255, true);
$table->rowstyle['form_agents_3'] = 'vertical-align: top;';
$table->rowclass['form_agents_3'] = 'select_agents_row select_agents_row_2';
$table->data['form_agents_3'][0] = __('Agents');
$table->data['form_agents_3'][1] = html_print_select(
$agents,
'id_agents[]',
$agents_id,
false,
'',
'',
true,
true,
false
).' '.__('Select all agents').' '.html_print_checkbox('select_all_agents', 1, false, true, false, '', false, "class='static'");
$table->data['form_agents_3'][2] = __('When select agents');
$table->data['form_agents_3'][2] .= '
';
$table->data['form_agents_3'][2] .= html_print_select(
[
'common' => __('Show common modules'),
'all' => __('Show all modules'),
'unknown' => __('Show unknown and not init modules'),
],
'modules_selection_mode',
'common',
false,
'',
'',
true
);
$table->data['form_agents_3'][3] = html_print_select(
[],
'module[]',
$modules_select,
false,
'',
'',
true,
true,
false
);
$table->data['edit0'][0] = __('Dynamic Interval');
$table->data['edit0'][1] = html_print_extended_select_for_time('dynamic_interval', '', '', 'None', '0', 10, true, 'width:150px', false);
$table->data['edit0'][2] = '
'.__('Dynamic Min.').' | ';
$table->data['edit0'][2] .= ''.html_print_input_text('dynamic_min', '', '', 10, 255, true).' |
';
$table->data['edit0'][2] .= ''.__('Dynamic Max.').' | ';
$table->data['edit0'][2] .= ''.html_print_input_text('dynamic_max', '', '', 10, 255, true).' |
';
$table->data['edit0'][3] = __('Dynamic Two Tailed: ');
$table->data['edit0'][3] .= html_print_checkbox('dynamic_two_tailed', 1, '', true);
$table->data['edit1'][0] = __('Warning status');
$table->data['edit1'][1] = '';
$table->data['edit1'][1] .= "";
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= ''.__('Min.').'';
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= html_print_input_text(
'min_warning',
'',
'',
5,
255,
true
);
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '
';
$table->data['edit1'][1] .= "";
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= ''.__('Max.').'';
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= html_print_input_text(
'max_warning',
'',
'',
5,
255,
true
);
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '
';
$table->data['edit1'][1] .= "";
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= ''.__('Str.').'';
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= html_print_input_text(
'str_warning',
'',
'',
5,
1024,
true
);
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '
';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= ''.__('Inverse interval').'';
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= html_print_select(
[
'' => __('No change'),
'1' => __('Yes'),
'0' => __('No'),
],
'warning_inverse',
'',
'',
'',
'',
true
);
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '
';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= ''.__('Percentage').'';
$table->data['edit1'][1] .= ui_print_help_tip('Defines threshold as a percentage of value decrease/increment', true);
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '';
$table->data['edit1'][1] .= html_print_select(
[
'' => __('No change'),
'1' => __('Yes'),
'0' => __('No'),
],
'percentage_warning',
'',
'',
'',
'',
true
);
$table->data['edit1'][1] .= ' | ';
$table->data['edit1'][1] .= '
';
$table->data['edit1'][1] .= '
';
$table->data['edit1'][2] = __('Critical status');
$table->data['edit1'][3] = '';
$table->data['edit1'][3] .= "";
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= ''.__('Min.').'';
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= html_print_input_text(
'min_critical',
'',
'',
5,
255,
true
);
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '
';
$table->data['edit1'][3] .= "";
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= ''.__('Max.').'';
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= html_print_input_text(
'max_critical',
'',
'',
5,
255,
true
);
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '
';
$table->data['edit1'][3] .= "";
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= ''.__('Str.').'';
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= html_print_input_text(
'str_critical',
'',
'',
5,
1024,
true
);
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '
';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= ''.__('Inverse interval').'';
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= html_print_select(
[
'' => __('No change'),
'1' => __('Yes'),
'0' => __('No'),
],
'critical_inverse',
'',
'',
'',
'',
true
);
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '
';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= ''.__('Percentage').'';
$table->data['edit1'][3] .= ui_print_help_tip('Defines threshold as a percentage of value decrease/increment', true);
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '';
$table->data['edit1'][3] .= html_print_select(
[
'' => __('No change'),
'1' => __('Yes'),
'0' => __('No'),
],
'percentage_critical',
'',
'',
'',
'',
true
);
$table->data['edit1'][3] .= ' | ';
$table->data['edit1'][3] .= '
';
$table->data['edit1'][3] .= '
';
$table->data['edit1_1'][0] = ''.__('Description').'';
$table->data['edit1_1'][1] = html_print_textarea(
'descripcion',
2,
50,
'',
'',
true
);
$table->colspan['edit1_1'][1] = 3;
$table->data['edit2'][0] = __('Interval');
$table->data['edit2'][1] = html_print_extended_select_for_time(
'module_interval',
0,
'',
__('No change'),
'0',
10,
true,
'width: 150px'
);
$table->data['edit2'][2] = __('Disabled');
$table->data['edit2'][3] = html_print_select(
[
'' => __('No change'),
'1' => __('Yes'),
'0' => __('No'),
],
'disabled',
'',
'',
'',
'',
true
);
$table->data['edit3'][0] = __('Post process');
$table->data['edit3'][1] = html_print_extended_select_for_post_process(
'post_process',
-1,
'',
'',
0,
false,
true,
'width:150px;',
true,
false,
1
);
$table->data['edit3'][2] = __('SMNP community');
$table->data['edit3'][3] = html_print_input_text(
'snmp_community',
'',
'',
10,
100,
true
);
$table->data['edit15'][2] = __('SNMP OID');
$table->data['edit15'][3] = html_print_input_text(
'snmp_oid',
'',
'',
80,
80,
true
);
$target_ip_values = [];
$target_ip_values['auto'] = __('Auto');
$target_ip_values['force_pri'] = __('Force primary key');
$target_ip_values['custom'] = __('Custom');
$table->data['edit35'][0] = __('Target IP');
$table->data['edit35'][1] = html_print_select(
$target_ip_values,
'ip_target',
'',
'',
__('No change'),
'',
true,
false,
false,
'',
false,
'width:200px;'
);
$table->data['edit35'][1] .= html_print_input_text('custom_ip_target', '', '', 15, 60, true);
$table->data['edit35'][2] = __('SNMP version');
$table->data['edit35'][3] = html_print_select(
$snmp_versions,
'snmp_version',
'',
'',
__('No change'),
'',
true,
false,
false,
''
);
$table->data['edit36'][0] = __('Auth user');
$table->data['edit36'][1] = html_print_input_text(
'plugin_user_snmp',
'',
'',
15,
60,
true
);
$table->data['edit36'][2] = __('Auth password').ui_print_help_tip(__('The pass length must be eight character minimum.'), true);
$table->data['edit36'][3] = html_print_input_password('plugin_pass_snmp', '', '', 15, 60, true);
$table->data['edit37'][0] = __('Privacy method');
$table->data['edit37'][1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp3_privacy_method', '', '', __('No change'), '', true);
$table->data['edit37'][2] = __('Privacy pass').ui_print_help_tip(__('The pass length must be eight character minimum.'), true);
$table->data['edit37'][3] = html_print_input_password('snmp3_privacy_pass', '', '', 15, 60, true);
$table->data['edit38'][0] = __('Auth method');
$table->data['edit38'][1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'plugin_parameter', '', '', __('No change'), '', true);
$table->data['edit38'][2] = __('Security level');
$table->data['edit38'][3] = html_print_select(
[
'noAuthNoPriv' => __('Not auth and not privacy method'),
'authNoPriv' => __('Auth and not privacy method'),
'authPriv' => __('Auth and privacy method'),
],
'custom_string_3',
'',
'',
__('No change'),
'',
true
);
$table->data['edit4'][0] = __('Value');
$table->data['edit4'][1] = ''.__('Min.').'';
$table->data['edit4'][1] .= html_print_input_text('min', '', '', 5, 15, true);
$table->data['edit4'][1] .= '
'.__('Max.').'';
$table->data['edit4'][1] .= html_print_input_text('max', '', '', 5, 15, true);
$table->data['edit4'][2] = __('Module group');
// Create module groups values for select
$module_groups = modules_get_modulegroups();
$module_groups[0] = __('Not assigned');
$table->data['edit4'][3] = html_print_select(
$module_groups,
'id_module_group',
'',
'',
__('No change'),
'',
true,
false,
false
);
$table->data['edit5'][0] = __('Username');
$table->data['edit5'][1] = html_print_input_text('plugin_user', '', '', 15, 60, true);
$table->data['edit5'][2] = __('Password');
$table->data['edit5'][3] = html_print_input_password('plugin_pass', '', '', 15, 60, true);
// Export target
$table->data['edit6'][0] = __('Export target');
$targets2 = db_get_all_rows_sql('SELECT id, name FROM tserver_export ORDER by name');
if ($targets2 === false) {
$targets2 = [];
}
$targets = [];
$targets[0] = __('None');
foreach ($targets2 as $t) {
$targets[$t['id']] = $t['name'];
}
$table->data['edit6'][1] = html_print_select($targets, 'id_export', '', '', __('No change'), '', true, false, false);
$table->data['edit6'][2] = __('Unit');
$table->data['edit6'][3] = html_print_extended_select_for_unit('unit', '-1', '', '', '0', '15', true, false, false, false, 1);
// FF stands for Flip-flop.
$table->data['edit7'][0] = __('FF threshold').' ';
$table->colspan['edit7'][1] = 3;
$table->data['edit7'][1] = __('Mode').' ';
$table->data['edit7'][1] .= html_print_select(
[
'' => __('No change'),
'1' => __('Each state changing'),
'0' => __('All state changing'),
],
'each_ff',
'',
'',
'',
'',
true,
false,
true,
'',
false,
'width: 400px;'
).'
';
$table->data['edit7'][1] .= __('All state changing').' : ';
$table->data['edit7'][1] .= html_print_input_text(
'min_ff_event',
'',
'',
5,
15,
true
).'
';
$table->data['edit7'][1] .= __('Each state changing').' : ';
$table->data['edit7'][1] .= __('To normal').' ';
$table->data['edit7'][1] .= html_print_input_text(
'min_ff_event_normal',
'',
'',
5,
15,
true
).' ';
$table->data['edit7'][1] .= __('To warning').' ';
$table->data['edit7'][1] .= html_print_input_text(
'min_ff_event_warning',
'',
'',
5,
15,
true
).' ';
$table->data['edit7'][1] .= __('To critical').' ';
$table->data['edit7'][1] .= html_print_input_text(
'min_ff_event_critical',
'',
'',
5,
15,
true
).'
';
$table->data['edit7'][1] .= __('Keep counters').' ';
$table->data['edit7'][1] .= html_print_select(
[
'' => __('No change'),
'1' => __('Active Counters'),
'0' => __('Inactive Counters'),
],
'ff_type',
'',
'',
'',
'',
true,
false,
true,
'',
false,
'width: 400px;'
);
$table->data['edit8'][0] = __('FF interval');
$table->data['edit8'][1] = html_print_input_text(
'module_ff_interval',
'',
'',
5,
10,
true
);
$table->data['edit8'][1] .= ui_print_help_tip(
__('Module execution flip flop time interval (in secs).'),
true
);
$table->data['edit8'][2] = __('FF timeout');
$table->data['edit8'][3] = html_print_input_text(
'ff_timeout',
'',
'',
5,
10,
true
);
$table->data['edit8'][3] .= ui_print_help_tip(
__('Timeout in secs from start of flip flop counting. If this value is exceeded, FF counter is reset. Set to 0 for no timeout.'),
true
);
$table->data['edit9'][0] = __('Historical data');
$table->data['edit9'][1] = html_print_select(['' => __('No change'), '1' => __('Yes'), '0' => __('No')], 'history_data', '', '', '', '', true);
// Tags avalaible
$id_tag = [];
$table->data['edit10'][0] = __('Tags');
$table->data['edit10'][1] = html_print_select_from_sql(
'SELECT id_tag, name FROM ttag ORDER BY name',
'id_tag[]',
$id_tag,
'',
__('None'),
'0',
true,
true,
false,
false
);
$table->data['edit10'][2] = __('Category');
$table->data['edit10'][3] = html_print_select(categories_get_all_categories('forselect'), 'id_category', '', '', __('No change'), '', true, false, false);
if (enterprise_installed()) {
$table->rowspan['edit10'][0] = $table->rowspan['edit10'][1] = 2;
$table->data['edit101'][2] = __('Policy linking status').ui_print_help_tip(__('This field only has sense in modules adopted by a policy.'), true);
$table->data['edit101'][3] = html_print_select([MODULE_PENDING_LINK => __('Linked'), MODULE_PENDING_UNLINK => __('Unlinked')], 'policy_linked', '', '', __('No change'), '', true, false, false);
}
if ($table->rowspan['edit10'][0] == 2) {
$table->rowspan['edit10'][0] = $table->rowspan['edit10'][1] = 3;
} else {
$table->rowspan['edit10'][0] = $table->rowspan['edit10'][1] = 2;
}
$table->data['edit102'][2] = __('Discard unknown events');
$table->data['edit102'][3] = html_print_select(
[
'' => __('No change'),
'1' => __('Yes'),
'0' => __('No'),
],
'throw_unknown_events',
'',
'',
'',
'',
true
);
$table->data['edit12'][0] = ''.__('Critical instructions').''.ui_print_help_tip(__('Instructions when the status is critical'), true);
$table->data['edit12'][1] = html_print_textarea('critical_instructions', 2, 50, '', '', true);
$table->colspan['edit12'][1] = 3;
$table->data['edit13'][0] = ''.__('Warning instructions').''.ui_print_help_tip(__('Instructions when the status is warning'), true);
$table->data['edit13'][1] = html_print_textarea('warning_instructions', 2, 50, '', '', true);
$table->colspan['edit13'][1] = 3;
$table->data['edit14'][0] = ''.__('Unknown instructions').''.ui_print_help_tip(__('Instructions when the status is unknown'), true);
$table->data['edit14'][1] = html_print_textarea('unknown_instructions', 2, 50, '', '', true);
$table->colspan['edit14'][1] = 3;
$table->data['edit11'][0] = __('Quiet');
$table->data['edit11'][0] .= ui_print_help_tip(__('The module still store data but the alerts and events will be stop'), true);
$table->data['edit11'][1] = html_print_select(
[
-1 => __('No change'),
1 => __('Yes'),
0 => __('No'),
],
'quiet_select',
-1,
'',
'',
0,
true
);
$table->data['edit11'][2] = __('Timeout');
$table->data['edit11'][3] = html_print_input_text(
'max_timeout',
'',
'',
5,
10,
true
).' '.ui_print_help_tip(
__('Seconds that agent will wait for the execution of the module.'),
true
);
$table->data['edit16'][0] = __('Retries');
$table->data['edit16'][1] = html_print_input_text('max_retries', '', '', 5, 10, true).' '.ui_print_help_tip(
__('Number of retries that the module will attempt to run.'),
true
);
$table->data['edit22'][0] = __('Web checks');
;
$table->data['edit22'][1] = '';
$table->data['edit16'][2] = __('Port');
$table->data['edit16'][3] = html_print_input_text('tcp_port', '', '', 5, 20, true);
$table->data['edit17'][0] = __('TCP send');
$table->data['edit17'][1] = html_print_textarea('tcp_send2', 2, 65, '', '', true);
$table->data['edit17'][2] = __('TCP receive');
$table->data['edit17'][3] = html_print_textarea('tcp_rcv', 2, 65, '', '', true);
$table->data['edit18'][0] = __('WMI query');
$table->data['edit18'][1] = html_print_input_text('wmi_query', '', '', 35, 255, true);
$table->data['edit18'][2] = __('Key string');
$table->data['edit18'][3] = html_print_input_text('key_string', '', '', 20, 60, true);
$table->data['edit19'][0] = __('Field number');
$table->data['edit19'][1] = html_print_input_text('field_number', '', '', 5, 15, true);
$table->data['edit20'][0] = __('Plugin').ui_print_help_icon('plugin_macros', true);
$table->data['edit20'][1] = html_print_select_from_sql(
'SELECT id, name FROM tplugin ORDER BY name',
'id_plugin',
'',
'changePluginSelect();',
__('None'),
0,
true,
false,
false
);
// Store the macros in base64 into a hidden control to move between pages
$table->data['edit21'][0] = html_print_input_hidden('macros', base64_encode($macros), true);
$table->colspan['edit23'][1] = 3;
$table->data['edit23'][0] = __('Command');
$table->data['edit23'][1] = html_print_input_text_extended(
'tcp_send',
'',
'command_text',
'',
100,
10000,
false,
'',
'',
true
);
require_once $config['homedir'].'/include/class/CredentialStore.class.php';
$array_credential_identifier = CredentialStore::getKeys('CUSTOM');
$table->data['edit24'][0] = __('Credential identifier');
$table->data['edit24'][1] = html_print_select(
$array_credential_identifier,
'custom_string_1',
'',
'',
__('None'),
'',
true,
false,
false
);
$array_os = [
'' => __('No change'),
'inherited' => __('Inherited'),
'linux' => __('Linux'),
'windows' => __('Windows'),
];
$table->data['edit24'][2] = __('Target OS');
$table->data['edit24'][3] = html_print_select(
$array_os,
'custom_string_2',
'',
'',
'',
'',
true,
false,
false,
''
);
if (empty($id_plugin) === false) {
$preload = db_get_sql(
sprintf(
'SELECT description FROM tplugin WHERE id = %s',
$id_plugin
)
);
$preload = io_safe_output($preload);
$preload = str_replace("\n", '
', $preload);
} else {
$preload = '';
}
$table->data['edit21'][1] = sprintf(
'%s',
$preload
);
echo '';
echo '
';
// Hack to translate text "none" in PHP to javascript.
echo ''.__('None').'';
echo ''.__('Please, select an agent first').'';
// Load JS files.
ui_require_javascript_file('pandora_modules');
ui_require_jquery_file('pandora.controls');
if ($selection_mode == 'modules') {
$modules_row = '';
$agents_row = 'none';
} else {
$modules_row = 'none';
$agents_row = '';
}
?>
(int) $throw_unknown_events,
];
$values['disabled_types_event'] = json_encode($disabled_types_event);
}
if (strlen(get_parameter('history_data')) > 0) {
$values['history_data'] = get_parameter('history_data');
}
if (get_parameter('quiet_select', -1) != -1) {
$values['quiet'] = get_parameter('quiet_select');
}
// Whether to update module tag info.
$update_tags = get_parameter('id_tag', false);
if (array_search(0, $agents_select) !== false) {
if (is_numeric($module_name) === false || ($module_name !== 0)) {
$filterModules = sprintf('AND tam.nombre = \'%s\'', $module_name);
} else {
$filterModules = '';
}
// Apply at All agents (within valid groups).
$modules = db_get_all_rows_sql(
sprintf(
'SELECT tam.id_agente_modulo, tam.id_tipo_modulo
FROM tagente_modulo tam INNER JOIN tagente ta
ON ta.id_agente = tam.id_agente
WHERE ta.id_grupo IN (%s) %s;',
implode(',', array_keys(users_get_groups())),
$filterModules
)
);
} else {
if ($module_name === '0') {
// Any module.
$modules = db_get_all_rows_filter(
'tagente_modulo',
['id_agente' => $agents_select],
[
'id_agente_modulo',
'id_tipo_modulo',
]
);
} else {
$modules = db_get_all_rows_filter(
'tagente_modulo',
[
'id_agente' => $agents_select,
'nombre' => $module_name,
],
[
'id_agente_modulo',
'id_tipo_modulo',
]
);
}
}
if ($modules === false) {
return false;
}
if (($module_status === 'unknown') && ($module_name == '0')) {
$modules_to_delete = [];
foreach ($modules as $mod_id) {
$mod_status = (int) db_get_value_filter('estado', 'tagente_estado', ['id_agente_modulo' => $mod_id]);
// Unknown, not init and no data modules.
if ($mod_status == 3 || $mod_status == 4 || $mod_status == 5) {
$modules_to_delete[$mod_id] = $mod_id;
}
}
$modules = $modules_to_delete;
}
foreach ($modules as $module) {
if ($module_status !== '-1') {
if (modules_is_not_init($module['id_agente_modulo']) === true) {
if ($module_status != AGENT_MODULE_STATUS_NO_DATA && $module_status != AGENT_MODULE_STATUS_NOT_INIT) {
continue;
}
} else {
$status = modules_get_agentmodule_status($module['id_agente_modulo']);
if ($module_status !== $status) {
continue;
}
}
}
// Set tcp_send value according to module type since the purpose of this field in database varies in case of SNMP modules.
if ($module['id_tipo_modulo'] == MODULE_TYPE_REMOTE_SNMP
|| $module['id_tipo_modulo'] == MODULE_TYPE_REMOTE_SNMP_INC
|| $module['id_tipo_modulo'] == MODULE_TYPE_REMOTE_SNMP_STRING
|| $module['id_tipo_modulo'] <= MODULE_TYPE_REMOTE_SNMP_PROC
) {
if ($snmp_version != '') {
$values['tcp_send'] = $snmp_version;
} else {
unset($values['tcp_send']);
}
} else {
if ($tcp_send2 != '') {
$values['tcp_send'] = $tcp_send2;
} else {
unset($values['tcp_send']);
}
}
$result = modules_update_agent_module(
$module['id_agente_modulo'],
$values,
true,
$update_tags
);
if (is_error($result)) {
return false;
}
}
return true;
}