diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 122d43ed05..5595f61feb 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.776-240503 +Version: 7.0NG.776-240508 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 03461beb0f..97348def98 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.776-240503" +pandora_version="7.0NG.776-240508" 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 05d49335cb..a079f00b8c 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -1039,7 +1039,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.776'; -use constant AGENT_BUILD => '240503'; +use constant AGENT_BUILD => '240508'; # 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 037ebbe6bb..15111e31da 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_agent_linux %define version 7.0NG.776 -%define release 240503 +%define release 240508 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec index d3558b0026..a3d10d7d68 100644 --- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec +++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec @@ -5,7 +5,7 @@ %define name pandorafms_agent_linux_bin %define source_name pandorafms_agent_linux %define version 7.0NG.776 -%define release 240503 +%define release 240508 %define debug_package %{nil} Summary: Pandora FMS Linux agent, binary version diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec index a7d6c6a620..7cc0459ca5 100644 --- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec +++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec @@ -5,7 +5,7 @@ %define name pandorafms_agent_linux_bin %define source_name pandorafms_agent_linux %define version 7.0NG.776 -%define release 240503 +%define release 240508 %define debug_package %{nil} Summary: Pandora FMS Linux agent, binary version diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec index db99b6fbf2..6f6ec4bd74 100644 --- a/pandora_agents/unix/pandora_agent.redhat_bin.spec +++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec @@ -5,7 +5,7 @@ %define name pandorafms_agent_linux_bin %define source_name pandorafms_agent_linux %define version 7.0NG.776 -%define release 240503 +%define release 240508 Summary: Pandora FMS Linux agent, binary version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 250f327421..3e1ef473f4 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_agent_linux %define version 7.0NG.776 -%define release 240503 +%define release 240508 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 aae9e94d1a..d0c83002bd 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.776" -PI_BUILD="240503" +PI_BUILD="240508" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 37d4289b18..99a72984a1 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{240503} +{240508} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 85da7bbecd..1e466ca4e1 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.776 Build 240503") +#define PANDORA_VERSION ("7.0NG.776 Build 240508") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 44c1b8d6a1..3f10acddc7 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Pandora FMS" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.776(Build 240503))" + VALUE "ProductVersion", "(7.0NG.776(Build 240508))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index e947bc0573..73048935d4 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.776-240503 +Version: 7.0NG.776-240508 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 c6b8402407..69f8082f64 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.776-240503" +pandora_version="7.0NG.776-240508" package_pear=0 package_pandora=1 diff --git a/pandora_console/extensions/api_checker.php b/pandora_console/extensions/api_checker.php index 38488fc9e4..557ec82e1b 100755 --- a/pandora_console/extensions/api_checker.php +++ b/pandora_console/extensions/api_checker.php @@ -69,38 +69,41 @@ function api_execute( if (empty($url) === true) { $url = 'http://'.$ip.$pandora_url.'/include/api.php?'; + } else { + $url_schema = parse_url($url); + $url = $url_schema['scheme'].'://'.$url_schema['host'].$pandora_url.'/include/api.php?'; + } - if (empty($op) === false) { - $data['op'] = $op; - } + if (empty($op) === false) { + $data['op'] = $op; + } - if (empty($op2) === false) { - $data['op2'] = $op2; - } + if (empty($op2) === false) { + $data['op2'] = $op2; + } - if (empty($id) === false) { - $data['id'] = $id; - } + if (empty($id) === false) { + $data['id'] = $id; + } - if (empty($id2) === false) { - $data['id2'] = $id2; - } + if (empty($id2) === false) { + $data['id2'] = $id2; + } - if (empty($return_type) === false) { - $data['return_type'] = $return_type; - } + if (empty($return_type) === false) { + $data['return_type'] = $return_type; + } - if (empty($other) === false) { - $data['other_mode'] = $other_mode; - $data['other'] = $other; - } + if (empty($other) === false) { + $data['other_mode'] = $other_mode; + $data['other'] = $other; + } - // If token is not reported,use old method. - if (empty($token) === true) { - $data['apipass'] = $apipass; - $data['user'] = $user; - $data['pass'] = $password; - } + // If token is not reported,use old method. + if (empty($token) === true) { + $data['apipass'] = $apipass; + $data['user'] = $user; + $data['pass'] = $password; } $url_protocol = parse_url($url)['scheme']; diff --git a/pandora_console/extras/mr/69.sql b/pandora_console/extras/mr/69.sql index 534cef73ef..eb381781ca 100644 --- a/pandora_console/extras/mr/69.sql +++ b/pandora_console/extras/mr/69.sql @@ -15,6 +15,8 @@ ALTER TABLE tfiles_repo_group CONVERT TO CHARACTER SET UTF8MB4; ALTER TABLE `tusuario` ADD COLUMN `stop_lts_modal` TINYINT NOT NULL DEFAULT 0 AFTER `session_max_time_expire`; +ALTER TABLE `tlayout_template` ADD COLUMN `create_from` INT UNSIGNED NOT NULL DEFAULT 0; + -- START MIGRATION MSSQL -- SET @current_app_type = 12; SET @short_name = 'pandorafms.mssql'; @@ -7764,4 +7766,7 @@ DELETE FROM tconfig WHERE `token` = 'loginhash_pwd'; UPDATE `tdiscovery_apps` SET `version` = '1.5' WHERE `short_name` = 'pandorafms.vmware'; +-- Delete Create incident from event, from tevent_response +DELETE FROM tevent_response WHERE name = 'Create incident from event'; + COMMIT; \ No newline at end of file diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index 662bdd6e72..9f734ec539 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -566,10 +566,10 @@ if ($search != '') { if ($id != '') { $aux = $id[0]['id_agent']; $search_sql = sprintf( - ' AND ( REPLACE(nombre, " ", " ") LIKE "%%%s%%" - OR REPLACE(alias, " ", " ") LIKE "%%%s%%" - OR REPLACE(comentarios, " ", " ") LIKE "%%%s%%" - OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND REPLACE(description, " ", " ") LIKE "%%%s%%") + ' AND ( nombre LIKE "%%%s%%" + OR alias LIKE "%%%s%%" + OR comentarios LIKE "%%%s%%" + OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND description LIKE "%%%s%%") OR tagente.id_agente = %d', $search, $search, @@ -591,10 +591,10 @@ if ($search != '') { $search_sql .= ')'; } else { $search_sql = sprintf( - ' AND ( REPLACE(nombre, " ", " ") - LIKE "%%%s%%" OR REPLACE(alias, " ", " ") - LIKE "%%%s%%" OR REPLACE(comentarios, " ", " ") LIKE "%%%s%%" - OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND REPLACE(description, " ", " ") LIKE "%%%s%%"))', + ' AND ( nombre + LIKE "%%%s%%" OR alias + LIKE "%%%s%%" OR comentarios LIKE "%%%s%%" + OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND description LIKE "%%%s%%"))', $search, $search, $search, diff --git a/pandora_console/godmode/setup/setup_auth.php b/pandora_console/godmode/setup/setup_auth.php index e17d13806f..5d7922cce0 100644 --- a/pandora_console/godmode/setup/setup_auth.php +++ b/pandora_console/godmode/setup/setup_auth.php @@ -362,14 +362,20 @@ if (is_ajax() === true) { $row['name'] = __('Admin secondary LDAP password'); $row['control'] = html_print_input_password( 'ldap_admin_pass_secondary', - io_output_password($config['ldap_admin_pass_secondary']), + (empty(io_output_password($config['ldap_admin_pass_secondary'])) === false) ? '*****' : '', $alt = '', 60, 100, true, false, false, - 'w400px-important' + 'w400px-important', + 'on', + false, + '', + true, + false, + true ); $table->data['ldap_admin_pass_secondary'] = $row; break; diff --git a/pandora_console/include/class/SnmpConsole.class.php b/pandora_console/include/class/SnmpConsole.class.php index fefce2e54f..1a2707868d 100644 --- a/pandora_console/include/class/SnmpConsole.class.php +++ b/pandora_console/include/class/SnmpConsole.class.php @@ -85,6 +85,13 @@ class SnmpConsole extends HTML */ private $filter_free_search; + /** + * Filter alias. + * + * @var string + */ + private $filter_alias_search; + /** * Filter status. * @@ -135,7 +142,8 @@ class SnmpConsole extends HTML int $filter_group_by, int $filter_hours_ago, int $filter_trap_type, - int $refr + int $refr, + string $filter_alias_search ) { global $config; @@ -157,6 +165,7 @@ class SnmpConsole extends HTML $this->filter_alert = $filter_alert; $this->filter_severity = $filter_severity; $this->filter_free_search = $filter_free_search; + $this->filter_alias_search = $filter_alias_search; $this->filter_status = $filter_status; $this->filter_group_by = $filter_group_by; $this->filter_hours_ago = $filter_hours_ago; @@ -375,13 +384,21 @@ class SnmpConsole extends HTML 'style' => 'widht:100%', ], [ - 'label' => __('Free search'), + 'label' => __('Search').ui_print_help_tip(__('It will search through the contents of the raw trap, which does not include the agent name. You can search by the next values: IP, OID, Value, Text, Description, User ID and Source.'), true), 'type' => 'text', 'id' => 'filter_free_search', 'input_class' => 'filter_input_datatable', 'name' => 'filter_free_search', 'value' => $this->filter_free_search, ], + [ + 'label' => __('Search Alias').ui_print_help_tip(__('It will search by the agent alias. This option could make the system slower.'), true), + 'type' => 'text', + 'id' => 'filter_alias_search', + 'input_class' => 'filter_input_datatable', + 'name' => 'filter_alias_search', + 'value' => $this->filter_alias_search, + ], [ 'label' => __('Status'), 'type' => 'select', @@ -449,7 +466,7 @@ class SnmpConsole extends HTML 1000, ], ], - 'filter_main_class' => 'box-flat white_table_graph fixed_filter_bar', + 'filter_main_class' => 'box-flat white_table_graph fixed_filter_bar snmp-console-filter', ] ); } catch (Exception $e) { @@ -554,10 +571,6 @@ class SnmpConsole extends HTML $filters = get_parameter('filter', []); // Build ranges. - if (empty($filters['filter_hours_ago']) === true) { - $filters['filter_hours_ago'] = 8; - } - $now_timestamp = time(); $interval_seconds = ($filters['filter_hours_ago'] * 3600); $ago_timestamp = ($now_timestamp - $interval_seconds); @@ -577,118 +590,148 @@ class SnmpConsole extends HTML ob_start(); $data = []; - $user_groups = users_get_groups($config['id_user'], 'AR', false); - $prea = array_keys($user_groups); - $ids = join(',', $prea); + $whereSubquery = ''; + $sql = 'SELECT + * + FROM + ttrap + %s + WHERE 1=1 + %s + ORDER BY + timestamp DESC + LIMIT %d, %d'; - $user_in_group_wo_agents = db_get_value_sql('select count(DISTINCT(id_usuario)) from tusuario_perfil where id_usuario ="'.$config['id_user'].'" and id_perfil = 1 and id_grupo in (select id_grupo from tgrupo where id_grupo in ('.$ids.') and id_grupo not in (select id_grupo from tagente))'); - if ($user_in_group_wo_agents == 0) { + $sql_count = 'SELECT + COUNT(`ttrap`.`id_trap`) + FROM + ttrap + %s + WHERE 1=1 + %s'; + + if (users_is_admin() === false || users_can_manage_group_all('AR') === false) { + $user_groups = users_get_groups($config['id_user'], 'AR', false); $rows = db_get_all_rows_filter( 'tagente', ['id_grupo' => array_keys($user_groups)], ['id_agente'] ); + $id_agents = []; foreach ($rows as $row) { $id_agents[] = $row['id_agente']; } - if (!empty($id_agents)) { + if (empty($id_agents) === false) { $address_by_user_groups = agents_get_addresses($id_agents); foreach ($address_by_user_groups as $i => $a) { $address_by_user_groups[$i] = '"'.$a.'"'; } } - } else { - $rows = db_get_all_rows_filter( - 'tagente', - [], - ['id_agente'] + + if (empty($address_by_user_groups) === true) { + $address_by_user_groups = []; + array_unshift($address_by_user_groups, '""'); + } + + $whereSubquery .= sprintf( + 'AND ( + `ttrap`.`source` IN (%s) OR + `ttrap`.`source`="" + )', + implode(',', $address_by_user_groups) ); - $id_agents = []; - foreach ($rows as $row) { - $id_agents[] = $row['id_agente']; - } - - $all_address_agents = agents_get_addresses($id_agents); - foreach ($all_address_agents as $i => $a) { - $all_address_agents[$i] = '"'.$a.'"'; - } } - if (empty($address_by_user_groups)) { - $address_by_user_groups = []; - array_unshift($address_by_user_groups, '""'); + if ($filters['filter_alias_search'] !== '') { + $sql_join = ' + LEFT JOIN `tagente` + ON `tagente`.`direccion` = `ttrap`.`source` + LEFT JOIN `taddress_agent` + ON `tagente`.`id_agente` = `taddress_agent`.`id_agent` + LEFT JOIN `taddress` + ON `taddress_agent`.`id_a` = `taddress`.`id_a` + '; + } else { + $sql_join = ''; } - if (empty($all_address_agents)) { - $all_address_agents = []; - array_unshift($all_address_agents, '""'); - } - - $sql = 'SELECT * FROM ttrap - WHERE ( - `source` IN ('.implode(',', $address_by_user_groups).") OR - `source`='' OR - `source` NOT IN (".implode(',', $all_address_agents).') - ) - %s - ORDER BY timestamp DESC - LIMIT %d,%d'; - - $whereSubquery = ''; if ($filters['filter_alert'] != -1) { - $whereSubquery .= ' AND alerted = '.$filters['filter_alert']; + $whereSubquery .= ' AND `ttrap`.`alerted` = '.$filters['filter_alert']; } - $filters['filter_severity'] = (int) $filters['filter_severity']; if ($filters['filter_severity'] != -1) { // There are two special severity values aimed to match two different trap standard severities // in database: warning/critical and critical/normal. - if ($filters['filter_severity'] !== EVENT_CRIT_OR_NORMAL - && $filters['filter_severity'] !== EVENT_CRIT_WARNING_OR_CRITICAL - && $filters['filter_severity'] !== EVENT_CRIT_NOT_NORMAL + if ($filters['filter_severity'] != EVENT_CRIT_OR_NORMAL + && $filters['filter_severity'] != EVENT_CRIT_WARNING_OR_CRITICAL ) { // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND severity = '.$filters['filter_severity']; + if ($config['enterprise_installed']) { + $whereSubquery .= ' AND ( + (`ttrap`.`alerted` = 0 AND `ttrap`.`severity` = '.$filters['filter_severity'].') OR + (`ttrap`.`alerted` = 1 AND `ttrap`.`priority` = '.$filters['filter_severity'].'))'; + } else { + $whereSubquery .= ' AND ( + (`ttrap`.`alerted` = 0 AND 1 = '.$filters['filter_severity'].') OR + (`ttrap`.`alerted` = 1 AND `ttrap`.`priority` = '.$filters['filter_severity'].'))'; + } } else if ($filters['filter_severity'] === EVENT_CRIT_WARNING_OR_CRITICAL) { // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND (severity = '.EVENT_CRIT_WARNING.' OR severity = '.EVENT_CRIT_CRITICAL.' OR severity = '.EVENT_CRIT_WARNING_OR_CRITICAL.')'; + if ($config['enterprise_installed']) { + $whereSubquery .= ' AND ( + (`ttrap`.`alerted` = 0 AND (`ttrap`.`severity` = '.EVENT_CRIT_WARNING.' OR `ttrap`.`severity` = '.EVENT_CRIT_CRITICAL.')) OR + (`ttrap`.`alerted` = 1 AND (`ttrap`.`priority` = '.EVENT_CRIT_WARNING.' OR `ttrap`.`priority` = '.EVENT_CRIT_CRITICAL.')))'; + } else { + $whereSubquery .= ' AND ( + (`ttrap`.`alerted` = 1 AND (`ttrap`.`priority` = '.EVENT_CRIT_WARNING.' OR `ttrap`.`priority` = '.EVENT_CRIT_CRITICAL.')))'; + } } else if ($filters['filter_severity'] === EVENT_CRIT_OR_NORMAL) { // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND (severity = '.EVENT_CRIT_NORMAL.' OR severity = '.EVENT_CRIT_CRITICAL.' OR severity = '.EVENT_CRIT_OR_NORMAL.')'; - } else if ($filters['filter_severity'] === EVENT_CRIT_NOT_NORMAL) { - // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND (severity = '.EVENT_CRIT_WARNING.' OR severity = '.EVENT_CRIT_CRITICAL.' OR severity = '.EVENT_CRIT_NOT_NORMAL.')'; + if ($config['enterprise_installed']) { + $whereSubquery .= ' AND ( + (`ttrap`.`alerted` = 0 AND (`ttrap`.`severity` = '.EVENT_CRIT_NORMAL.' OR `ttrap`.`severity` = '.EVENT_CRIT_CRITICAL.')) OR + (`ttrap`.`alerted` = 1 AND (`ttrap`.`priority` = '.EVENT_CRIT_NORMAL.' OR `ttrap`.`priority` = '.EVENT_CRIT_CRITICAL.')))'; + } else { + $whereSubquery .= ' AND ( + (`ttrap`.`alerted` = 1 AND (`ttrap`.`priority` = '.EVENT_CRIT_NORMAL.' OR `ttrap`.`priority` = '.EVENT_CRIT_CRITICAL.')))'; + } } } if ($filters['filter_free_search'] !== '') { $free_search_str = io_safe_output($filters['filter_free_search']); $whereSubquery .= ' - AND (source LIKE "%'.$free_search_str.'%" OR - oid LIKE "%'.$free_search_str.'%" OR - oid_custom LIKE "%'.$free_search_str.'%" OR - type_custom LIKE "%'.$free_search_str.'%" OR - value LIKE "%'.$free_search_str.'%" OR - value_custom LIKE "%'.$free_search_str.'%" OR - id_usuario LIKE "%'.$free_search_str.'%" OR - text LIKE "%'.$free_search_str.'%" OR - description LIKE "%'.$free_search_str.'%")'; + AND (`ttrap`.`source` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`oid` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`oid_custom` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`type_custom` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`value` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`value_custom` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`id_usuario` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`text` LIKE "%'.$free_search_str.'%" OR + `ttrap`.`description` LIKE "%'.$free_search_str.'%")'; + } + + if ($filters['filter_alias_search'] !== '') { + $alias_search = io_safe_output($filters['filter_alias_search']); + $whereSubquery .= ' + AND `tagente`.`alias` LIKE "%'.$alias_search.'%"'; } if ($filters['filter_status'] != -1) { - $whereSubquery .= ' AND status = '.$filters['filter_status']; + $whereSubquery .= ' AND `ttrap`.`status` = '.$filters['filter_status']; } if ($date_from_trap != '') { if ($time_from_trap != '') { $whereSubquery .= ' - AND (utimestamp > '.$ago_timestamp.') + AND (`ttrap`.`utimestamp` > '.$ago_timestamp.') '; } else { $whereSubquery .= ' - AND (UNIX_TIMESTAMP(timestamp) > UNIX_TIMESTAMP("'.$date_from_trap.' 23:59:59")) + AND (UNIX_TIMESTAMP(`ttrap`.`timestamp`) > UNIX_TIMESTAMP("'.$date_from_trap.' 23:59:59")) '; } } @@ -696,37 +739,31 @@ class SnmpConsole extends HTML if ($date_to_trap != '') { if ($time_to_trap) { $whereSubquery .= ' - AND (utimestamp < '.$now_timestamp.') + AND (`ttrap`.`utimestamp` < '.$now_timestamp.') '; } else { $whereSubquery .= ' - AND (UNIX_TIMESTAMP(timestamp) < UNIX_TIMESTAMP("'.$date_to_trap.' 23:59:59")) + AND (UNIX_TIMESTAMP(`ttrap`.`timestamp`) < UNIX_TIMESTAMP("'.$date_to_trap.' 23:59:59")) '; } } if ($filters['filter_trap_type'] == 5) { - $whereSubquery .= ' AND type NOT IN (0, 1, 2, 3, 4)'; + $whereSubquery .= ' AND `ttrap`.`type` NOT IN (0, 1, 2, 3, 4)'; } else if ($filters['filter_trap_type'] != -1) { - $whereSubquery .= ' AND type = '.$filters['filter_trap_type']; + $whereSubquery .= ' AND `ttrap`.`type` = '.$filters['filter_trap_type']; } + $where_without_group = ''; if ($filters['filter_group_by']) { $where_without_group = $whereSubquery; - $whereSubquery .= ' GROUP BY source,oid'; + $whereSubquery .= ' GROUP BY `ttrap`.`source`,`ttrap`.`oid`,`ttrap`.`id_trap`'; + } else if ($filters['filter_alias_search'] !== '') { + $whereSubquery .= ' GROUP BY `ttrap`.`id_trap`'; } - $sql = sprintf($sql, $whereSubquery, $start, $length); - - $sql_count = 'SELECT COUNT(id_trap) FROM ttrap - WHERE ( - source IN ('.implode(',', $address_by_user_groups).") OR - source='' OR - source NOT IN (".implode(',', $all_address_agents).') - ) - %s'; - - $sql_count = sprintf($sql_count, $whereSubquery); + $sql = sprintf($sql, $sql_join, $whereSubquery, $start, $length); + $sql_count = sprintf($sql_count, $sql_join, $whereSubquery); $traps = db_get_all_rows_sql($sql, true); $total = (int) db_get_value_sql($sql_count, false, false); @@ -781,8 +818,8 @@ class SnmpConsole extends HTML $tmp->snmp_agent .= ''.$tmp->source.''; } else { $tmp->snmp_agent .= '
'; - $tmp->snmp_agent .= ''.$agent['alias'].''.ui_print_help_tip($tmp->source, true); - '
'; + $tmp->snmp_agent .= ''.$agent['alias'].ui_print_help_tip($tmp->source, true); + ''; } // Enterprise string. @@ -819,7 +856,13 @@ class SnmpConsole extends HTML // User ID. $tmp->user_id = '
'; if (empty($status) === false) { - $tmp->user_id .= ''.substr($tmp->id_usuario, 0, 8).''; + if (users_is_admin($config['id_user']) === true || check_acl($config['id_user'], 0, 'UM') === true) { + $url = ui_get_full_url('index.php?sec=gusuarios&sec2=godmode/users/configure_user&edit_user=1&pure=0&id_user='.$tmp->id_usuario); + $tmp->user_id .= ''.substr($tmp->id_usuario, 0, 8).''; + } else { + $tmp->user_id .= substr($tmp->id_usuario, 0, 8); + } + if (!empty($tmp->id_usuario)) { $tmp->user_id .= ui_print_help_tip(get_user_fullname($tmp->id_usuario), true); } @@ -1129,25 +1172,42 @@ class SnmpConsole extends HTML $whereSubquery .= ' AND alerted = '.$$alert; } - $severity = (int) $severity; - if ($severity !== -1) { + if ($severity != -1) { // There are two special severity values aimed to match two different trap standard severities // in database: warning/critical and critical/normal. - if ($severity !== EVENT_CRIT_OR_NORMAL - && $severity !== EVENT_CRIT_WARNING_OR_CRITICAL - && $severity !== EVENT_CRIT_NOT_NORMAL + if ($severity != EVENT_CRIT_OR_NORMAL + && $severity != EVENT_CRIT_WARNING_OR_CRITICAL ) { // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND severity = '.$severity; + if ($config['enterprise_installed']) { + $whereSubquery .= ' AND ( + (alerted = 0 AND severity = '.$severity.') OR + (alerted = 1 AND priority = '.$severity.'))'; + } else { + $whereSubquery .= ' AND ( + (alerted = 0 AND 1 = '.$severity.') OR + (alerted = 1 AND priority = '.$severity.'))'; + } } else if ($severity === EVENT_CRIT_WARNING_OR_CRITICAL) { // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND (severity = '.EVENT_CRIT_WARNING.' OR severity = '.EVENT_CRIT_CRITICAL.' OR severity = '.EVENT_CRIT_WARNING_OR_CRITICAL.')'; + if ($config['enterprise_installed']) { + $whereSubquery .= ' AND ( + (alerted = 0 AND (severity = '.EVENT_CRIT_WARNING.' OR severity = '.EVENT_CRIT_CRITICAL.')) OR + (alerted = 1 AND (priority = '.EVENT_CRIT_WARNING.' OR priority = '.EVENT_CRIT_CRITICAL.')))'; + } else { + $whereSubquery .= ' AND ( + (alerted = 1 AND (priority = '.EVENT_CRIT_WARNING.' OR priority = '.EVENT_CRIT_CRITICAL.')))'; + } } else if ($severity === EVENT_CRIT_OR_NORMAL) { // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND (severity = '.EVENT_CRIT_NORMAL.' OR severity = '.EVENT_CRIT_CRITICAL.' OR severity = '.EVENT_CRIT_OR_NORMAL.')'; - } else if ($severity === EVENT_CRIT_NOT_NORMAL) { - // Test if enterprise is installed to search oid in text or oid field in ttrap. - $whereSubquery .= ' AND (severity = '.EVENT_CRIT_WARNING.' OR severity = '.EVENT_CRIT_CRITICAL.' OR severity = '.EVENT_CRIT_NOT_NORMAL.')'; + if ($config['enterprise_installed']) { + $whereSubquery .= ' AND ( + (alerted = 0 AND (severity = '.EVENT_CRIT_NORMAL.' OR severity = '.EVENT_CRIT_CRITICAL.')) OR + (alerted = 1 AND (priority = '.EVENT_CRIT_NORMAL.' OR priority = '.EVENT_CRIT_CRITICAL.')))'; + } else { + $whereSubquery .= ' AND ( + (alerted = 1 AND (priority = '.EVENT_CRIT_NORMAL.' OR priority = '.EVENT_CRIT_CRITICAL.')))'; + } } } diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 9af4949d06..eda52ce705 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -22,7 +22,7 @@ use DI\ContainerBuilder; /* * Pandora build version and version */ -$build_version = 'PC240503'; +$build_version = 'PC240508'; $pandora_version = 'v7.0NG.776'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 7026165089..d4c71597fc 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -741,8 +741,10 @@ function config_update_config() $error_update[] = __('Admin secondary LDAP login'); } - if (config_update_value('ldap_admin_pass_secondary', get_parameter('ldap_admin_pass_secondary'), true, true) === false) { - $error_update[] = __('Admin secondary LDAP password'); + if ((bool) get_parameter('ldap_admin_pass_secondary_password_changed', false) === true) { + if (config_update_value('ldap_admin_pass_secondary', get_parameter('ldap_admin_pass_secondary'), true, true) === false) { + $error_update[] = __('Admin LDAP password secondary'); + } } if (config_update_value('fallback_local_auth', get_parameter('fallback_local_auth'), true) === false) { diff --git a/pandora_console/include/functions_forecast.php b/pandora_console/include/functions_forecast.php index 1f0d1e59d9..e4fb43a7c5 100644 --- a/pandora_console/include/functions_forecast.php +++ b/pandora_console/include/functions_forecast.php @@ -134,11 +134,14 @@ function forecast_projection_graph( // 3.1 Standard deviation for X: sqrt((Sum(Xi²)/Obs) - (avg X)²) // 3.2 Standard deviation for Y: sqrt((Sum(Yi²)/Obs) - (avg Y)²) // Linear correlation coefficient: - // Agent interval could be zero, 300 is the predefined + // Agent interval could be zero, 300 is the predefined. if ($sum_obs == 0) { $agent_interval = SECONDS_5MINUTES; } else { $agent_interval = ($sum_diff_dates / $sum_obs); + if ($agent_interval < 60) { + $agent_interval = SECONDS_1MINUTE; + } } // Could be a inverse correlation coefficient @@ -170,7 +173,7 @@ function forecast_projection_graph( $a = 0; } - // Data inicialization + // Data inicialization. $output_data = []; if ($prediction_period != false) { $limit_timestamp = ($last_timestamp + $prediction_period); @@ -199,50 +202,54 @@ function forecast_projection_graph( $time_format = 'M d'; } - // Aplying linear regression to module data in order to do the prediction - $idx = 0; - // Create data in graph format like - while ($in_range) { - $now = time(); + try { + // Aplying linear regression to module data in order to do the prediction. + $idx = 0; + // Create data in graph format like. + while ($in_range) { + $now = time(); - // Check that exec time is not greater than half max exec server time - if ($max_exec_time != false) { - if (($begin_time + ($max_exec_time / 2)) < $now) { - return false; - } - } - - $timestamp_f = ($current_ts * 1000); - - if ($csv) { - $output_data[$idx]['date'] = $current_ts; - $output_data[$idx]['data'] = ($a + ($b * $current_ts)); - } else { - $output_data[$idx][0] = $timestamp_f; - $output_data[$idx][1] = ($a + ($b * $current_ts)); - } - - // Using this function for prediction_date - if ($prediction_period == false) { - // These statements stop the prediction when interval is greater than 2 years - if (($current_ts - $last_timestamp) >= 94608000 - || $max_value == $min_value - ) { - return false; + // Check that exec time is not greater than half max exec server time. + if ($max_exec_time != false) { + if (($begin_time + ($max_exec_time / 2)) < $now) { + return false; + } } - // Found it - if (($max_value >= $output_data[$idx][1]) - && ($min_value <= $output_data[$idx][0]) - ) { - return ($current_ts + ($sum_diff_dates * $agent_interval)); - } - } else if ($current_ts > $limit_timestamp) { - $in_range = false; - } + $timestamp_f = ($current_ts * 1000); - $current_ts = ($current_ts + $agent_interval); - $idx++; + if ($csv) { + $output_data[$idx]['date'] = $current_ts; + $output_data[$idx]['data'] = ($a + ($b * $current_ts)); + } else { + $output_data[$idx][0] = $timestamp_f; + $output_data[$idx][1] = ($a + ($b * $current_ts)); + } + + // Using this function for prediction_date. + if ($prediction_period == false) { + // These statements stop the prediction when interval is greater than 2 years. + if (($current_ts - $last_timestamp) >= 94608000 + || $max_value == $min_value + ) { + return false; + } + + // Found it. + if (($max_value >= $output_data[$idx][1]) + && ($min_value <= $output_data[$idx][0]) + ) { + return ($current_ts + ($sum_diff_dates * $agent_interval)); + } + } else if ($current_ts > $limit_timestamp) { + $in_range = false; + } + + $current_ts = ($current_ts + $agent_interval); + $idx++; + } + } catch (\Exception $e) { + return false; } return $output_data; diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index b08267d2bf..64e7ed2063 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -3509,7 +3509,7 @@ function graph_custom_sql_graph( } if ((int) $ttl === 2) { - $options['dataLabel'] = ['display' => 'auto']; + $options['dataLabel'] = ['display' => true]; if ($layout !== false && is_array($layout) === true) { $options['layout'] = $layout; diff --git a/pandora_console/include/functions_groups.php b/pandora_console/include/functions_groups.php index 5dd99ebce9..079aaa555a 100644 --- a/pandora_console/include/functions_groups.php +++ b/pandora_console/include/functions_groups.php @@ -2662,7 +2662,20 @@ function tactical_groups_get_agents_and_monitoring($id_groups, $data='') $tdata[1] = ''.$tdata[1].''; if ($data['total_agents'] > 500 && !enterprise_installed()) { - $tdata[2] = "
"; + $tdata[2] = "
"; + $tdata[2] .= html_print_image( + 'images/alert_enterprise.png', + true, + [ + 'title' => __('Enterprise version not installed'), + 'class' => 'img_help' + ], + false, + false, + false, + true + ); + $tdata[2] .= '
'; } $tdata[3] = html_print_image('images/module.png', true, ['title' => __('Monitor checks'), 'class' => 'invert_filter'], false, false, false, true); @@ -2676,7 +2689,20 @@ function tactical_groups_get_agents_and_monitoring($id_groups, $data='') */ if ($data['total_agents']) { if (($data['monitor_total'] / $data['total_agents'] > 100) && !enterprise_installed()) { - $tdata[5] = "
"; + $tdata[5] = "
"; + $tdata[5] .= html_print_image( + 'images/alert_enterprise.png', + true, + [ + 'title' => __('Enterprise version not installed'), + 'class' => 'img_help' + ], + false, + false, + false, + true + ); + $tdata[5] .= '
'; } } @@ -2728,7 +2754,20 @@ function tactical_groups_get_stats_alerts($id_groups, $data='') */ if ($data['monitor_alerts'] > $data['total_agents'] && !enterprise_installed()) { - $tdata[2] = "
"; + $tdata[2] = "
"; + $tdata[2] .= html_print_image( + 'images/alert_enterprise.png', + true, + [ + 'title' => __('Enterprise version not installed'), + 'class' => 'img_help' + ], + false, + false, + false, + true + ); + $tdata[2] .= '
'; } $tdata[3] = html_print_image( diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index 6de4467d83..a1ecf8d219 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -7942,6 +7942,7 @@ function html_print_select_date_range( $date_format_js='yy/mm/dd', $time_format_js='HH:mm:ss', $id='', + $units_selected='1', ) { global $config; @@ -8136,7 +8137,7 @@ function html_print_select_date_range( $output .= html_print_select( $units, $name.'_units', - '1', + $units_selected, '', '', 0, diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index aa2567952b..4d4ec989c8 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -6128,7 +6128,7 @@ function reporting_alert_get_fired($id_agent_module, $id_alert_template_module, $datelimit = ($datetime - $period); - $empty = '----------------------------'; + $empty = ''; if (empty($firedTimes)) { $firedTimes = []; $firedTimes[0]['timestamp'] = $empty; @@ -6429,7 +6429,7 @@ function reporting_alert_report_agent($report, $content) $data_action[$naction]['name'] = $action['name']; $fired = $action['fired']; if ($fired == 0 || ($fired <= $datelimit || $fired > $datetime)) { - $data_action[$naction]['fired'] = '----------------------------'; + $data_action[$naction]['fired'] = ''; } else { $data_action[$naction]['fired'] = $fired; } @@ -6441,7 +6441,7 @@ function reporting_alert_report_agent($report, $content) $data_action[$naction]['name'] = $action['name']; $fired = $action['fired']; if ($fired == 0 || ($fired <= $datelimit || $fired > $datetime)) { - $data_action[$naction]['fired'] = '----------------------------'; + $data_action[$naction]['fired'] = ''; } else { $data_action[$naction]['fired'] = $fired; } @@ -6453,7 +6453,7 @@ function reporting_alert_report_agent($report, $content) $data_action[$naction]['name'] = $action['name']; $fired = $action['fired']; if ($fired == 0 || ($fired <= $datelimit || $fired > $datetime)) { - $data_action[$naction]['fired'] = '----------------------------'; + $data_action[$naction]['fired'] = ''; } else { $data_action[$naction]['fired'] = $fired; } @@ -6604,7 +6604,7 @@ function reporting_alert_report_module($report, $content) $data_action[$naction]['name'] = $action['name']; $fired = $action['fired']; if ($fired == 0 || ($fired <= $datelimit || $fired > $datetime)) { - $data_action[$naction]['fired'] = '----------------------------'; + $data_action[$naction]['fired'] = ''; } else { $data_action[$naction]['fired'] = $fired; } @@ -6616,7 +6616,7 @@ function reporting_alert_report_module($report, $content) $data_action[$naction]['name'] = $action['name']; $fired = $action['fired']; if ($fired == 0 || ($fired <= $datelimit || $fired > $datetime)) { - $data_action[$naction]['fired'] = '----------------------------'; + $data_action[$naction]['fired'] = ''; } else { $data_action[$naction]['fired'] = $fired; } @@ -6628,7 +6628,7 @@ function reporting_alert_report_module($report, $content) $data_action[$naction]['name'] = $action['name']; $fired = $action['fired']; if ($fired == 0 || ($fired <= $datelimit || $fired > $datetime)) { - $data_action[$naction]['fired'] = '----------------------------'; + $data_action[$naction]['fired'] = ''; } else { $data_action[$naction]['fired'] = $fired; } @@ -6692,6 +6692,7 @@ function reporting_sql_graph( switch ($type_sql_graph) { case 'sql_graph_hbar': default: + $layout = ['padding' => ['right' => '40']]; $return['type'] = 'sql_graph_hbar'; break; diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index c3fceb7644..1238609915 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -1712,7 +1712,7 @@ function reporting_html_event_report_group($table, $item, $pdf=0) $table1->head[3] = __('Name'); $table1->head[4] = __('Agent'); $table1->head[5] = __('Severity'); - $table1->head[6] = __('Val. by'); + $table1->head[6] = __('Validated by'); $table1->head[7] = __('Timestamp'); } else { $table1->head[0] = __('Status'); @@ -1720,7 +1720,7 @@ function reporting_html_event_report_group($table, $item, $pdf=0) $table1->head[2] = __('Name'); $table1->head[3] = __('Agent'); $table1->head[4] = __('Severity'); - $table1->head[5] = __('Val. by'); + $table1->head[5] = __('Validated by'); $table1->head[6] = __('Timestamp'); } @@ -1801,7 +1801,11 @@ function reporting_html_event_report_group($table, $item, $pdf=0) 'id_user', $event['id_usuario'] ); - $data[] = io_safe_output($user_name); + if (isset($event['id_usuario']) === true && empty($event['id_usuario']) === false) { + $data[] = io_safe_output($user_name).' ('.$event['id_usuario'].')'; + } else { + $data[] = ''; + } } if ($item['show_summary_group']) { @@ -3845,7 +3849,7 @@ function reporting_html_event_report_agent($table, $item, $pdf=0) $table1->head[2] = __('Name'); $table1->head[4] = __('Severity'); - $table1->head[5] = __('Val. by'); + $table1->head[5] = __('Validated by'); $table1->head[6] = __('Timestamp'); if ((bool) $item['show_custom_data'] === true) { $table1->head[7] = __('Custom data'); @@ -3904,7 +3908,11 @@ function reporting_html_event_report_agent($table, $item, $pdf=0) $data[] = ''.__('System').''; } else { $user_name = db_get_value('fullname', 'tusuario', 'id_user', $event['validated_by']); - $data[] = io_safe_output($user_name); + if (isset($event['id_usuario']) === true && empty($event['id_usuario']) === false) { + $data[] = io_safe_output($user_name).' ('.$event['id_usuario'].')'; + } else { + $data[] = ''; + } } if ($item['show_summary_group']) { diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js index b6e20aa4ba..9acd059543 100644 --- a/pandora_console/include/javascript/pandora_dashboards.js +++ b/pandora_console/include/javascript/pandora_dashboards.js @@ -1722,3 +1722,16 @@ function show_projection_period() { $("#div_projection_period").hide(); } } + +// Paused and resume if edit mode is checked. +// eslint-disable-next-line no-unused-vars +function paused_resume_dashboard_countdown() { + $("#checkbox-edit-mode").on("click", function() { + let isChecked = $("#checkbox-edit-mode").is(":checked"); + if (isChecked) { + $("#refrcounter").countdown("pause"); + } else { + $("#refrcounter").countdown("resume"); + } + }); +} diff --git a/pandora_console/install.php b/pandora_console/install.php index d97bd64d26..3b55fe9968 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -131,7 +131,7 @@
= $datetime_end) { $datetime_init = $date_init_less; @@ -55,7 +56,6 @@ if ($custom_date === '1') { $date_end = date('Y/m/d H:i:s', $datetime_end); $period = ($datetime_end - $datetime_init); } else if ($custom_date === '2') { - $date_units = get_parameter('utimestamp_units'); $date_end = date('Y/m/d H:i:s'); $date_init = date('Y/m/d H:i:s', (strtotime($date_end) - ((int) $date_text * (int) $date_units))); $period = (strtotime($date_end) - strtotime($date_init)); @@ -768,7 +768,14 @@ if (is_metaconsole() === false) { date('H:i:s', $date_init), date('Y/m/d', $utimestamp), date('H:i:s', $utimestamp), - $date_text + $date_text, + 'w100p', + 'Y/m/d', + 'H:i:s', + 'yy/mm/dd', + 'HH:mm:ss', + '', + $date_units ) ); } diff --git a/pandora_console/operation/reporting/graph_analytics.php b/pandora_console/operation/reporting/graph_analytics.php index 4b5facb139..e5c910bb43 100644 --- a/pandora_console/operation/reporting/graph_analytics.php +++ b/pandora_console/operation/reporting/graph_analytics.php @@ -55,11 +55,12 @@ if (is_ajax()) { $search = io_safe_input($search_left); // Agents. - // Concatenate AW and AD permisions to get all the possible groups where the user can manage. + // Concatenate AR, AW and AD permisions to get all the possible groups where the user can manage. $user_groupsAW = users_get_groups($config['id_user'], 'AW'); $user_groupsAD = users_get_groups($config['id_user'], 'AD'); + $user_groupsAR = users_get_groups($config['id_user'], 'AR'); - $user_groups = ($user_groupsAW + $user_groupsAD); + $user_groups = ($user_groupsAW + $user_groupsAD + $user_groupsAR); $user_groups_to_sql = implode(',', array_keys($user_groups)); $search_sql = ' AND (nombre LIKE "%%'.$search.'%%" OR alias LIKE "%%'.$search.'%%")'; @@ -197,6 +198,9 @@ if (is_ajax()) { 'graph_analytics' => true, ]; + // Included dependencies when is an ajax request. + include_javascript_dependencies_flot_graph(false); + $graph_return = graphic_combined_module( $modules, $params, diff --git a/pandora_console/operation/snmpconsole/snmp_view.php b/pandora_console/operation/snmpconsole/snmp_view.php index 1073598c51..c9fea95119 100755 --- a/pandora_console/operation/snmpconsole/snmp_view.php +++ b/pandora_console/operation/snmpconsole/snmp_view.php @@ -36,6 +36,7 @@ $ajaxPage = $config['homedir'].'/operation/snmpconsole/snmp_view'; $filter_alert = get_parameter('filter_alert', -1); $filter_severity = get_parameter('filter_severity', -1); $filter_free_search = get_parameter('filter_free_search', ''); +$filter_alias_search = get_parameter('filter_alias_search', ''); $filter_status = get_parameter('filter_status', 0); $filter_group_by = get_parameter('filter_group_by', 0); $filter_hours_ago = get_parameter('filter_hours_ago', 8); @@ -54,7 +55,8 @@ try { $filter_group_by, $filter_hours_ago, $filter_trap_type, - $refr + $refr, + $filter_alias_search ); } catch (Exception $e) { if ((bool) is_ajax() === true) { diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 542063a115..b823863f7d 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -6,7 +6,7 @@ %define debug_package %{nil} %define name pandorafms_console %define version 7.0NG.776 -%define release 240503 +%define release 240508 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index adde143f1b..fe3d58e948 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -6,7 +6,7 @@ %define debug_package %{nil} %define name pandorafms_console %define version 7.0NG.776 -%define release 240503 +%define release 240508 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 95b39754c8..a14c540e7e 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.776 -%define release 240503 +%define release 240508 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 9b4d2b595a..8696d17d95 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -3777,6 +3777,7 @@ CREATE TABLE IF NOT EXISTS `tlayout_template` ( `maintenance_mode` TEXT, `grid_color` VARCHAR(45) NOT NULL DEFAULT '#cccccc', `grid_size` VARCHAR(45) NOT NULL DEFAULT '10', + `create_from` INT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index 83f017d531..d76f65b3f8 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -1217,7 +1217,7 @@ INSERT INTO `tagent_custom_fields` VALUES (1,'Serial Number',0,0,'',0),(2,' INSERT INTO `ttag` VALUES (1,'network','Network equipment','http://pandorafms.com','','',''),(2,'critical','Critical modules','','','',''),(3,'dmz','DMZ Network Zone','','','',''),(4,'performance','Performance anda capacity modules','','','',''),(5,'configuration','','','','',''); -INSERT INTO `tevent_response` VALUES (1,'Ping to host','Ping to the agent host','ping -c 5 _agent_address_','command',0,620,500,0,'',0,90,0),(3,'Create incident from event','Create a incident from the event with the standard incidents system of Pandora FMS','index.php?sec=workspace&sec2=operation/incidents/incident_detail&insert_form&from_event=_event_id_','url',0,0,0,1,'',0,90,0),(5,'Restart agent','Restart the agent with using UDP protocol. To use this response is necessary to have installed Pandora FMS server and console in the same machine.','/usr/share/pandora_server/util/udp_client.pl _agent_address_ 41122 "REFRESH AGENT"','command',0,620,500,0,'',0,90,0),(6,'Ping to module agent host','Ping to the module agent host','ping -c 5 _module_address_','command',0,620,500,0,'',0,90,0),(7,'Create ticket in Pandora ITSM from event','Create a ticket in Pandora ITSM from an event','index.php?sec=manageTickets&sec2=operation/ITSM/itsm&operation=edit&from_event=_event_id_','url',0,0,0,1,'',0,90,1); +INSERT INTO `tevent_response` VALUES (1,'Ping to host','Ping to the agent host','ping -c 5 _agent_address_','command',0,620,500,0,'',0,90,0),(5,'Restart agent','Restart the agent with using UDP protocol. To use this response is necessary to have installed Pandora FMS server and console in the same machine.','/usr/share/pandora_server/util/udp_client.pl _agent_address_ 41122 "REFRESH AGENT"','command',0,620,500,0,'',0,90,0),(6,'Ping to module agent host','Ping to the module agent host','ping -c 5 _module_address_','command',0,620,500,0,'',0,90,0),(7,'Create ticket in Pandora ITSM from event','Create a ticket in Pandora ITSM from an event','index.php?sec=manageTickets&sec2=operation/ITSM/itsm&operation=edit&from_event=_event_id_','url',0,0,0,1,'',0,90,1); INSERT INTO `tupdate_settings` VALUES ('current_update', '412'), ('customer_key', 'PANDORA-FREE'), ('updating_binary_path', 'Path where the updated binary files will be stored'), ('updating_code_path', 'Path where the updated code is stored'), ('dbname', ''), ('dbhost', ''), ('dbpass', ''), ('dbuser', ''), ('dbport', ''), ('proxy', ''), ('proxy_port', ''), ('proxy_user', ''), ('proxy_pass', ''); diff --git a/pandora_console/views/dashboard/layout.php b/pandora_console/views/dashboard/layout.php index 4d1553dd7e..478d0f0f4e 100644 --- a/pandora_console/views/dashboard/layout.php +++ b/pandora_console/views/dashboard/layout.php @@ -94,5 +94,8 @@ echo $output; $("#button-add-widget-"+cellId).trigger("click"); }, 500); } + + // Paused and resume if edit mode is checked. + paused_resume_dashboard_countdown(); }); diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index f4737b6c1d..b588d7b1d1 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.776-240503 +Version: 7.0NG.776-240508 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index d6809d6d40..7a20561466 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.776-240503" +pandora_version="7.0NG.776-240508" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 1c0fe1b622..cb158a6872 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -46,7 +46,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.776"; -my $pandora_build = "240503"; +my $pandora_build = "240508"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index b5c72ab6c1..8d7a7db7a8 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -34,7 +34,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.776"; -my $pandora_build = "240503"; +my $pandora_build = "240508"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 7cc4e63064..8e03bdd0f6 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -7,7 +7,7 @@ %define debug_package %{nil} %define name pandorafms_server %define version 7.0NG.776 -%define release 240503 +%define release 240508 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 16ad3ac618..b60ef75ce8 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_server %define version 7.0NG.776 -%define release 240503 +%define release 240508 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 5a42f571c6..092681a8b4 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.776" -PI_BUILD="240503" +PI_BUILD="240508" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 511a173cf1..49587f6da2 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -38,7 +38,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.776 Build 240503"; +my $version = "7.0NG.776 Build 240508"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index a74b93661d..5bcdac301e 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.776 Build 240503"; +my $version = "7.0NG.776 Build 240508"; # save program name for logging my $progname = basename($0);