add Remote CMD

This commit is contained in:
Daniel Barbero 2019-10-09 17:26:06 +02:00
parent be2148ff26
commit 8af72c1c9d
10 changed files with 533 additions and 189 deletions

View File

@ -0,0 +1,9 @@
START TRANSACTION;
INSERT INTO `ttipo_modulo` VALUES
(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'),
(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'),
(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'),
(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png');
COMMIT;

View File

@ -1654,7 +1654,12 @@ INSERT INTO tmodule VALUES (8, 'Wux module');
-- Table `ttipo_modulo`
-- ---------------------------------------------------------------------
INSERT INTO ttipo_modulo VALUES (25,'web_analysis', 8, 'Web analysis data', 'module-wux.png');
INSERT INTO `ttipo_modulo` VALUES
(25,'web_analysis', 8, 'Web analysis data', 'module-wux.png'),
(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'),
(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'),
(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'),
(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png');
-- ---------------------------------------------------------------------
-- Table `tdashboard`
@ -2293,3 +2298,4 @@ CREATE TABLE `tdeployment_hosts` (
FOREIGN KEY (`target_agent_version_id`) REFERENCES `tagent_repository`(`id`)
ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -13,7 +13,8 @@ switch ($_GET['module']) {
$sql = sprintf(
'SELECT id_tipo, descripcion
FROM ttipo_modulo
WHERE categoria between 3 and 5 '
WHERE categoria between 3 and 5
OR categoria = 10 '
);
break;

View File

@ -1330,7 +1330,7 @@ if ($update_module || $create_module) {
// Change double quotes by single.
$snmp_oid = preg_replace('/"/', ''', $snmp_oid);
if (empty($snmp_oid)) {
if (empty($snmp_oid) === true) {
// The user did not set any OID manually but did a SNMP walk.
$snmp_oid = (string) get_parameter('select_snmp_oid');
}
@ -1339,18 +1339,31 @@ if ($update_module || $create_module) {
// New support for snmp v3.
$tcp_send = (string) get_parameter('snmp_version');
$plugin_user = (string) get_parameter('snmp3_auth_user');
$plugin_pass = io_input_password((string) get_parameter('snmp3_auth_pass'));
$plugin_pass = io_input_password(
(string) get_parameter('snmp3_auth_pass')
);
$plugin_parameter = (string) get_parameter('snmp3_auth_method');
$custom_string_1 = (string) get_parameter('snmp3_privacy_method');
$custom_string_2 = io_input_password((string) get_parameter('snmp3_privacy_pass'));
$custom_string_2 = io_input_password(
(string) get_parameter('snmp3_privacy_pass')
);
$custom_string_3 = (string) get_parameter('snmp3_security_level');
} else if ($id_module_type >= 34 && $id_module_type <= 37) {
hd($_POST);
$tcp_send = (string) get_parameter('command_text');
$custom_string_1 = (string) get_parameter(
'command_credential_identifier'
);
$custom_string_2 = (string) get_parameter('command_os');
} else {
$plugin_user = (string) get_parameter('plugin_user');
if (get_parameter('id_module_component_type') == 7) {
$plugin_pass = (int) get_parameter('plugin_pass');
} else {
$plugin_pass = io_input_password((string) get_parameter('plugin_pass'));
$plugin_pass = io_input_password(
(string) get_parameter('plugin_pass')
);
}
$plugin_parameter = (string) get_parameter('plugin_parameter');

View File

@ -1,16 +1,32 @@
<?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Modules
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
require_once 'include/functions_network_components.php';
enterprise_include_once('include/functions_local_components.php');
@ -19,18 +35,27 @@ if (is_ajax()) {
$snmp_walk = (bool) get_parameter('snmp_walk');
$get_module_component = (bool) get_parameter('get_module_component');
$get_module_components = (bool) get_parameter('get_module_components');
$get_module_local_components = (bool) get_parameter('get_module_local_components');
$get_module_local_component = (bool) get_parameter('get_module_local_component');
$get_module_local_components = (bool) get_parameter(
'get_module_local_components'
);
$get_module_local_component = (bool) get_parameter(
'get_module_local_component'
);
if ($get_module_component) {
$id_component = (int) get_parameter('id_module_component');
$component = db_get_row('tnetwork_component', 'id_nc', $id_component);
$component['throw_unknown_events'] = network_components_is_disable_type_event($id_component, EVENTS_GOING_UNKNOWN);
$component['throw_unknown_events'] = network_components_is_disable_type_event(
$id_component,
EVENTS_GOING_UNKNOWN
);
// Decrypt passwords in the component.
$component['plugin_pass'] = io_output_password($component['plugin_pass']);
$component['plugin_pass'] = io_output_password(
$component['plugin_pass']
);
$component['str_warning'] = io_safe_output($component['str_warning']);
$component['str_critical'] = io_safe_output($component['str_critical']);
@ -83,33 +108,29 @@ if (is_ajax()) {
$component = db_get_row('tlocal_component', 'id', $id_component);
foreach ($component as $index => $element) {
$component[$index] = html_entity_decode($element, ENT_QUOTES, 'UTF-8');
$component[$index] = html_entity_decode(
$element,
ENT_QUOTES,
'UTF-8'
);
}
$typeName = local_components_parse_module_extract_value('module_type', $component['data']);
$typeName = local_components_parse_module_extract_value(
'module_type',
$component['data']
);
switch ($config['dbtype']) {
case 'mysql':
$component['type'] = db_get_value_sql(
'
SELECT id_tipo
FROM ttipo_modulo
WHERE nombre LIKE "'.$typeName.'"'
);
break;
$component['type'] = db_get_value_sql(
'
SELECT id_tipo
FROM ttipo_modulo
WHERE nombre LIKE "'.$typeName.'"'
);
case 'postgresql':
case 'oracle':
$component['type'] = db_get_value_sql(
'
SELECT id_tipo
FROM ttipo_modulo
WHERE nombre LIKE \''.$typeName.'\''
);
break;
}
$component['throw_unknown_events'] = !local_components_is_disable_type_event($id_component, EVENTS_GOING_UNKNOWN);
$component['throw_unknown_events'] = !local_components_is_disable_type_event(
$id_component,
EVENTS_GOING_UNKNOWN
);
echo io_json_mb_encode($component);
return;
@ -136,7 +157,9 @@ if (is_ajax()) {
$snmp3_auth_method = get_parameter('snmp3_auth_method');
$snmp3_auth_pass = io_safe_output(get_parameter('snmp3_auth_pass'));
$snmp3_privacy_method = get_parameter('snmp3_privacy_method');
$snmp3_privacy_pass = io_safe_output(get_parameter('snmp3_privacy_pass'));
$snmp3_privacy_pass = io_safe_output(
get_parameter('snmp3_privacy_pass')
);
$snmp_port = get_parameter('snmp_port');
$snmpwalk = get_snmpwalk(
@ -177,7 +200,7 @@ require_once 'include/functions_exportserver.php';
require_once $config['homedir'].'/include/functions_modules.php';
require_once $config['homedir'].'/include/functions_agents.php';
// Reading a module
// Reading a module.
if ($id_agent_module) {
$module = modules_get_agentmodule($id_agent_module);
$moduletype = $module['id_modulo'];
@ -202,19 +225,25 @@ if ($id_agent_module) {
$snmp_community = $module['snmp_community'];
$snmp_oid = $module['snmp_oid'];
// New support for snmp v3
// New support for snmp v3.
$snmp_version = $module['tcp_send'];
$snmp3_auth_user = $module['plugin_user'];
$snmp3_auth_pass = io_output_password($module['plugin_pass']);
// Auth method could be MD5 or SHA
// Auth method could be MD5 or SHA.
$snmp3_auth_method = $module['plugin_parameter'];
// Privacy method could be DES or AES
// Privacy method could be DES or AES.
$snmp3_privacy_method = $module['custom_string_1'];
$snmp3_privacy_pass = io_output_password($module['custom_string_2']);
// Security level Could be noAuthNoPriv | authNoPriv | authPriv
// For Remote cmd fields are reused:
// tcp_send, custom_string_1, custom_string_2.
$command_text = $module['tcp_send'];
$command_credential_identifier = $module['custom_string_1'];
$command_os = $module['custom_string_2'];
// Security level Could be noAuthNoPriv | authNoPriv | authPriv.
$snmp3_security_level = $module['custom_string_3'];
$ip_target = $module['ip_target'];
@ -265,39 +294,39 @@ if ($id_agent_module) {
$id_category = $module['id_category'];
$cron_interval = explode(' ', $module['cron_interval']);
if (isset($cron_interval[4])) {
if (isset($cron_interval[4]) === true) {
$minute_from = $cron_interval[0];
$minute = explode('-', $minute_from);
$minute_from = $minute[0];
if (isset($minute[1])) {
if (isset($minute[1]) === true) {
$minute_to = $minute[1];
}
$hour_from = $cron_interval[1];
$h = explode('-', $hour_from);
$hour_from = $h[0];
if (isset($h[1])) {
if (isset($h[1]) === true) {
$hour_to = $h[1];
}
$mday_from = $cron_interval[2];
$md = explode('-', $mday_from);
$mday_from = $md[0];
if (isset($md[1])) {
if (isset($md[1]) === true) {
$mday_to = $md[1];
}
$month_from = $cron_interval[3];
$m = explode('-', $month_from);
$month_from = $m[0];
if (isset($m[1])) {
if (isset($m[1]) === true) {
$month_to = $m[1];
}
$wday_from = $cron_interval[4];
$wd = explode('-', $wday_from);
$wday_from = $wd[0];
if (isset($wd[1])) {
if (isset($wd[1]) === true) {
$wday_to = $wd[1];
}
} else {
@ -315,14 +344,17 @@ if ($id_agent_module) {
}
$module_macros = null;
if (isset($module['module_macros'])) {
$module_macros = json_decode(base64_decode($module['module_macros']), true);
if (isset($module['module_macros']) === true) {
$module_macros = json_decode(
base64_decode($module['module_macros']),
true
);
}
} else {
if (!isset($moduletype)) {
if (isset($moduletype) === false) {
$moduletype = (string) get_parameter('moduletype');
// Clean up specific network modules fields
// Clean up specific network modules fields.
$name = '';
$description = '';
$id_module_group = 1;
@ -374,7 +406,7 @@ if ($id_agent_module) {
$str_critical = '';
$ff_event = 0;
// New support for snmp v3
// New support for snmp v3.
$snmp_version = 1;
$snmp3_auth_user = '';
$snmp3_auth_pass = '';
@ -383,6 +415,11 @@ if ($id_agent_module) {
$snmp3_privacy_pass = '';
$snmp3_security_level = '';
// For Remote CMD.
$command_text = '';
$command_credential_identifier = '';
$command_os = '';
$critical_instructions = '';
$warning_instructions = '';
$unknown_instructions = '';
@ -418,7 +455,9 @@ if ($id_agent_module) {
}
}
$is_function_policies = enterprise_include_once('include/functions_policies.php');
$is_function_policies = enterprise_include_once(
'include/functions_policies.php'
);
if ($is_function_policies !== ENTERPRISE_NOT_HOOK) {
$relink_policy = get_parameter('relink_policy', 0);
@ -428,19 +467,32 @@ if ($is_function_policies !== ENTERPRISE_NOT_HOOK) {
$policy_info = policies_info_module_policy($id_agent_module);
$policy_id = $policy_info['id_policy'];
if ($relink_policy && policies_get_policy_queue_status($policy_id) == STATUS_IN_QUEUE_APPLYING) {
ui_print_error_message(__('This policy is applying and cannot be modified'));
if ($relink_policy
&& policies_get_policy_queue_status($policy_id) == STATUS_IN_QUEUE_APPLYING
) {
ui_print_error_message(
__('This policy is applying and cannot be modified')
);
} else {
$result = policies_relink_module($id_agent_module);
ui_print_result_message($result, __('Module will be linked in the next application'));
ui_print_result_message(
$result,
__('Module will be linked in the next application')
);
db_pandora_audit('Agent management', 'Re-link module '.$id_agent_module);
db_pandora_audit(
'Agent management',
'Re-link module '.$id_agent_module
);
}
}
if ($unlink_policy) {
$result = policies_unlink_module($id_agent_module);
ui_print_result_message($result, __('Module will be unlinked in the next application'));
ui_print_result_message(
$result,
__('Module will be unlinked in the next application')
);
db_pandora_audit('Agent management', 'Unlink module '.$id_agent_module);
}
@ -452,7 +504,7 @@ $remote_conf = false;
if ($__code_from !== 'policies') {
// Only check in the module editor.
// Check ACL tags
// Check ACL tags.
$tag_acl = true;
// If edit a existing module.
@ -479,12 +531,12 @@ switch ($moduletype) {
$remote_conf = false;
if (enterprise_installed()) {
enterprise_include_once('include/functions_config_agents.php');
$remote_conf = enterprise_hook('config_agents_has_remote_configuration', [$id_agente]);
$remote_conf = enterprise_hook(
'config_agents_has_remote_configuration',
[$id_agente]
);
}
/*
Categories is an array containing the allowed module types
(generic_data, generic_string, etc) from ttipo_modulo (field categoria) */
$categories = [
0,
1,
@ -503,12 +555,16 @@ switch ($moduletype) {
'config_agents_get_module_from_conf',
[
$id_agente,
io_safe_output(modules_get_agentmodule_name($id_agent_module)),
io_safe_output(
modules_get_agentmodule_name($id_agent_module)
),
]
);
}
enterprise_include('godmode/agentes/module_manager_editor_data.php');
enterprise_include(
'godmode/agentes/module_manager_editor_data.php'
);
}
break;
@ -519,6 +575,7 @@ switch ($moduletype) {
3,
4,
5,
10,
];
include 'module_manager_editor_common.php';
include 'module_manager_editor_network.php';
@ -562,9 +619,12 @@ switch ($moduletype) {
include 'module_manager_editor_wmi.php';
break;
// WARNING: type 7 is reserved on enterprise
// WARNING: type 7 is reserved on enterprise.
default:
if (enterprise_include('godmode/agentes/module_manager_editor.php') === ENTERPRISE_NOT_HOOK) {
if (enterprise_include(
'godmode/agentes/module_manager_editor.php'
) === ENTERPRISE_NOT_HOOK
) {
ui_print_error_message(sprintf(__('Invalid module type')));
return;
}
@ -580,7 +640,7 @@ if ($config['enterprise_installed'] && $id_agent_module) {
echo '<h3 id="message" class="error invisible"></h3>';
// TODO: Change to the ui_print_error system
// TODO: Change to the ui_print_error system.
echo '<form method="post" id="module_form">';
ui_toggle(
@ -602,12 +662,18 @@ ui_toggle(
if ($moduletype != 13) {
ui_toggle(
html_print_table($table_new_relations, true).html_print_table($table_relations, true),
html_print_table(
$table_new_relations,
true
).html_print_table(
$table_relations,
true
),
__('Module relations')
);
}
// Submit
// Submit.
echo '<div class="action-buttons" style="width: '.$table_simple->width.'">';
if ($id_agent_module) {
html_print_submit_button(
@ -659,38 +725,84 @@ ui_require_javascript_file('pandora_modules');
<script language="javascript">
/* <![CDATA[ */
var no_name_lang =`
<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No module name provided') ]); ?>
<?php
echo ui_print_info_message(
[
'no_close' => true,
'message' => __('No module name provided'),
]
);
?>
`;
var no_target_lang =`
<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No target IP provided') ]); ?>
<?php
echo ui_print_info_message(
[
'no_close' => true,
'message' => __('No target IP provided'),
]
);
?>
`;
var no_oid_lang =`
<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No SNMP OID provided') ]); ?>
<?php
echo ui_print_info_message(
[
'no_close' => true,
'message' => __('No SNMP OID provided'),
]
);
?>
`;
var no_prediction_module_lang =`
<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No module to predict') ]); ?>
<?php
echo ui_print_info_message(
[
'no_close' => true,
'message' => __('No module to predict'),
]
);
?>
`;
var no_plugin_lang =`
<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No plug-in provided') ]); ?>
<?php
echo ui_print_info_message(
[
'no_close' => true,
'message' => __('No plug-in provided'),
]
);
?>
`;
var no_execute_test_from =`
<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No server provided') ]); ?>
<?php
echo ui_print_info_message(
[
'no_close' => true,
'message' => __('No server provided'),
]
);
?>
`;
$(document).ready (function () {
configure_modules_form ();
$("#module_form").submit(function() {
if (typeof(check_remote_conf) != 'undefined') {
if (typeof(check_remote_conf) != 'undefined') {
if (check_remote_conf) {
//Check the name
//Check the name.
name = $("#text-name").val();
remote_config = $("#textarea_configuration_data").val();
regexp_name = new RegExp('module_name\\s*' + name.replace(/([^0-9A-Za-z_])/g, "\\$1") +"\n");
regexp_name = new RegExp(
'module_name\\s*' + name.replace(/([^0-9A-Za-z_])/g,
"\\$1"
) +"\n"
);
regexp_plugin = new RegExp('^module_plugin\\s*');
if (remote_config == '' || remote_config.match(regexp_name) ||
remote_config.match(regexp_plugin) ||
$("#id_module_type").val()==100 ||
@ -698,15 +810,15 @@ $(document).ready (function () {
return true;
}
else {
alert("<?php echo __('Error, The field name and name in module_name in data configuration are different.'); ?>");
alert ("<?php echo __('Error, The field name and name in module_name in data configuration are different.'); ?>");
return false;
}
}
}
return true;
});
function checkKeepaliveModule() {
// keepalive modules have id = 100
if ($("#id_module_type").val()==100 ||
@ -720,11 +832,10 @@ $(document).ready (function () {
$("#simple-configuration_data").show();
}
}
}
checkKeepaliveModule();
$("#id_module_type").change (function () {
checkKeepaliveModule();
});
@ -741,11 +852,15 @@ function handleFileSelect() {
err_msg_2 = "<?php echo __('Couldn`t find the fileinput element.'); ?>";
err_msg_3 = "<?php echo __('This browser doesn`t seem to support the files property of file inputs.'); ?>";
err_msg_4 = "<?php echo __('Please select a file before clicking Load'); ?>";
if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
if (!window.File ||
!window.FileReader ||
!window.FileList ||
!window.Blob
) {
$('#mssg_error_div').append(err_msg_1);
return;
}
}
input = document.getElementById('file-file_html_text');
@ -756,7 +871,7 @@ function handleFileSelect() {
$('#mssg_error_div').append(err_msg_3);
}
else if (!input.files[0]) {
$('#mssg_error_div').append(err_msg_4);
$('#mssg_error_div').append(err_msg_4);
}
else {
file = input.files[0];
@ -767,7 +882,9 @@ function handleFileSelect() {
}
function receivedText() {
document.getElementById('textarea_custom_string_1').appendChild(document.createTextNode(fr.result));
}
document
.getElementById('textarea_custom_string_1')
.appendChild(document.createTextNode(fr.result));
}
/* ]]> */
</script>

View File

@ -132,7 +132,7 @@ function add_component_selection($id_network_component_type)
require_once 'include/functions_network_components.php';
enterprise_include_once('include/functions_policies.php');
// If code comes from policies disable export select
// If code comes from policies disable export select.
global $__code_from;
$disabledBecauseInPolicy = false;
@ -209,8 +209,7 @@ $table_simple->data[0][1] = html_print_input_text_extended(
$largeClassDisabledBecauseInPolicy,
true
);
// $table_simple->data[0][1] = html_print_input_text ('name',
// io_safe_output($name), '', 45, 100, true, $disabledBecauseInPolicy);
if (!empty($id_agent_module) && isset($id_agente)) {
$table_simple->data[0][1] .= '&nbsp;<b>'.__('ID').'</b>&nbsp;&nbsp;'.$id_agent_module.' ';
@ -237,7 +236,13 @@ if ($policy_link != 0) {
}
$table_simple->data[0][2] = __('Disabled');
$table_simple->data[0][2] .= html_print_checkbox('disabled', 1, $disabled, true, $disabled_enable);
$table_simple->data[0][2] .= html_print_checkbox(
'disabled',
1,
$disabled,
true,
$disabled_enable
);
$table_simple->data[0][3] = __('Module group');
$table_simple->data[0][3] .= html_print_select_from_sql(
'SELECT id_mg, name FROM tmodule_group ORDER BY name',
@ -260,12 +265,18 @@ if ((isset($id_agent_module) && $id_agent_module) || $id_policy_module != 0) {
$in_policy = strstr($page, 'policy_modules');
if (!$in_policy) {
// Cannot select the current module to be itself parent
$module_parent_filter = $id_agent_module ? ['tagente_modulo.id_agente_modulo' => "<>$id_agent_module"] : '';
// Cannot select the current module to be itself parent.
$module_parent_filter = ($id_agent_module) ? ['tagente_modulo.id_agente_modulo' => "<>$id_agent_module"] : '';
$table_simple->data[1][0] = __('Module parent');
$modules_can_be_parent = agents_get_modules($id_agente, false, $module_parent_filter);
// If the user cannot have access to parent module, only print the name
if ($parent_module_id != 0 && !in_array($parent_module_id, array_keys($modules_can_be_parent))) {
$modules_can_be_parent = agents_get_modules(
$id_agente,
false,
$module_parent_filter
);
// If the user cannot have access to parent module, only print the name.
if ($parent_module_id != 0
&& !in_array($parent_module_id, array_keys($modules_can_be_parent))
) {
$table_simple->data[1][1] = db_get_value(
'nombre',
'tagente_modulo',
@ -305,7 +316,11 @@ if (!$edit) {
}
$table_simple->data[2][1] = '<em>'.modules_get_moduletype_description($id_module_type).' ('.$type_names_hash[$id_module_type].')</em>';
$table_simple->data[2][1] .= html_print_input_hidden('type_names', base64_encode(io_json_mb_encode($type_names_hash)), true);
$table_simple->data[2][1] .= html_print_input_hidden(
'type_names',
base64_encode(io_json_mb_encode($type_names_hash)),
true
);
} else {
if (isset($id_module_type)) {
$idModuleType = $id_module_type;
@ -313,12 +328,13 @@ if (!$edit) {
$idModuleType = '';
}
// Removed web analysis and log4x from select
// Removed web analysis and log4x from select.
$sql = sprintf(
'SELECT id_tipo, descripcion, nombre
'SELECT id_tipo, descripcion, nombre, categoria
FROM ttipo_modulo
WHERE categoria IN (%s) AND id_tipo NOT IN (24, 25)
ORDER BY descripcion',
WHERE categoria IN (%s)
AND id_tipo NOT IN (24, 25)
ORDER BY id_tipo ASC',
implode(',', $categories)
);
@ -326,7 +342,9 @@ if (!$edit) {
$type_names_hash = [];
$type_description_hash = [];
if (isset($type_names) && is_array($type_names)) {
if (isset($type_names) === true
&& is_array($type_names) === true
) {
foreach ($type_names as $tn) {
$type_names_hash[$tn['id_tipo']] = $tn['nombre'];
$type_description_hash[$tn['id_tipo']] = $tn['descripcion'];
@ -342,7 +360,7 @@ if (!$edit) {
0,
true,
false,
true,
false,
'',
false,
false,
@ -350,8 +368,12 @@ if (!$edit) {
100
);
// Store the relation between id and name of the types on a hidden field
$table_simple->data[2][1] .= html_print_input_hidden('type_names', base64_encode(io_json_mb_encode($type_names_hash)), true);
// Store the relation between id and name of the types on a hidden field.
$table_simple->data[2][1] .= html_print_input_hidden(
'type_names',
base64_encode(io_json_mb_encode($type_names_hash)),
true
);
}
if ($edit_module) {
@ -380,15 +402,32 @@ if ($edit_module) {
$help_header = 'webserver_module_tab';
}
$table_simple->data[2][0] = __('Type').' '.ui_print_help_icon($help_header, true);
$table_simple->data[2][0] = __('Type').' ';
$table_simple->data[2][0] .= ui_print_help_icon($help_header, true);
}
if ($disabledBecauseInPolicy) {
$table_simple->data[2][3] .= html_print_input_hidden('id_module_group', $id_module_group, true);
$table_simple->data[2][3] .= html_print_input_hidden(
'id_module_group',
$id_module_group,
true
);
}
$table_simple->data[3][0] = __('Dynamic Threshold Interval');
$table_simple->data[3][1] = html_print_extended_select_for_time('dynamic_interval', $dynamic_interval, '', 'None', '0', 10, true, 'width:150px', false, $classdisabledBecauseInPolicy, $disabledBecauseInPolicy);
$table_simple->data[3][1] = html_print_extended_select_for_time(
'dynamic_interval',
$dynamic_interval,
'',
'None',
'0',
10,
true,
'width:150px',
false,
$classdisabledBecauseInPolicy,
$disabledBecauseInPolicy
);
$table_simple->data[3][1] .= '<a onclick=advanced_option_dynamic()>'.html_print_image('images/cog.png', true, ['title' => __('Advanced options Dynamic Threshold')]).'</a>';
if ($in_policy) {
$table_simple->cellclass[2][2] = 'hide_dinamic';

View File

@ -1,30 +1,50 @@
<?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2009 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
global $config;
require_once $config['homedir'].'/include/functions_snmp_browser.php';
$snmp_browser_path = is_metaconsole() ? '../../' : '';
$snmp_browser_path = (is_metaconsole()) ? '../../' : '';
$snmp_browser_path .= 'include/javascript/pandora_snmp_browser.js';
echo "<script type='text/javascript' src='$snmp_browser_path'></script>";
// This line does not run with the dinamic loader editor in policies.
// ui_require_javascript_file ('pandora_snmp_browser');
// WARNING REPEAT input hidden errors in console
// Save some variables for javascript functions
// html_print_input_hidden ('ajax_url', ui_get_full_url("ajax.php"), false);
// html_print_input_hidden ('search_matches_translation', __("Search matches"), false);
// Define a custom action to save the OID selected in the SNMP browser to the form
html_print_input_hidden('custom_action', urlencode(base64_encode('&nbsp;<a href="javascript:setOID()"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" style="vertical-align: middle;"></img></a>')), false);
echo "<script type='text/javascript' src='".$snmp_browser_path."'></script>";
// Define a custom action to save the OID selected
// in the SNMP browser to the form.
html_print_input_hidden(
'custom_action',
urlencode(
base64_encode(
'&nbsp;<a href="javascript:setOID()"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" style="vertical-align: middle;"></img></a>'
)
),
false
);
$isFunctionPolicies = enterprise_include_once('include/functions_policies.php');
@ -50,17 +70,15 @@ if (strstr($page, 'policy_modules') === false) {
define('ID_NETWORK_COMPONENT_TYPE', 2);
if (empty($update_module_id)) {
// Function in module_manager_editor_common.php
// Function in module_manager_editor_common.php.
add_component_selection(ID_NETWORK_COMPONENT_TYPE);
} else {
// TODO: Print network component if available
}
$extra_title = __('Network server module');
$data = [];
$data[0] = __('Target IP');
// show agent_for defect;
// Show agent_for defect.
if ($page == 'enterprise/godmode/policies/policy_modules') {
if ($ip_target != 'auto' && $ip_target != '') {
$custom_ip_target = $ip_target;
@ -100,7 +118,7 @@ if ($page == 'enterprise/godmode/policies/policy_modules') {
$data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true);
}
// In ICMP modules, port is not configurable
// In ICMP modules, port is not configurable.
if ($id_module_type >= 6 && $id_module_type <= 7) {
$data[2] = '';
$data[3] = '';
@ -148,7 +166,15 @@ if (!$adopt) {
$classdisabledBecauseInPolicy
);
} else {
$data[1] = html_print_input_text('snmp_community', $snmp_community, '', 15, 60, true, false);
$data[1] = html_print_input_text(
'snmp_community',
$snmp_community,
'',
15,
60,
true,
false
);
}
$data[2] = _('SNMP version');
@ -213,8 +239,27 @@ $data[1] .= html_print_input_text(
$classdisabledBecauseInPolicy
);
$data[1] .= '<span class="invisible" id="oid">';
$data[1] .= html_print_select([], 'select_snmp_oid', $snmp_oid, '', '', 0, true, false, false, '', $disabledBecauseInPolicy);
$data[1] .= html_print_image('images/edit.png', true, ['class' => 'invisible clickable', 'id' => 'edit_oid']);
$data[1] .= html_print_select(
[],
'select_snmp_oid',
$snmp_oid,
'',
'',
0,
true,
false,
false,
'',
$disabledBecauseInPolicy
);
$data[1] .= html_print_image(
'images/edit.png',
true,
[
'class' => 'invisible clickable',
'id' => 'edit_oid',
]
);
$data[1] .= '</span>';
$data[1] .= '</span><span class="right" style="width: 50%; text-align: right">';
$data[1] .= html_print_button(
@ -231,42 +276,50 @@ $table_simple->colspan['snmp_2'][1] = 3;
push_table_simple($data, 'snmp_2');
// Advanced stuff
// Advanced stuff.
$data = [];
$data[0] = __('TCP send');
$data[1] = html_print_textarea('tcp_send', 2, 65, $tcp_send, $disabledTextBecauseInPolicy, true, $largeclassdisabledBecauseInPolicy);
$data[1] = html_print_textarea(
'tcp_send',
2,
65,
$tcp_send,
$disabledTextBecauseInPolicy,
true,
$largeclassdisabledBecauseInPolicy
);
$table_simple->colspan['tcp_send'][1] = 3;
push_table_simple($data, 'tcp_send');
$data[0] = __('TCP receive');
$data[1] = html_print_textarea('tcp_rcv', 2, 65, $tcp_rcv, $disabledTextBecauseInPolicy, true, $largeclassdisabledBecauseInPolicy);
$data[1] = html_print_textarea(
'tcp_rcv',
2,
65,
$tcp_rcv,
$disabledTextBecauseInPolicy,
true,
$largeclassdisabledBecauseInPolicy
);
$table_simple->colspan['tcp_receive'][1] = 3;
push_table_simple($data, 'tcp_receive');
if ($id_module_type < 8 || $id_module_type > 11) {
// NOT TCP
// NOT TCP.
$table_simple->rowstyle['tcp_send'] = 'display: none;';
$table_simple->rowstyle['tcp_receive'] = 'display: none;';
}
if ($id_module_type < 15 || $id_module_type > 18) {
// NOT SNMP
// NOT SNMP.
$table_simple->rowstyle['snmp_1'] = 'display: none';
$table_simple->rowstyle['snmp_2'] = 'display: none';
}
// For a policy
if (!isset($id_agent_module)) {
$snmp3_auth_user = '';
$snmp3_auth_pass = '';
$snmp_version = 1;
$snmp3_privacy_method = '';
$snmp3_privacy_pass = '';
$snmp3_auth_method = '';
$snmp3_security_level = '';
} else if ($id_agent_module === false) {
// For a policy.
if (isset($id_agent_module) === false || $id_agent_module === false) {
$snmp3_auth_user = '';
$snmp3_auth_pass = '';
$snmp_version = 1;
@ -274,6 +327,9 @@ if (!isset($id_agent_module)) {
$snmp3_privacy_pass = '';
$snmp3_auth_method = '';
$snmp3_security_level = '';
$command_text = '';
$command_os = 'inherited';
$command_credential_identifier = '';
}
$data = [];
@ -333,7 +389,22 @@ push_table_simple($data, 'field_snmpv3_row2');
$data = [];
$data[0] = __('Auth method');
$data[1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp3_auth_method', $snmp3_auth_method, '', '', '', true, false, false, '', $disabledBecauseInPolicy);
$data[1] = html_print_select(
[
'MD5' => __('MD5'),
'SHA' => __('SHA'),
],
'snmp3_auth_method',
$snmp3_auth_method,
'',
'',
'',
true,
false,
false,
'',
$disabledBecauseInPolicy
);
$data[2] = __('Security level');
$data[3] = html_print_select(
[
@ -358,13 +429,84 @@ if ($snmp_version != 3) {
push_table_simple($data, 'field_snmpv3_row3');
$data = [];
$data[0] = __('Command');
$data[1] = html_print_input_text_extended(
'command_text',
$command_text,
'command_text',
'',
100,
10000,
$disabledBecauseInPolicy,
'',
$largeClassDisabledBecauseInPolicy,
true
);
$table_simple->colspan['row-cmd-row-1'][1] = 3;
push_table_simple($data, 'row-cmd-row-1');
require_once $config['homedir'].'/include/class/CredentialStore.class.php';
$array_credential_identifier = CredentialStore::getKeys();
$data[0] = __('Credential identifier');
$data[1] = html_print_select(
$array_credential_identifier,
'command_credential_identifier',
$command_credential_identifier,
'',
__('None'),
'',
true,
false,
false,
'',
$disabledBecauseInPolicy
);
$array_os = [
'inherited' => __('Inherited'),
'linux' => __('Linux'),
'windows' => __('Windows'),
];
$data[2] = __('Target OS');
$data[3] = html_print_select(
$array_os,
'command_os',
$command_os,
'',
'',
'',
true,
false,
false,
'',
$disabledBecauseInPolicy
);
push_table_simple($data, 'row-cmd-row-2');
if ($id_module_type !== 34
&& $id_module_type !== 35
&& $id_module_type !== 36
&& $id_module_type !== 37
) {
$table_simple->rowstyle['row-cmd-row-1'] = 'display: none;';
$table_simple->rowstyle['row-cmd-row-2'] = 'display: none;';
}
snmp_browser_print_container(false, '100%', '60%', 'none');
?>
<script type="text/javascript">
$(document).ready (function () {
$("#id_module_type").change(function (){
if ((this.value == "17") || (this.value == "18") || (this.value == "16") || (this.value == "15")) {
if ((this.value == "17") ||
(this.value == "18") ||
(this.value == "16") ||
(this.value == "15")
) {
if ($("#snmp_version").val() == "3"){
$("#simple-field_snmpv3_row1").attr("style", "");
$("#simple-field_snmpv3_row2").attr("style", "");
@ -379,6 +521,18 @@ $(document).ready (function () {
$("input[name=active_snmp_v3]").val(0);
$("input[name=snmp_community]").removeAttr('disabled');
}
if((this.value == "34") ||
(this.value == "35") ||
(this.value == "36") ||
(this.value == "37")
) {
$("#simple-row-cmd-row-1").attr("style", "");
$("#simple-row-cmd-row-2").attr("style", "");
} else {
$("#simple-row-cmd-row-1").css("display", "none");
$("#simple-row-cmd-row-2").css("display", "none");
}
});
$("#snmp_version").change(function () {
@ -397,27 +551,28 @@ $(document).ready (function () {
$("input[name=snmp_community]").removeAttr('disabled');
}
});
$("#select_snmp_oid").click (
function () {
$(this).css ("width", "auto");
$(this).css ("min-width", "180px");
});
$("#select_snmp_oid").blur (function () {
$(this).css ("width", "180px");
});
$("#id_module_type").click (
function () {
$(this).css ("width", "auto");
$(this).css ("min-width", "180px");
});
}
);
$("#id_module_type").blur (function () {
$(this).css ("width", "180px");
});
// Keep elements in the form and the SNMP browser synced
$('#text-ip_target').keyup(function() {
$('#text-target_ip').val($(this).val());
@ -433,13 +588,12 @@ $(document).ready (function () {
});
$('#snmp_version').change(function() {
$('#snmp_browser_version').val($(this).val());
// Display or collapse the SNMP browser's v3 options
checkSNMPVersion ();
});
$('#snmp_browser_version').change(function() {
$('#snmp_version').val($(this).val());
// Display or collapse the SNMP v3 options in the main window
if ($(this).val() == "3") {
$("#simple-field_snmpv3_row1").attr("style", "");
@ -498,10 +652,10 @@ $(document).ready (function () {
}
$('#ip_target').change(function() {
if($(this).val() == 'custom') {
$("#text-custom_ip_target").show();
$("#text-custom_ip_target").show();
}
else{
$("#text-custom_ip_target").hide();
$("#text-custom_ip_target").hide();
}
});
});

View File

@ -403,6 +403,8 @@ class CredentialStore extends Wizard
{
global $config;
$filter = [];
if ($product !== false) {
$filter['product'] = $product;
}

View File

@ -1716,10 +1716,9 @@ if (!empty($result)) {
}
}
// End Build List Result
//
// End Build List Result.
echo "<div id='monitor_details_window'></div>";
// strict user hidden
// Strict user hidden.
echo '<div id="strict_hidden" style="display:none;">';
html_print_input_text('strict_user_hidden', $strict_user);
echo '</div>';
@ -1756,8 +1755,8 @@ $('#moduletype').click(function() {
);
return false;
});
});
$('#ag_group').change (function () {
strict_user = $('#text-strict_user_hidden').val();

View File

@ -268,7 +268,7 @@ INSERT INTO `torigen` VALUES
--
-- Identifiers 30 and 31 are reserved for Enterprise data types
INSERT INTO `ttipo_modulo` VALUES
INSERT INTO `ttipo_modulo` VALUES
(1,'generic_data',0,'Generic numeric','mod_data.png'),
(2,'generic_proc',1,'Generic boolean','mod_proc.png'),
(3,'generic_data_string',2,'Generic string','mod_string.png'),
@ -283,15 +283,19 @@ INSERT INTO `ttipo_modulo` VALUES
(15,'remote_snmp',3,'Remote SNMP network agent, numeric data','mod_snmp_data.png'),
(16,'remote_snmp_inc',3,'Remote SNMP network agent, incremental data','mod_snmp_inc.png'),
(17,'remote_snmp_string',5,'Remote SNMP network agent, alphanumeric data','mod_snmp_string.png'),
(18,'remote_snmp_proc',4,'Remote SNMP network agent, boolean data','mod_snmp_proc.png'),
(21,'async_proc', 7, 'Asyncronous proc data', 'mod_async_proc.png'),
(22,'async_data', 6, 'Asyncronous numeric data', 'mod_async_data.png'),
(18,'remote_snmp_proc',4,'Remote SNMP network agent, boolean data','mod_snmp_proc.png'),
(21,'async_proc', 7, 'Asyncronous proc data', 'mod_async_proc.png'),
(22,'async_data', 6, 'Asyncronous numeric data', 'mod_async_data.png'),
(23,'async_string', 8, 'Asyncronous string data', 'mod_async_string.png'),
(25,'web_analysis', 8, 'Web analysis data', 'module-wux.png'),
(30,'web_data',9,'Remote HTTP module to check latency','mod_web_data.png'),
(31,'web_proc',9,'Remote HTTP module to check server response','mod_web_proc.png'),
(32,'web_content_data',9,'Remote HTTP module to retrieve numeric data','mod_web_data.png'),
(33,'web_content_string',9,'Remote HTTP module to retrieve string data','mod_web_data.png'),
(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'),
(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'),
(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'),
(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'),
(100,'keep_alive',-1,'KeepAlive','mod_keepalive.png');
--