From e300f2244d027d65fa20100629bb81be24f13c99 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Wed, 28 Oct 2020 17:56:42 +0100 Subject: [PATCH 01/12] Adding delete_agent control for meta --- pandora_console/include/functions_api.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 6401910faa..f9fd4efaa9 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -1885,11 +1885,17 @@ function api_set_delete_agent($id, $thrash1, $other, $thrash3) } } else { // Delete only if the centralised mode is disabled. - if (is_central_policies_on_node()) { + $headers = getallheaders(); + if (!isset($headers['idk']) || !is_management_allowed($headers['idk'])) { returnError('centralized'); exit; } + // Support for Pandora Enterprise. + if (license_free() === false) { + define('PANDORA_ENTERPRISE', true); + } + if ($agent_by_alias) { $idsAgents = agents_get_agent_id_by_alias(io_safe_input($id)); } else { From 915c039fcd233f3b5059db5aeece9ae486203be9 Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 12 Nov 2020 12:13:57 +0100 Subject: [PATCH 02/12] fixed sql error with secundary groups ZOS --- pandora_console/include/functions_tags.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_tags.php b/pandora_console/include/functions_tags.php index fe36bc34fa..c759597706 100644 --- a/pandora_console/include/functions_tags.php +++ b/pandora_console/include/functions_tags.php @@ -900,7 +900,11 @@ function tags_get_acl_tags_module_condition($acltags, $modules_table='', $force_ } $in_group = implode(',', $without_tags); - $condition .= sprintf('(tagente.id_grupo IN (%s) OR tasg.id_group IN (%s))', $in_group, $in_group); + if ($has_secondary) { + $condition .= sprintf('(tagente.id_grupo IN (%s) OR tasg.id_group IN (%s))', $in_group, $in_group); + } else { + $condition .= sprintf('(tagente.id_grupo IN (%s))', $in_group); + } } $condition = !empty($condition) ? "($condition)" : ''; From 4023327091890ad44f7e7f6d50c37dbb068fb62a Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Mon, 16 Nov 2020 12:30:58 +0100 Subject: [PATCH 03/12] Added search by secondary group name --- .../operation/search_agents.getdata.php | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/pandora_console/operation/search_agents.getdata.php b/pandora_console/operation/search_agents.getdata.php index aad2835a36..e9d315d291 100644 --- a/pandora_console/operation/search_agents.getdata.php +++ b/pandora_console/operation/search_agents.getdata.php @@ -179,6 +179,8 @@ if ($searchAgents) { $userGroups = users_get_groups($config['id_user'], 'AR', false); $id_userGroups = array_keys($userGroups); + $has_secondary = enterprise_hook('agents_is_using_secondary_groups'); + $sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress INNER JOIN taddress_agent ON taddress.id_a = taddress_agent.id_a @@ -188,10 +190,10 @@ if ($searchAgents) { if ($id != '') { $aux = $id[0]['id_agent']; $search_sql = " t1.nombre COLLATE utf8_general_ci LIKE '%%cd ".$stringSearchSQL."%%' OR - t2.nombre COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR - t1.alias COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR - t1.comentarios COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR - t1.id_agente = $aux"; + t2.nombre COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR + t1.alias COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR + t1.comentarios COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR + t1.id_agente = $aux"; if (count($id) >= 2) { for ($i = 1; $i < count($id); $i++) { @@ -201,10 +203,15 @@ if ($searchAgents) { } } else { $search_sql = " t1.nombre COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR - t2.nombre COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR + t2.nombre COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR t1.direccion COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR t1.comentarios COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%' OR - t1.alias COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%'"; + t1.alias COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%'"; + } + + if ($has_secondary === true) { + $search_sql .= " OR (tasg.id_group IS NOT NULL AND + tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre COLLATE utf8_general_ci LIKE '%%".$stringSearchSQL."%%'))"; } $sql = " @@ -235,7 +242,7 @@ if ($searchAgents) { AND ( ".$search_sql.' ) - '; + '; $select = 'SELECT DISTINCT(t1.id_agente), t1.ultimo_contacto, t1.nombre, t1.comentarios, t1.id_os, t1.intervalo, t1.id_grupo, t1.disabled, t1.alias, t1.quiet'; if ($only_count) { From 2ee187ae53468e90d4b1b8fae1182efc272e5785 Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Mon, 16 Nov 2020 18:30:23 +0100 Subject: [PATCH 04/12] Fixed acl on discovery tasklist --- pandora_console/godmode/wizards/DiscoveryTaskList.class.php | 4 ++++ pandora_console/include/class/HTML.class.php | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php index 59a9fab84a..de2f70a629 100644 --- a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php +++ b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php @@ -448,6 +448,10 @@ class DiscoveryTaskList extends HTML $table->align[9] = 'left'; foreach ($recon_tasks as $task) { + if ($this->aclMulticheck('AR|AW|AM', $task['id_group']) === false) { + continue; + } + $no_operations = false; $data = []; $server_name = servers_get_name($task['id_recon_server']); diff --git a/pandora_console/include/class/HTML.class.php b/pandora_console/include/class/HTML.class.php index 41ceabf5ab..92cd8cc29f 100644 --- a/pandora_console/include/class/HTML.class.php +++ b/pandora_console/include/class/HTML.class.php @@ -254,7 +254,7 @@ class HTML * * @return boolean Alowed or not. */ - public function aclMulticheck($access=null) + public function aclMulticheck($access=null, $id_group=0) { global $config; @@ -268,7 +268,7 @@ class HTML foreach ($perms as $perm) { $allowed = $allowed || (bool) check_acl( $config['id_user'], - 0, + $id_group, $perm ); } From 1ad1671612273fb02dd97dd412f3b41c32cd1b4e Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Mon, 23 Nov 2020 09:29:11 +0100 Subject: [PATCH 05/12] fix remove acl widget agent/module --- .../lib/Dashboard/Widgets/agent_module.php | 137 ++++++++---------- pandora_console/include/styles/dashboards.css | 4 + 2 files changed, 61 insertions(+), 80 deletions(-) diff --git a/pandora_console/include/lib/Dashboard/Widgets/agent_module.php b/pandora_console/include/lib/Dashboard/Widgets/agent_module.php index 9913b28aaf..7953550b7a 100644 --- a/pandora_console/include/lib/Dashboard/Widgets/agent_module.php +++ b/pandora_console/include/lib/Dashboard/Widgets/agent_module.php @@ -27,6 +27,8 @@ */ namespace PandoraFMS\Dashboard; +use PandoraFMS\Agent; +use PandoraFMS\Module; /** * Agent module Widgets. @@ -324,7 +326,7 @@ class AgentModuleWidget extends Widget } foreach ($agents as $agent) { - if (!users_access_to_agent($agent['id_agente'])) { + if (users_access_to_agent($agent['id_agente']) === false) { continue; } @@ -343,8 +345,10 @@ class AgentModuleWidget extends Widget foreach ($modules_by_name as $module) { $row['modules'][$module['name']] = null; foreach ($module['id'] as $module_id) { - if (array_key_exists($module_id, $agent_modules)) { - $row['modules'][$module['name']] = modules_get_agentmodule_status($module_id); + if (array_key_exists($module_id, $agent_modules) === true) { + $row['modules'][$module['name']] = modules_get_agentmodule_status( + $module_id + ); break; } } @@ -361,12 +365,16 @@ class AgentModuleWidget extends Widget * Draw table Agent/Module. * * @param array $visualData Data for draw. + * @param array $allModules Data for th draw. * * @return string Html output. */ - private function generateViewAgentModule(array $visualData):string - { - $table_data = '
'; + private function generateViewAgentModule( + array $visualData, + array $allModules + ):string { + $style = 'display:flex; width:100%; height:100%; margin: 10px;'; + $table_data = '
'; $table_data .= ''; if (empty($visualData) === false) { @@ -374,20 +382,7 @@ class AgentModuleWidget extends Widget $array_names = []; - foreach ($visualData as $data) { - foreach ($data['modules'] as $module_name => $module) { - if ($module === null - || in_array($module_name, $array_names) - ) { - continue; - } else { - $array_names[] = $module_name; - } - } - } - - natcasesort($array_names); - foreach ($array_names as $module_name) { + foreach ($allModules as $module_name) { $file_name = ui_print_truncate_text( $module_name, 'module_small', @@ -444,14 +439,17 @@ class AgentModuleWidget extends Widget foreach ($row['modules'] as $module_name => $module) { if ($module === null) { - if (in_array($module_name, $array_names)) { - $table_data .= "'; } else { continue; } } else { - $table_data .= " - - + + - - + + - - + + - - + + @@ -58,8 +58,8 @@ Addresses will be shown as icons, large or small. This icons will render the fol - - + + diff --git a/pandora_console/include/help/es/help_ipam.php b/pandora_console/include/help/es/help_ipam.php index c03158f6ec..f312b6ec25 100755 --- a/pandora_console/include/help/es/help_ipam.php +++ b/pandora_console/include/help/es/help_ipam.php @@ -31,23 +31,23 @@ Cada dirección tendrá un icono grande que nos aportará información:

- - + + - - + + - - + + - - + + @@ -59,8 +59,8 @@ Cada dirección tendrá un icono grande que nos aportará información:

- - + + diff --git a/pandora_console/include/help/ja/help_ipam.php b/pandora_console/include/help/ja/help_ipam.php index 28cac820b8..87ffbe9c47 100644 --- a/pandora_console/include/help/ja/help_ipam.php +++ b/pandora_console/include/help/ja/help_ipam.php @@ -31,23 +31,23 @@ IP 管理は、 エージェントで設定し - - + + - - + + - - + + - - + + @@ -59,8 +59,8 @@ IP 管理は、 エージェントで設定し - - + + diff --git a/pandora_console/include/styles/ipam.css b/pandora_console/include/styles/ipam.css new file mode 100644 index 0000000000..38a68d4b1d --- /dev/null +++ b/pandora_console/include/styles/ipam.css @@ -0,0 +1,243 @@ +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @package Pandora FMS + * @subpackage Enterprise + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2007-2019 Artica Soluciones Tecnologicas, http://www.artica.es + * This code is NOT free software. This code is NOT licenced under GPL2 licence + * You cannnot redistribute it without written permission of copyright holder. + * ============================================================================ + */ + +.mask_example, +#ipv4_example, +#ipv6_example { + font-size: xx-small; + font-weight: normal; + margin-left: 5px; +} + +.mode_img { + cursor: pointer; + margin-right: 5px; +} + +.os_mode_img { + float: left; + margin-right: 0px; +} + +.hidden { + display: none; +} + +fieldset { + padding-top: 0px; +} + +fieldset legend { + text-align: left; +} + +.ui-autocomplete-input { + width: 120px; +} + +.ball_addr_status { + float: left; + margin-right: 3px; + margin-top: 2px; + width: 8px; +} + +.add_comments_button { + cursor: pointer; +} + +.ipam_icon { + float: left; + display: inline; + text-align: center; + background: #fff; + position: relative; +} + +.ipam_icon img { + display: block; +} + +.address_os_icon { + position: absolute; + bottom: +12px; + right: 0px; +} + +.address_os_icon img { + width: 16px; +} + +.comment_icon { + position: absolute; + right: 0px; +} + +.comment_icon img { + width: 16px; +} + +.address_config_icon { + position: absolute; + bottom: -6px; + right: 0px; +} + +.address_disabled_icon, +.address_os_icon { + position: absolute; + bottom: -5px; + left: 0px; + width: 18px; +} + +.address_config_icon img { + width: 18px; +} + +.address_disabled_icon { + position: absolute; + bottom: -6px; + left: 0px; + width: 18px; +} + +.address_image { + cursor: pointer; +} + +/* Big icons */ + +.ipam_icon_big { + margin: 10px; + padding: 5px 5px; + border-radius: 10px; + width: 90px; +} + +.ipam_icon_big img { + margin: 8px auto; + margin-top: 8px; +} + +/* Tiny icons */ + +.ipam_icon_tiny { + margin: 6px; + padding: 3px 3px; + border-radius: 7px; + width: 55px; + font-size: 6.5pt; +} + +.ipam_icon_tiny img { + margin: 5px auto; + margin-top: 5px; +} + +/* Un-reserved ip background */ +.reserved { + background: #dbffff; +} + +.unreserved { + background: #ffffff; +} + +.unreserved_dhcp { + background: #ebebeb; +} + +.container_network { + margin: 20px; + width: 100%; + display: flex; + justify-content: space-around; +} + +.detailts_network { + width: 35%; +} + +.statistics_network { + width: 50%; +} + +.button_network { + width: 100%; + margin-top: 20px; + margin-bottom: 20px; + display: flex; + justify-content: flex-end; +} + +.button_network input { + margin-right: 30px; +} + +.vlan_statistics p { + margin-left: 10px; + font-style: italic; +} + +.vlan_statistics div div { + width: 95%; +} + +.container_button { + display: flex; + height: 200px; + justify-content: space-around; + align-items: center; +} + +.container_button_int { + border: 1px solid #e1e2e1; + height: 150px; + width: 125px; + display: flex; + align-items: center; + text-align: center; + justify-content: center; + cursor: pointer; +} + +.container_button_int:hover { + background: #e2e2e2; +} + +.button_add_net { + width: 100px; + height: 100px; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; +} + +.button_add_net img { + vertical-align: middle; +} + +.button_add_net span { + margin-top: 10px; +} diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 771b2e99fc..b245484c83 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -3877,3 +3877,101 @@ CREATE TABLE `tnode_relations` ( `node_address` VARCHAR(60) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tipam_network` +-- ---------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `tipam_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `network` varchar(100) NOT NULL default '', + `name_network` varchar(255) default '', + `description` text NOT NULL, + `location` tinytext NOT NULL, + `id_recon_task` int(10) unsigned NOT NULL, + `scan_interval` tinyint(2) default 1, + `monitoring` tinyint(2) default 0, + `id_group` mediumint(8) unsigned NULL default 0, + `lightweight_mode` tinyint(2) default 0, + `users_operator` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_recon_task`) REFERENCES trecon_task(`id_rt`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tipam_ip` +-- ---------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `tipam_ip` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_network` bigint(20) unsigned NOT NULL default 0, + `id_agent` int(10) unsigned NOT NULL, + `forced_agent` tinyint(2) NOT NULL default '0', + `ip` varchar(100) NOT NULL default '', + `ip_dec` int(10) unsigned NOT NULL, + `id_os` int(10) unsigned NOT NULL, + `forced_os` tinyint(2) NOT NULL default '0', + `hostname` tinytext NOT NULL, + `forced_hostname` tinyint(2) NOT NULL default '0', + `comments` text NOT NULL, + `alive` tinyint(2) NOT NULL default '0', + `managed` tinyint(2) NOT NULL default '0', + `reserved` tinyint(2) NOT NULL default '0', + `time_last_check` datetime NOT NULL default '1970-01-01 00:00:00', + `time_create` datetime NOT NULL default '1970-01-01 00:00:00', + `users_operator` text, + `time_last_edit` datetime NOT NULL default '1970-01-01 00:00:00', + `enabled` tinyint(2) NOT NULL default '1', + `generate_events` tinyint(2) NOT NULL default '0', + `leased` tinyint(2) DEFAULT '0', + `leased_expiration` bigint(20) DEFAULT '0', + `mac_address` varchar(20) DEFAULT NULL, + `leased_mode` tinyint(2) DEFAULT '0', + PRIMARY KEY (`id`), + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tipam_vlan` +-- ---------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `tipam_vlan` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `name` varchar(250) NOT NULL, + `description` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tipam_vlan_network` +-- ---------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `tipam_vlan_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_vlan` bigint(20) unsigned NOT NULL, + `id_network` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_vlan`) REFERENCES tipam_vlan(`id`) ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tipam_supernet` +-- ---------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `tipam_supernet` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `name` varchar(250) NOT NULL, + `description` text default '', + `address` varchar(250) NOT NULL, + `mask` varchar(250) NOT NULL, + `subneting_mask` varchar(250) default '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tipam_supernet_network` +-- ---------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `tipam_supernet_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_supernet` bigint(20) unsigned NOT NULL, + `id_network` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_supernet`) REFERENCES tipam_supernet(`id`) ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index f58b5d2170..e173af7c76 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -1168,7 +1168,7 @@ INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (4, 'Group vi -- trecon scripts INSERT INTO `trecon_script` (`type`,`name`,`description`,`script`,`macros`) VALUES (1, 'Discovery.Application.VMware', 'Discovery Application script to monitor VMware technologies (ESXi, VCenter, VSphere)', '/usr/share/pandora_server/util/recon_scripts/vmware-plugin.pl', '{"1":{"macro":"_field1_","desc":"Configuration file","help":"","value":"","hide":""}}'); INSERT INTO `trecon_script` (`type`,`name`,`description`,`script`,`macros`) VALUES (2, 'Discovery.Cloud', 'Discovery Cloud script to monitor Cloud technologies (AWS.EC2, AWS.S3, AWS.RDS, RDS,ȊWS.EKS)', '/usr/share/pandora_server/util/recon_scripts/pcm_client.pl', '{"1":{"macro":"_field1_","desc":"Configuration file","help":"","value":"","hide":""}}'); --- IPAM is 3. +INSERT INTO `trecon_script` (`type`,`name`,`description`,`script`,`macros`) VALUES (3, 'IPAM Recon', 'This script is used to automatically detect network hosts availability and name, used as Recon Custom Script in the recon task. Parameters used are:\n\n* custom_field1 = network. i.e.: 192.168.100.0/24\n* custom_field2 = associated IPAM network id. i.e.: 4. Please do not change this value, it is assigned automatically in IPAM management.\n\nSee documentation for more information.', '/usr/share/pandora_server/util/recon_scripts/IPAMrecon.pl', '{"1":{"macro":"_field1_","desc":"Network","help":"i.e.: 192.168.100.0/24","value":"","hide":""}}'); INSERT INTO `trecon_script` (`type`,`name`,`description`,`script`,`macros`) VALUES (4, 'IPMI Recon','Specific Pandora FMS Intel DCM Discovery (c) Artica ST 2011 <info@artica.es> Usage: ./ipmi-recon.pl <task_id> <group_id> <create_incident_flag> <custom_field1> <custom_field2> <custom_field3> <custom_field4> * custom_field1 = Network i.e.: 192.168.100.0/24 * custom_field2 = Username * custom_field3 = Password * custom_field4 = Additional parameters i.e.: -D LAN_2_0','/usr/share/pandora_server/util/recon_scripts/ipmi-recon.pl','{\"1\":{\"macro\":\"_field1_\",\"desc\":\"Network\",\"help\":\"i.e.: 192.168.100.0/24\",\"value\":\"\",\"hide\":\"\"},\"2\":{\"macro\":\"_field2_\",\"desc\":\"Username\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"},\"3\":{\"macro\":\"_field3_\",\"desc\":\"Password\",\"help\":\"\",\"value\":\"\",\"hide\":\"1\"},\"4\":{\"macro\":\"_field4_\",\"desc\":\"Additional parameters\",\"help\":\"Optional additional parameters such as -D LAN_2_0 to use IPMI ver 2.0 instead of 1.5. These options will also be passed to the IPMI plugin when the current values are read.\",\"value\":\"\",\"hide\":\"\"}}'); INSERT INTO `tplugin` (`id`, `name`, `description`, `max_timeout`, `execute`, `plugin_type`, `macros`, `parameters`) VALUES (1,'IPMI Plugin','Plugin to get IPMI monitors from a IPMI Device.',0,'/usr/share/pandora_server/util/plugin/ipmi-plugin.pl',0,'{\"1\":{\"macro\":\"_field1_\",\"desc\":\"Target IP\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"},\"2\":{\"macro\":\"_field2_\",\"desc\":\"Username\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"},\"3\":{\"macro\":\"_field3_\",\"desc\":\"Password\",\"help\":\"\",\"value\":\"\",\"hide\":\"true\"},\"4\":{\"macro\":\"_field4_\",\"desc\":\"Sensor\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"},\"5\":{\"macro\":\"_field5_\",\"desc\":\"Additional Options\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"}}','-h _field1_ -u _field2_ -p _field3_ -s _field4_ -- _field5_'); From 5a837c9aaa2caa7ced266b9dfd6c47009cb199bd Mon Sep 17 00:00:00 2001 From: artica Date: Fri, 15 Jan 2021 01:00:17 +0100 Subject: [PATCH 12/12] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 659686f265..417f9026ef 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.751-210114 +Version: 7.0NG.751-210115 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index ac5af1193e..d9f3424998 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.751-210114" +pandora_version="7.0NG.751-210115" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 029e55a893..4175604662 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -1016,7 +1016,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.751'; -use constant AGENT_BUILD => '210114'; +use constant AGENT_BUILD => '210115'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 474555167e..cd87cd0971 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.751 -%define release 210114 +%define release 210115 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 01e90ce5d6..eaeb9a9c4f 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.751 -%define release 210114 +%define release 210115 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index b68d73ed61..8fefc4576f 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.751" -PI_BUILD="210114" +PI_BUILD="210115" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 4a8cfa26a7..2d48aa2f27 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{210114} +{210115} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index cdfa22a780..65df5f17e0 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.751(Build 210114)") +#define PANDORA_VERSION ("7.0NG.751(Build 210115)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 81b53b2fc3..6e0e291bcd 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.751(Build 210114))" + VALUE "ProductVersion", "(7.0NG.751(Build 210115))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 79575f6ef6..c04e1c6866 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.751-210114 +Version: 7.0NG.751-210115 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 8c477c661e..3248d4280e 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.751-210114" +pandora_version="7.0NG.751-210115" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 070ea80f07..d83ebae7c9 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC210114'; +$build_version = 'PC210115'; $pandora_version = 'v7.0NG.751'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 6a711affe7..40b4450328 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index d7f3a6b076..3ae2ae0164 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.751 -%define release 210114 +%define release 210115 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 39423f2cd1..9537902bf2 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.751 -%define release 210114 +%define release 210115 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 841a0c05d7..01b8004f35 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.751" -PI_BUILD="210114" +PI_BUILD="210115" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 81c2ef282d..253fd64935 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.751 PS210114"; +my $version = "7.0NG.751 PS210115"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 211dd9a09e..3dc89247b4 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.751 PS210114"; +my $version = "7.0NG.751 PS210115"; # save program name for logging my $progname = basename($0);
"; + if (in_array($module_name, $allModules) === true) { + $style = 'background-color: transparent;'; + $table_data .= ""; $table_data .= '"; + $style = 'text-align: center;'; + $style .= ' background-color: transparent;'; + $table_data .= ""; switch ($module) { case AGENT_STATUS_NORMAL: $table_data .= \ui_print_status_image( @@ -592,70 +590,49 @@ class AgentModuleWidget extends Widget return $output; } - if (isset($this->values['mAgents']) === true - && empty($this->values['mAgents']) === false - ) { - $sql = sprintf( - 'SELECT id_agente,nombre,alias - FROM tagente - WHERE id_agente IN (%s) - ORDER BY id_agente', - $this->values['mAgents'] - ); - $agents = db_get_all_rows_sql($sql); - if ($agents === false) { - $agents = []; + // Estract info all modules selected. + $target_modules = explode(',', $this->values['mModules']); + $all_modules = Module::search( + ['id_agente_modulo' => $target_modules] + ); + $reduceAllModules = array_reduce( + $all_modules, + function ($carry, $item) { + $carry[$item->name()] = null; + return $carry; } + ); - $modules = false; - if (isset($this->values['mModules']) === true - && empty($this->values['mModules']) === false - ) { - $sql = sprintf( - 'SELECT nombre - FROM tagente_modulo - WHERE id_agente_modulo IN (%s)', - $this->values['mModules'] + \ksort($reduceAllModules); + + $visualData = []; + // Estract info agents selected. + $target_agents = explode(',', $this->values['mAgents']); + foreach ($target_agents as $agent_id) { + try { + $agent = new Agent($agent_id); + $visualData[$agent_id]['agent_status'] = $agent->lastStatus(); + $visualData[$agent_id]['agent_name'] = $agent->name(); + $visualData[$agent_id]['agent_alias'] = $agent->alias(); + + $modules = $agent->searchModules( + ['id_agente_modulo' => $target_modules] ); - $arrayNames = db_get_all_rows_sql($sql); - $names = array_reduce( - $arrayNames, - function ($carry, $item) { - $carry[] = $item['nombre']; - return $carry; - } - ); - - $sql = sprintf( - 'SELECT id_agente_modulo,nombre - FROM tagente_modulo - WHERE id_agente IN (%s) - AND nombre IN ("%s") - AND delete_pending = 0 - ORDER BY nombre', - $this->values['mAgents'], - implode('","', $names) - ); - - $modules = index_array( - db_get_all_rows_sql($sql), - 'id_agente_modulo', - 'nombre' - ); + $visualData[$agent_id]['modules'] = $reduceAllModules; + foreach ($modules as $module) { + $visualData[$agent_id]['modules'][$module->name()] = $module->getStatus()->estado(); + } + } catch (Exception $e) { + echo 'Error: '.$e->getMessage(); } - - if ($modules === false) { - $modules = []; - } - } else { - $agents = []; - $modules = []; } - $visualData = $this->generateDataAgentModule($agents, $modules); - - $output = $this->generateViewAgentModule($visualData); + $allModules = array_keys($reduceAllModules); + $output = $this->generateViewAgentModule( + $visualData, + $allModules + ); return $output; } diff --git a/pandora_console/include/styles/dashboards.css b/pandora_console/include/styles/dashboards.css index bbbf993112..70c41dd643 100644 --- a/pandora_console/include/styles/dashboards.css +++ b/pandora_console/include/styles/dashboards.css @@ -407,6 +407,10 @@ table.group_modules_status_box tr td span a { text-align: center; } +table.widget_agent_module tbody tr td { + padding: 5px; +} + .container-center .widget-histogram-chart .flot-text .flot-x-axis div { white-space: nowrap; } From ff96281fe47f7244c51f386b34fa45f801173e74 Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Tue, 1 Dec 2020 16:03:12 +0100 Subject: [PATCH 06/12] Hide log report in metaconsole --- pandora_console/include/functions_reports.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/functions_reports.php b/pandora_console/include/functions_reports.php index 878ded7968..d07fe453ec 100755 --- a/pandora_console/include/functions_reports.php +++ b/pandora_console/include/functions_reports.php @@ -876,7 +876,7 @@ function reports_get_report_types($template=false, $not_editor=false) ]; } - if ($config['enterprise_installed'] && $template === false) { + if ($config['enterprise_installed'] && $template === false && !is_metaconsole()) { $types['event_report_log'] = [ 'optgroup' => __('Log'), 'name' => __('Log report'), From f6a1260eef94d03c3edddd6de56be81d36d3677f Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Wed, 23 Dec 2020 15:33:52 +0100 Subject: [PATCH 07/12] Fixed event filter creation with empty name --- pandora_console/godmode/events/event_edit_filter.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pandora_console/godmode/events/event_edit_filter.php b/pandora_console/godmode/events/event_edit_filter.php index a93f38bfa1..d92e049696 100644 --- a/pandora_console/godmode/events/event_edit_filter.php +++ b/pandora_console/godmode/events/event_edit_filter.php @@ -205,12 +205,16 @@ if ($update) { } if ($create) { - $id = db_process_sql_insert('tevent_filter', $values); + if (!empty($values['id_name'])) { + $id = db_process_sql_insert('tevent_filter', $values); - if ($id === false) { - ui_print_error_message('Error creating filter'); + if ($id === false) { + ui_print_error_message('Error creating filter'); + } else { + ui_print_success_message('Filter created successfully'); + } } else { - ui_print_success_message('Filter created successfully'); + ui_print_error_message('Filter name must not be empty'); } } From c11c12203210dee5819ef8d7585eba6f1a67833f Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Mon, 4 Jan 2021 12:53:42 +0100 Subject: [PATCH 08/12] Fixed custom graph --- .../VisualConsole/Items/ModuleGraph.php | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/ModuleGraph.php b/pandora_console/include/rest-api/models/VisualConsole/Items/ModuleGraph.php index 8393d0e21d..d20bd2d710 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/ModuleGraph.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/ModuleGraph.php @@ -62,8 +62,14 @@ final class ModuleGraph extends Item $return = parent::encode($data); $id_custom_graph = static::extractIdCustomGraph($data); - if ($id_custom_graph !== null) { - $return['id_custom_graph'] = $id_custom_graph; + if (!empty($id_custom_graph)) { + if (\is_metaconsole()) { + $explode_custom_graph = explode('|', $id_custom_graph); + $return['id_custom_graph'] = $explode_custom_graph[0]; + $return['id_metaconsole'] = $explode_custom_graph[1]; + } else { + $return['id_custom_graph'] = $id_custom_graph; + } } $type_graph = static::getTypeGraph($data); @@ -89,7 +95,7 @@ final class ModuleGraph extends Item */ private static function extractIdCustomGraph(array $data) { - return static::parseIntOr( + return static::notEmptyStringOr( static::issetInArray( $data, [ @@ -362,6 +368,7 @@ final class ModuleGraph extends Item 'show_legend' => $showLegend, 'return_img_base_64' => true, 'show_title' => false, + 'server_id' => $metaconsoleId, ]; $paramsCombined = [ @@ -414,6 +421,7 @@ final class ModuleGraph extends Item 'show_legend' => $showLegend, 'show_title' => false, 'dashboard' => true, + 'server_id' => $metaconsoleId, ]; if ($imageOnly !== false) { @@ -452,16 +460,16 @@ final class ModuleGraph extends Item true, 'RR' ); - } - $data = array_reduce( - $data, - function ($carry, $item) { - $carry[$item['id_graph']] = $item['name']; - return $carry; - }, - [] - ); + $data = array_reduce( + $data, + function ($carry, $item) { + $carry[$item['id_graph']] = $item['name']; + return $carry; + }, + [] + ); + } return $data; } From 7de277f458a314a85dd746b33f61ac5f084cadd5 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Thu, 14 Jan 2021 12:40:57 +0100 Subject: [PATCH 09/12] Added some changes --- pandora_console/include/functions_api.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 9a550a0735..1afd3f8431 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -1889,7 +1889,7 @@ function api_set_delete_agent($id, $thrash1, $other, $thrash3) } else { // Delete only if the centralised mode is disabled. $headers = getallheaders(); - if (!isset($headers['idk']) || !is_management_allowed($headers['idk'])) { + if (isset($headers['idk']) === false || is_management_allowed($headers['idk']) === false) { returnError('centralized'); exit; } @@ -1901,17 +1901,6 @@ function api_set_delete_agent($id, $thrash1, $other, $thrash3) if ($agent_by_alias) { $idsAgents = agents_get_agent_id_by_alias(io_safe_input($id)); - } else { - $idAgent = agents_get_agent_id($id, true); - } - - if (!$agent_by_alias) { - if (!util_api_check_agent_and_print_error($idAgent, 'string', 'AD')) { - return; - } - } - - if ($agent_by_alias) { foreach ($idsAgents as $id) { if (!util_api_check_agent_and_print_error($id['id_agente'], 'string', 'AD')) { continue; @@ -1924,6 +1913,11 @@ function api_set_delete_agent($id, $thrash1, $other, $thrash3) } } } else { + $idAgent = agents_get_agent_id($id, true); + if (!util_api_check_agent_and_print_error($idAgent, 'string', 'AD')) { + return; + } + $result = agents_delete_agent($idAgent, true); } } From dfeb42983f79dcd3fc4c6c581a3c59421ac5413b Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Thu, 14 Jan 2021 14:36:47 +0100 Subject: [PATCH 10/12] Ent 6605 buscador general no encuentra mapas --- pandora_console/operation/search_main.php | 2 +- pandora_console/operation/search_maps.getdata.php | 2 +- pandora_console/operation/search_results.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index 29dbb33cab..99c0846419 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -67,7 +67,7 @@ $table->data[0][8] = html_print_image('images/chart_curve.png', true, ['title' = $table->data[0][9] = "".sprintf(__('%s Found'), $totalGraphs).''; $table->data[0][10] = html_print_image('images/reporting.png', true, ['title' => __('Reports found')]); $table->data[0][11] = "".sprintf(__('%s Found'), $totalReports).''; -$table->data[0][12] = html_print_image('images/visual_console_green.png', true, ['title' => __('Maps found')]); +$table->data[0][12] = html_print_image('images/visual_console_green.png', true, ['title' => __('Visual consoles')]); $table->data[0][13] = "".sprintf(__('%s Found'), $totalMaps).''; if (enterprise_installed()) { $table->data[0][14] = html_print_image('images/policies.png', true, ['title' => __('Policies')]); diff --git a/pandora_console/operation/search_maps.getdata.php b/pandora_console/operation/search_maps.getdata.php index a74a721232..2f8fa18a49 100644 --- a/pandora_console/operation/search_maps.getdata.php +++ b/pandora_console/operation/search_maps.getdata.php @@ -19,7 +19,7 @@ $maps = false; $totalMaps = 0; if ($searchMaps) { - $user_groups = users_get_groups($config['id_user'], 'AR', false); + $user_groups = users_get_groups($config['id_user'], 'AR', true); $id_user_groups = array_keys($user_groups); $id_user_groups_str = implode(',', $id_user_groups); diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php index 93c7db4593..353ae60276 100644 --- a/pandora_console/operation/search_results.php +++ b/pandora_console/operation/search_results.php @@ -141,7 +141,7 @@ if ($searchMaps) { 'text' => "".html_print_image( 'images/visual_console.png', true, - ['title' => __('Maps')] + ['title' => __('Visual consoles')] ).'', 'active' => $searchTab == 'maps', ]; From a470658543780d2fd4bc3563483347ead9d74f81 Mon Sep 17 00:00:00 2001 From: daniel Date: Thu, 14 Jan 2021 14:42:18 +0100 Subject: [PATCH 11/12] remove IPAM to extension --- .../extras/delete_files/delete_files.txt | 56 +++- pandora_console/extras/mr/44.sql | 117 +++++++++ .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 100 +++++++ pandora_console/godmode/menu.php | 1 + .../wizards/DiscoveryTaskList.class.php | 4 +- .../include/functions_extensions.php | 4 + pandora_console/include/help/en/help_ipam.php | 20 +- pandora_console/include/help/es/help_ipam.php | 20 +- pandora_console/include/help/ja/help_ipam.php | 20 +- pandora_console/include/styles/ipam.css | 243 ++++++++++++++++++ pandora_console/pandoradb.sql | 98 +++++++ pandora_console/pandoradb_data.sql | 2 +- 12 files changed, 651 insertions(+), 34 deletions(-) create mode 100644 pandora_console/include/styles/ipam.css diff --git a/pandora_console/extras/delete_files/delete_files.txt b/pandora_console/extras/delete_files/delete_files.txt index 8964458b93..c647447c84 100644 --- a/pandora_console/extras/delete_files/delete_files.txt +++ b/pandora_console/extras/delete_files/delete_files.txt @@ -14,4 +14,58 @@ enterprise/godmode/reporting/cluster_view.php enterprise/include/ajax/clustermap.php enterprise/include/functions_clustermap.php enterprise/include/functions_clusters.php -enterprise/include/javascript/ClusterMapController.js \ No newline at end of file +enterprise/include/javascript/ClusterMapController.js +enterprise/extensions/ipam/ipam_supernet_network.php +enterprise/extensions/ipam/ipam_vlan_wizard.php +enterprise/extensions/ipam/sql +enterprise/extensions/ipam/sql/ipam_mr_1.sql +enterprise/extensions/ipam/sql/ipam_mr_2.sql +enterprise/extensions/ipam/sql/ipam.sql +enterprise/extensions/ipam/css +enterprise/extensions/ipam/css/ipam.css +enterprise/extensions/ipam/ipam_ajax.php +enterprise/extensions/ipam/ipam_vlan_network.php +enterprise/extensions/ipam/ipam_supernet_config.php +enterprise/extensions/ipam/ipam_list.php +enterprise/extensions/ipam/ipam_excel.php +enterprise/extensions/ipam/ipam_massive.php +enterprise/extensions/ipam/ipam_editor.php +enterprise/extensions/ipam/recon_script +enterprise/extensions/ipam/recon_script/readme +enterprise/extensions/ipam/ipam_network.php +enterprise/extensions/ipam/ipam_calculator.php +enterprise/extensions/ipam/ipam_vlan_config.php +enterprise/extensions/ipam/images +enterprise/extensions/ipam/images/red_host_agent.png +enterprise/extensions/ipam/images/lil_green_host_alert.png +enterprise/extensions/ipam/images/lil_red_host_alert.png +enterprise/extensions/ipam/images/lil_red_host_agent.png +enterprise/extensions/ipam/images/green_host_dotted.png +enterprise/extensions/ipam/images/red_host.png +enterprise/extensions/ipam/images/red_host_alert.png +enterprise/extensions/ipam/images/not_host.png +enterprise/extensions/ipam/images/lil_green_host_agent_alert.png +enterprise/extensions/ipam/images/ball_alive.png +enterprise/extensions/ipam/images/lil_green_host_agent.png +enterprise/extensions/ipam/images/ball_notalive.png +enterprise/extensions/ipam/images/green_host_agent_alert.png +enterprise/extensions/ipam/images/green_host_agent.png +enterprise/extensions/ipam/images/lil_red_host.png +enterprise/extensions/ipam/images/green_host_alert.png +enterprise/extensions/ipam/images/lil_not_host.png +enterprise/extensions/ipam/images/green_host.png +enterprise/extensions/ipam/images/lil_green_host.png +enterprise/extensions/ipam/images/lil_red_host_agent_alert.png +enterprise/extensions/ipam/images/lil_green_host_dotted.png +enterprise/extensions/ipam/images/red_host_agent_alert.png +enterprise/extensions/ipam/ipam_supernet_map.php +enterprise/extensions/ipam/include +enterprise/extensions/ipam/include/functions_ipam.php +enterprise/extensions/ipam/include/ajax +enterprise/extensions/ipam/include/ajax/ipam_ajax.php +enterprise/extensions/ipam/include/javascript +enterprise/extensions/ipam/include/javascript/ipam.js +enterprise/extensions/ipam/include/javascript/IpamMapController.js +enterprise/extensions/ipam/ipam_action.php +enterprise/extensions/ipam.php +enterprise/extensions/ipam \ No newline at end of file diff --git a/pandora_console/extras/mr/44.sql b/pandora_console/extras/mr/44.sql index b942d27faf..527d1e0b2f 100644 --- a/pandora_console/extras/mr/44.sql +++ b/pandora_console/extras/mr/44.sql @@ -1,5 +1,122 @@ START TRANSACTION; +CREATE TABLE IF NOT EXISTS `tipam_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `network` varchar(100) NOT NULL default '', + `name_network` varchar(255) default '', + `description` text NOT NULL, + `location` tinytext NOT NULL, + `id_recon_task` int(10) unsigned NOT NULL, + `scan_interval` tinyint(2) default 1, + `monitoring` tinyint(2) default 0, + `id_group` mediumint(8) unsigned NULL default 0, + `lightweight_mode` tinyint(2) default 0, + `users_operator` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_recon_task`) REFERENCES trecon_task(`id_rt`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_ip` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_network` bigint(20) unsigned NOT NULL default 0, + `id_agent` int(10) unsigned NOT NULL, + `forced_agent` tinyint(2) NOT NULL default '0', + `ip` varchar(100) NOT NULL default '', + `ip_dec` int(10) unsigned NOT NULL, + `id_os` int(10) unsigned NOT NULL, + `forced_os` tinyint(2) NOT NULL default '0', + `hostname` tinytext NOT NULL, + `forced_hostname` tinyint(2) NOT NULL default '0', + `comments` text NOT NULL, + `alive` tinyint(2) NOT NULL default '0', + `managed` tinyint(2) NOT NULL default '0', + `reserved` tinyint(2) NOT NULL default '0', + `time_last_check` datetime NOT NULL default '1970-01-01 00:00:00', + `time_create` datetime NOT NULL default '1970-01-01 00:00:00', + `users_operator` text, + `time_last_edit` datetime NOT NULL default '1970-01-01 00:00:00', + `enabled` tinyint(2) NOT NULL default '1', + `generate_events` tinyint(2) NOT NULL default '0', + `leased` tinyint(2) DEFAULT '0', + `leased_expiration` bigint(20) DEFAULT '0', + `mac_address` varchar(20) DEFAULT NULL, + `leased_mode` tinyint(2) DEFAULT '0', + PRIMARY KEY (`id`), + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_vlan` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `name` varchar(250) NOT NULL, + `description` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_vlan_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_vlan` bigint(20) unsigned NOT NULL, + `id_network` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_vlan`) REFERENCES tipam_vlan(`id`) ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_supernet` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `name` varchar(250) NOT NULL, + `description` text default '', + `address` varchar(250) NOT NULL, + `mask` varchar(250) NOT NULL, + `subneting_mask` varchar(250) default '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_supernet_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_supernet` bigint(20) unsigned NOT NULL, + `id_network` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_supernet`) REFERENCES tipam_supernet(`id`) ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +SET @insert_type = 3; +SET @insert_name = 'IPAM Recon'; +SET @insert_description = 'This script is used to automatically detect network hosts availability and name, used as Recon Custom Script in the recon task. Parameters used are:\n\n* custom_field1 = network. i.e.: 192.168.100.0/24\n* custom_field2 = associated IPAM network id. i.e.: 4. Please do not change this value, it is assigned automatically in IPAM management.\n\nSee documentation for more information.'; +SET @insert_script = '/usr/share/pandora_server/util/recon_scripts/IPAMrecon.pl'; +SET @insert_macros = '{"1":{"macro":"_field1_","desc":"Network","help":"i.e.: 192.168.100.0/24","value":"","hide":""}}'; +INSERT IGNORE INTO trecon_script (`id_recon_script`,`type`, `name`, `description`, `script`, `macros`) +SELECT `id_recon_script`,`type`, `name`, `description`, `script`, `macros` FROM ( + SELECT `id_recon_script`,`type`, `name`, `description`, `script`, `macros` FROM `trecon_script` WHERE `name` = @insert_name + UNION + SELECT (SELECT max(`id_recon_script`)+1 FROM `trecon_script`) AS `id_recon_script`, + @insert_type as `type`, + @insert_name as `name`, + @insert_description as `description`, + @insert_script as `script`, + @insert_macros as `macros` +) t limit 1; + +ALTER TABLE `tipam_ip` ADD COLUMN `leased` tinyint(2) DEFAULT '0'; + +ALTER TABLE `tipam_ip` ADD COLUMN `leased_expiration` bigint(20) DEFAULT '0'; + +ALTER TABLE `tipam_ip` ADD COLUMN `mac_address` varchar(20) DEFAULT NULL; + +ALTER TABLE `tipam_ip` ADD COLUMN `leased_mode` tinyint(2) DEFAULT '0'; + +ALTER TABLE `tipam_network` ADD COLUMN `monitoring` tinyint(2) default '0'; + +ALTER TABLE `tipam_network` ADD COLUMN `id_group` mediumint(8) unsigned NULL default '0'; + +ALTER TABLE `tipam_network` ADD COLUMN `lightweight_mode` tinyint(2) default '0'; + +ALTER TABLE `tipam_network` ADD COLUMN `name_network` varchar(255) default ''; + +DELETE FROM `tconfig` WHERE `token` = 'ipam_installed'; + +DELETE FROM `tconfig` WHERE `token` = 'ipam_recon_script_id'; + UPDATE `talert_commands` SET `fields_descriptions` = '[\"Event text\",\"Event type\",\"Source\",\"Agent name or _agent_\",\"Event severity\",\"ID extra\",\"Tags separated by commas\",\"Comments\",\"\",\"\"]' WHERE `id` = 3; ALTER TABLE `talert_templates` diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index bae705f725..b06a4c3c56 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -3868,3 +3868,103 @@ INSERT IGNORE INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_gro INSERT IGNORE INTO `tpen` VALUES (171,'dlink','D-Link Systems, Inc.'),(14988,'mikrotik','MikroTik'),(6486,'alcatel','Alcatel-Lucent Enterprise'),(41112,'ubiquiti','Ubiquiti Networks, Inc.'),(207,'telesis','Allied Telesis, Inc.'),(10002,'frogfoot','Frogfoot Networks'),(2,'ibm','IBM'),(4,'unix','Unix'),(63,'apple','Apple Computer, Inc.'),(674,'dell','Dell Inc.'),(111,'oracle','Oracle'),(116,'hitachi','Hitachi, Ltd.'),(173,'netlink','Netlink'),(188,'ascom','Ascom'),(6574,'synology','Synology Inc.'),(3861,'fujitsu','Fujitsu Network Communications, Inc.'),(53526,'dell','Dell ATC'),(52627,'apple','Apple Inc'),(19464,'hitachi','Hitachi Communication Technologies, Ltd.'),(13062,'ascom','Ascom'); +CREATE TABLE IF NOT EXISTS `tipam_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `network` varchar(100) NOT NULL default '', + `name_network` varchar(255) default '', + `description` text NOT NULL, + `location` tinytext NOT NULL, + `id_recon_task` int(10) unsigned NOT NULL, + `scan_interval` tinyint(2) default 1, + `monitoring` tinyint(2) default 0, + `id_group` mediumint(8) unsigned NULL default 0, + `lightweight_mode` tinyint(2) default 0, + `users_operator` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_recon_task`) REFERENCES trecon_task(`id_rt`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_ip` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_network` bigint(20) unsigned NOT NULL default 0, + `id_agent` int(10) unsigned NOT NULL, + `forced_agent` tinyint(2) NOT NULL default '0', + `ip` varchar(100) NOT NULL default '', + `ip_dec` int(10) unsigned NOT NULL, + `id_os` int(10) unsigned NOT NULL, + `forced_os` tinyint(2) NOT NULL default '0', + `hostname` tinytext NOT NULL, + `forced_hostname` tinyint(2) NOT NULL default '0', + `comments` text NOT NULL, + `alive` tinyint(2) NOT NULL default '0', + `managed` tinyint(2) NOT NULL default '0', + `reserved` tinyint(2) NOT NULL default '0', + `time_last_check` datetime NOT NULL default '1970-01-01 00:00:00', + `time_create` datetime NOT NULL default '1970-01-01 00:00:00', + `users_operator` text, + `time_last_edit` datetime NOT NULL default '1970-01-01 00:00:00', + `enabled` tinyint(2) NOT NULL default '1', + `generate_events` tinyint(2) NOT NULL default '0', + `leased` tinyint(2) DEFAULT '0', + `leased_expiration` bigint(20) DEFAULT '0', + `mac_address` varchar(20) DEFAULT NULL, + `leased_mode` tinyint(2) DEFAULT '0', + PRIMARY KEY (`id`), + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_vlan` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `name` varchar(250) NOT NULL, + `description` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_vlan_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_vlan` bigint(20) unsigned NOT NULL, + `id_network` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_vlan`) REFERENCES tipam_vlan(`id`) ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_supernet` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `name` varchar(250) NOT NULL, + `description` text default '', + `address` varchar(250) NOT NULL, + `mask` varchar(250) NOT NULL, + `subneting_mask` varchar(250) default '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tipam_supernet_network` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `id_supernet` bigint(20) unsigned NOT NULL, + `id_network` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_supernet`) REFERENCES tipam_supernet(`id`) ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`id_network`) REFERENCES tipam_network(`id`) ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +SET @insert_type = 3; +SET @insert_name = 'IPAM Recon'; +SET @insert_description = 'This script is used to automatically detect network hosts availability and name, used as Recon Custom Script in the recon task. Parameters used are:\n\n* custom_field1 = network. i.e.: 192.168.100.0/24\n* custom_field2 = associated IPAM network id. i.e.: 4. Please do not change this value, it is assigned automatically in IPAM management.\n\nSee documentation for more information.'; +SET @insert_script = '/usr/share/pandora_server/util/recon_scripts/IPAMrecon.pl'; +SET @insert_macros = '{"1":{"macro":"_field1_","desc":"Network","help":"i.e.: 192.168.100.0/24","value":"","hide":""}}'; +INSERT IGNORE INTO trecon_script (`id_recon_script`,`type`, `name`, `description`, `script`, `macros`) +SELECT `id_recon_script`,`type`, `name`, `description`, `script`, `macros` FROM ( + SELECT `id_recon_script`,`type`, `name`, `description`, `script`, `macros` FROM `trecon_script` WHERE `name` = @insert_name + UNION + SELECT (SELECT max(`id_recon_script`)+1 FROM `trecon_script`) AS `id_recon_script`, + @insert_type as `type`, + @insert_name as `name`, + @insert_description as `description`, + @insert_script as `script`, + @insert_macros as `macros` +) t limit 1; + +DELETE FROM `tconfig` WHERE `token` = 'ipam_installed'; + +DELETE FROM `tconfig` WHERE `token` = 'ipam_recon_script_id'; \ No newline at end of file diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php index 95ab1948fe..f180488451 100644 --- a/pandora_console/godmode/menu.php +++ b/pandora_console/godmode/menu.php @@ -382,6 +382,7 @@ if (check_acl($config['id_user'], 0, 'PM') || check_acl($config['id_user'], 0, ' $sub['tools/diagnostics']['text'] = __('Diagnostic info'); $sub['tools/diagnostics']['id'] = 'Diagnostic info'; enterprise_hook('omnishell'); + enterprise_hook('ipam_submenu'); $sub['godmode/setup/news']['text'] = __('Site news'); $sub['godmode/setup/news']['id'] = 'Site news'; diff --git a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php index 72222aa79e..962c85fbd4 100644 --- a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php +++ b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php @@ -759,7 +759,7 @@ class DiscoveryTaskList extends HTML if ($ipam === true) { $data[9] .= ''.html_print_image( @@ -768,7 +768,7 @@ class DiscoveryTaskList extends HTML ['title' => __('Edit task')] ).''; $data[9] .= ''.html_print_image( 'images/cross.png', true, diff --git a/pandora_console/include/functions_extensions.php b/pandora_console/include/functions_extensions.php index 76eb8482a4..9d73a20350 100755 --- a/pandora_console/include/functions_extensions.php +++ b/pandora_console/include/functions_extensions.php @@ -165,6 +165,10 @@ function extensions_get_extensions($enterprise=false, $rel_path='') return array_merge($extensions, extensions_get_extensions(true, $rel_path)); } + if (isset($extensions['ipam.php'])) { + unset($extensions['ipam.php']); + } + return $extensions; } diff --git a/pandora_console/include/help/en/help_ipam.php b/pandora_console/include/help/en/help_ipam.php index 549601f059..30d2469493 100755 --- a/pandora_console/include/help/en/help_ipam.php +++ b/pandora_console/include/help/en/help_ipam.php @@ -30,23 +30,23 @@ Addresses will be shown as icons, large or small. This icons will render the fol
No assigned agent

Disabled events
With assigned agent

Disabled events
No assigned agent

Activated events
With assigned agent

Activated events
Not managed
If an IP address is not managed, you can only view if is responding or not.
Not assigned
Sin agente asignado

Eventos desactivados
Con agente asignado

Eventos desactivados
Sin agente asignado

Eventos activados
Con agente asignado

Eventos activados
Sin administrar
Independientemente de la configuración, si el host no está administrado solo se diferenciará entre si está vivo y no responde
No asignado
エージェント未割当

イベント無効
エージェント割当済

イベント無効
エージェント未割当

イベント有効
エージェント割当済

イベント有効
未管理
IP アドレスが管理されていない場合、応答があるかどうかだけを見ることができます。
未割当