diff --git a/extras/deploy-scripts/pandora_agent_deploy.sh b/extras/deploy-scripts/pandora_agent_deploy.sh index a16f5afc47..88bfe4dd83 100644 --- a/extras/deploy-scripts/pandora_agent_deploy.sh +++ b/extras/deploy-scripts/pandora_agent_deploy.sh @@ -78,16 +78,16 @@ cd unix && ./pandora_agent_installer --install } -install_autodiscover () { - local arch=$1 - wget http://firefly.pandorafms.com/projects/autodiscover-linux.zip - unzip autodiscover-linux.zip - chmod +x $arch/autodiscover - mv -f $arch/autodiscover /etc/pandora/plugins/autodiscover -} +# install_autodiscover () { +# local arch=$1 +# wget http://firefly.pandorafms.com/projects/autodiscover-linux.zip +# unzip autodiscover-linux.zip +# chmod +x $arch/autodiscover +# mv -f $arch/autodiscover /etc/pandora/plugins/autodiscover +# } ## Main -echo "Starting PandoraFMS Agent deployment ver. $S_VERSION" +echo "Starting PandoraFMS Agent binary deployment ver. $S_VERSION" execute_cmd "[ $PANDORA_SERVER_IP ]" 'Check Server IP Address' 'Please define env variable PANDORA_SERVER_IP' @@ -104,8 +104,6 @@ OS=$([[ $(grep '^ID_LIKE=' /etc/os-release) ]] && grep ^ID_LIKE= /etc/os-release [[ $OS =~ 'rhel' ]] && OS_RELEASE=$OS [[ $OS =~ 'fedora' ]] && OS_RELEASE=$OS [[ $OS =~ 'debian' ]] && OS_RELEASE=$OS -#[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS -#[[ $OS == 'centos rhel fedora' ]] && OS_RELEASE=$OS # initialice logfile execute_cmd "echo 'Starting community deployment' > $LOGFILE" "All installer activity is logged on $LOGFILE" @@ -126,6 +124,30 @@ check_repo_connection execute_cmd "grep --version" 'Checking needed tools: grep' execute_cmd "sed --version" 'Checking needed tools: sed' +# Arch check +arch=$(uname -m) +case $arch in + + x86_64) + echo -e "${cyan}Arch: $arch ${reset} " + ;; + + x86) + echo -e "${yellow}Skiping installation arch: $arch not suported by binary agent please consider to install source agent${reset}" + exit -1 + ;; + + armv7l) + echo -e "${yellow}Skiping installation arch: $arch not suported by binary agent please consider to install source agent${reset}" + exit -1 + ;; + + *) + echo -e "${yellow}Skiping installation arch: $arch not suported by binary agent please consider to install source agent${reset}" + exit -1 + ;; +esac + # Creating working directory rm -rf $HOME/pandora_deploy_tmp/ &>> $LOGFILE mkdir $HOME/pandora_deploy_tmp &>> $LOGFILE @@ -148,6 +170,10 @@ if [[ $OS_RELEASE =~ 'rhel' ]] || [[ $OS_RELEASE =~ 'fedora' ]]; then # Check rh version if [ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '8' ] ; then package_manager_cmd=dnf + execute_cmd "$package_manager_cmd install -y libnsl" "Installing dependencies" + elif [ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '9' ] ; then + package_manager_cmd=dnf + execute_cmd "$package_manager_cmd install -y libnsl libxcrypt-compat" "Installing dependencies" elif [ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '7' ] ; then package_manager_cmd=yum @@ -158,24 +184,23 @@ if [[ $OS_RELEASE =~ 'rhel' ]] || [[ $OS_RELEASE =~ 'fedora' ]]; then echo -e "${cyan}Installing agent dependencies...${reset}" ${green}OK${reset} # Insatall pandora agent - $package_manager_cmd install -y http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm &>> $LOGFILE - echo -en "${cyan}Installing Pandora FMS agent...${reset}" - check_cmd_status 'Error installing Pandora FMS agent' - [[ $PANDORA_AGENT_SSL ]] && execute_cmd "$package_manager_cmd install -y perl-IO-Socket-SSL" "Installing SSL libraries for encrypted connection" + [ "$PANDORA_AGENT_PACKAGE_EL" ] || PANDORA_AGENT_PACKAGE_EL="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux_bin-7.0NG.x86_64.rpm " + execute_cmd "$package_manager_cmd install -y ${PANDORA_AGENT_PACKAGE_EL}" 'Installing Pandora FMS agent package' + #[[ $PANDORA_AGENT_SSL ]] && execute_cmd "$package_manager_cmd install -y perl-IO-Socket-SSL" "Installing SSL libraries for encrypted connection" fi if [[ $OS_RELEASE == 'debian' ]]; then + [ "$PANDORA_AGENT_PACKAGE_UBUNTU" ] || PANDORA_AGENT_PACKAGE_UBUNTU='https://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG_x86_64.tar.gz' execute_cmd "apt update" 'Updating repos' - execute_cmd "apt install -y perl wget curl unzip procps python3 python3-pip" 'Installing agent dependencies' - execute_cmd 'wget http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz' 'Downloading Pandora FMS agent package' + execute_cmd "apt install -y perl wget curl unzip procps python3 python3-pip" 'Installing agent dependencies' + execute_cmd "curl --output pandorafms_agent_linux-7.0NG.tar.gz ${PANDORA_AGENT_PACKAGE_UBUNTU}" 'Downloading Pandora FMS agent package' execute_cmd 'install_tarball pandorafms_agent_linux-7.0NG.tar.gz' 'Installing Pandora FMS agent' - [[ $PANDORA_AGENT_SSL ]] && execute_cmd 'apt install -y libio-socket-ssl-perl' "Installing SSL libraries for encrypted connection" + #[[ $PANDORA_AGENT_SSL ]] && execute_cmd 'apt install -y libio-socket-ssl-perl' "Installing SSL libraries for encrypted connection" cd $HOME/pandora_deploy_tmp fi # Configuring Agente - [[ $PANDORA_SERVER_IP ]] && sed -i "s/^server_ip.*$/server_ip $PANDORA_SERVER_IP/g" $PANDORA_AGENT_CONF [[ $PANDORA_REMOTE_CONFIG ]] && sed -i "s/^remote_config.*$/remote_config $PANDORA_REMOTE_CONFIG/g" $PANDORA_AGENT_CONF [[ $PANDORA_GROUP ]] && sed -i "s/^group.*$/group $PANDORA_GROUP/g" $PANDORA_AGENT_CONF @@ -187,27 +212,6 @@ fi [[ $PANDORA_AGENT_SSL ]] && sed -i "s/^#server_ssl.*$/server_ssl $PANDORA_AGENT_SSL/g" $PANDORA_AGENT_CONF -#installing autodiscover - -arch=$(uname -m) -case $arch in - - x86_64) - execute_cmd 'install_autodiscover x86_64' "installing service autodiscover on $arch" 'Error unable to install autodiscovery' - ;; - - x86) - execute_cmd 'install_autodiscover x84' "installing service autodiscover on $arch" 'Error unable to install autodiscovery' - ;; - - armv7l) - echo -e "${cyan}Skiping autodiscover installation arch $arch not suported${reset}" - ;; - - *) - echo -e "${yellow}Skiping autodiscover installation arch $arch not suported${reset}" - ;; -esac #Starting pandora agent daemon. execute_cmd '/etc/init.d/pandora_agent_daemon restart' 'Starting Pandora Agent' diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 8a0a4c6858..878d9c62c3 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.773.3-230906 +Version: 7.0NG.773.3-230915 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 4a39e9db11..fe35c853f6 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.773.3-230906" +pandora_version="7.0NG.773.3-230915" 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 f794d4e871..b1aa799d15 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -1031,7 +1031,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.773.3'; -use constant AGENT_BUILD => '230906'; +use constant AGENT_BUILD => '230915'; # 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 60257077ee..16db25b35c 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.773.3 -%define release 230906 +%define release 230915 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec index b4bf9ffbab..8242c8f2bf 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.773.3 -%define release 230906 +%define release 230915 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 feba268ab9..2a631829e6 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.773.3 -%define release 230906 +%define release 230915 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 ae7a7abbee..f21eb9e11f 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.773.3" -PI_BUILD="230906" +PI_BUILD="230915" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 6eafb3e1e7..b04bc0ad08 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{230906} +{230915} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index ed8662a8b8..d2d54e337a 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.773.3 Build 230906") +#define PANDORA_VERSION ("7.0NG.773.3 Build 230915") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 7be40eb488..abddd843f8 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.773.3(Build 230906))" + VALUE "ProductVersion", "(7.0NG.773.3(Build 230915))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index eab9ac19cb..a956cfd8a1 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.773.3-230906 +Version: 7.0NG.773.3-230915 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 1a7d9a4406..e38a9e2b88 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.773.3-230906" +pandora_version="7.0NG.773.3-230915" package_pear=0 package_pandora=1 diff --git a/pandora_console/godmode/alerts/alert_list.list.php b/pandora_console/godmode/alerts/alert_list.list.php index 5dc0c78019..fa848c845d 100644 --- a/pandora_console/godmode/alerts/alert_list.list.php +++ b/pandora_console/godmode/alerts/alert_list.list.php @@ -811,7 +811,7 @@ foreach ($simple_alerts as $alert) { $data[3] .= ''; $data[3] .= ''.html_print_label_input_block( __('Agent'), - ui_print_truncate_text($alias, 'agent_small', false, true, true, '[…]') + ui_print_truncate_text($alias, 'agent_medium', false, true, true, '[…]') ).''; $data[3] .= ''.html_print_label_input_block( __('Module'), diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index f0e1012b0b..dd7233e99c 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -1370,36 +1370,58 @@ $class = 'databox filters'; } ?> + + + + + html_print_select( + $servers, + 'combo_server_all', + $server_name, + '', + __('All nodes'), + 'all' + ); + ?> + + + + + - $server) { - $server_ids[$server['id']] = $server['server_name']; - } + $server) { + $server_ids[$server['id']] = $server['server_name']; + } - html_print_select( - $server_ids, - 'server_multiple[]', - $server_multiple, - '', - '', - 0, - false, - true - ); - ?> + html_print_select( + $server_ids, + 'server_multiple[]', + $server_multiple, + '', + '', + 0, + false, + true + ); + ?> + } + ?> @@ -6651,6 +6673,7 @@ function chooseType() { $("#row_alert_actions").hide(); $("#row_servers").hide(); $("#row_servers_all_opt").hide(); + $("#row_servers_all").hide(); $("#row_multiple_servers").hide(); $("#row_sort").hide(); $("#row_date").hide(); @@ -7218,7 +7241,7 @@ function chooseType() { case 'group_report': $("#row_group").show(); - $("#row_servers_all_opt").show(); + $("#row_servers_all").show(); $("#row_description").show(); $("#row_historical_db_check").hide(); break; diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index e83ed4844f..59f091aa66 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -1997,7 +1997,7 @@ switch ($action) { break; case 'group_report': - $values['server_name'] = get_parameter('combo_server'); + $values['server_name'] = get_parameter('combo_server_all'); $good_format = true; break; @@ -2884,7 +2884,7 @@ switch ($action) { break; case 'group_report': - $values['server_name'] = get_parameter('combo_server'); + $values['server_name'] = get_parameter('combo_server_all'); $good_format = true; break; diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index 68f2e1dfe2..6379f86d3a 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -1025,6 +1025,27 @@ $table_font->data[$row][] = html_print_label_input_block( ); $row++; +$table_font->data[$row][] = html_print_label_input_block( + __('Truncate agent text at end'), + html_print_checkbox_switch( + 'truncate_agent_at_end', + 1, + $config['truncate_agent_at_end'], + true + ) +); + +$table_font->data[$row][] = html_print_label_input_block( + __('Truncate module text at end'), + html_print_checkbox_switch( + 'truncate_module_at_end', + 1, + $config['truncate_module_at_end'], + true + ) +); +$row++; + $table_font->data[$row][] = html_print_label_input_block( __('Agent size text'), html_print_div( diff --git a/pandora_console/include/ajax/alert_list.ajax.php b/pandora_console/include/ajax/alert_list.ajax.php index 2fbda5d75c..e50634354c 100644 --- a/pandora_console/include/ajax/alert_list.ajax.php +++ b/pandora_console/include/ajax/alert_list.ajax.php @@ -501,7 +501,7 @@ if ($show_update_action_menu) { $data .= ''; $data .= ui_print_truncate_text( $agent_alias, - 'agent_small', + 'agent_medium', false, true, true, diff --git a/pandora_console/include/ajax/notifications.ajax.php b/pandora_console/include/ajax/notifications.ajax.php new file mode 100644 index 0000000000..36ea95900d --- /dev/null +++ b/pandora_console/include/ajax/notifications.ajax.php @@ -0,0 +1,57 @@ + notifications_set_user_label_status( + $source, + $user, + $label, + $value + ), + ] + ); + + echo $json; + return; +} diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php index f6d3767708..7e5e5de1bc 100644 --- a/pandora_console/include/class/ConsoleSupervisor.php +++ b/pandora_console/include/class/ConsoleSupervisor.php @@ -703,7 +703,7 @@ class ConsoleSupervisor $total_agents = db_get_value('count(*)', 'tagente'); if ($total_agents >= 200) { - if ($config['agentaccess'] !== 0) { + if ((int) $config['agentaccess'] !== 0) { db_process_sql_update('tconfig', ['value' => 0], ['token' => 'agentaccess']); $this->notify( [ diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index b7ddd509b8..5c72351a8a 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 = 'PC230906'; +$build_version = 'PC230915'; $pandora_version = 'v7.0NG.773.3'; // 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 9bda03f8fd..1cc1b9d438 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -1288,6 +1288,10 @@ function config_update_config() $error_update[] = __('Default line menu items for the Services'); } + if (config_update_value('truncate_agent_at_end', get_parameter('truncate_agent_at_end'), true) === false) { + $error_update[] = __('Truncate agent text at end'); + } + if (config_update_value('agent_size_text_small', get_parameter('agent_size_text_small'), true) === false) { $error_update[] = __('Agent size text'); } @@ -1296,6 +1300,10 @@ function config_update_config() $error_update[] = __('Agent size text'); } + if (config_update_value('truncate_module_at_end', get_parameter('truncate_module_at_end'), true) === false) { + $error_update[] = __('Truncate module text at end'); + } + if (config_update_value('module_size_text_small', get_parameter('module_size_text_small'), true) === false) { $error_update[] = __('Module size text'); } @@ -3526,6 +3534,10 @@ function config_process_config() config_update_value('display_item_frame', 1); } + if (!isset($config['truncate_agent_at_end'])) { + config_update_value('truncate_agent_at_end', 0); + } + if (!isset($config['agent_size_text_small'])) { config_update_value('agent_size_text_small', 18); } @@ -3534,6 +3546,10 @@ function config_process_config() config_update_value('agent_size_text_medium', 50); } + if (!isset($config['truncate_module_at_end'])) { + config_update_value('truncate_module_at_end', 0); + } + if (!isset($config['module_size_text_small'])) { config_update_value('module_size_text_small', 25); } diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 6fa1e2a8d5..bb0fe8fd58 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -1577,10 +1577,16 @@ function graphic_combined_module( $server_name = metaconsole_get_server_by_id($modules[0]['server']); } + if (isset($params_combined['custom_period']) !== false && $params_combined['custom_period'] !== false) { + $period = $params_combined['custom_period']; + } else { + $period = $params['period']; + } + if ($params_combined['projection']) { $output_projection = forecast_projection_graph( $module_list[0], - $params['period'], + $period, $params_combined['projection'], false, false, @@ -5376,9 +5382,11 @@ function graph_so_by_group($id_group, $width=300, $height=200, $recursive=true, 'SELECT COUNT(id_agente) AS count, os.name FROM tagente a + LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente LEFT JOIN tconfig_os os ON a.id_os = os.id_os - WHERE a.id_grupo IN (%s) + WHERE a.id_grupo IN (%s) OR g.id_group IN (%s) GROUP BY os.id_os', + implode(',', $id_groups), implode(',', $id_groups) ); @@ -5460,7 +5468,7 @@ function graph_events_agent_by_group($id_group, $width=300, $height=200, $noWate } } - $filter_groups = ' AND te.id_grupo IN ('.implode(',', $id_groups).') '; + $filter_groups = ' AND (te.id_grupo IN ('.implode(',', $id_groups).') OR g.id_group IN ('.implode(',', $id_groups).'))'; // This will give the distinct id_agente, give the id_grupo that goes // with it and then the number of times it occured. GROUP BY statement @@ -5469,7 +5477,8 @@ function graph_events_agent_by_group($id_group, $width=300, $height=200, $noWate 'SELECT DISTINCT(id_agente) AS id_agente, COUNT(id_agente) AS count FROM tevento te - WHERE 1=1 AND estado = 0 + LEFT JOIN tagent_secondary_group g ON g.id_agent = te.id_agente + WHERE 1=1 AND estado = 0 %s %s GROUP BY id_agente ORDER BY count DESC LIMIT 8', diff --git a/pandora_console/include/functions_groups.php b/pandora_console/include/functions_groups.php index 0be3a8dffe..78b0804c30 100644 --- a/pandora_console/include/functions_groups.php +++ b/pandora_console/include/functions_groups.php @@ -2501,7 +2501,9 @@ function groups_get_heat_map_agents(array $id_group, float $width=0, float $heig $id_group = [$id_group]; } - $sql = 'SELECT * FROM tagente WHERE id_grupo IN('.implode(',', $id_group).')'; + $sql = 'SELECT * FROM tagente a + LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente + WHERE a.id_grupo IN ('.implode(',', $id_group).') OR g.id_group IN ('.implode(',', $id_group).')'; $all_agents = db_get_all_rows_sql($sql); if (empty($all_agents)) { @@ -2654,8 +2656,8 @@ function tactical_groups_get_agents_and_monitoring($id_groups, $data='') if ($data === '') { $data = [ - 'total_agents' => groups_agents_total_counters($id_groups, false)['total'], - 'monitor_total' => groups_get_total_monitors($id_groups, [], [], false, false, false, false), + 'total_agents' => groups_agents_total_counters($id_groups, true)['total'], + 'monitor_total' => groups_get_total_monitors($id_groups, [], [], false, false, false, true), ]; } @@ -2719,7 +2721,7 @@ function tactical_groups_get_stats_alerts($id_groups, $data='') } $urls = []; - $urls['monitor_alerts'] = $config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/alerts_status&refr=60&ag_group='.$id_groups[0]; + $urls['monitor_alerts'] = $config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/alerts_status&refr=60&disabled=all&ag_group='.$id_groups[0]; $urls['monitor_alerts_fired'] = $config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/alerts_status&refr=60&disabled=fired&ag_group='.$id_groups[0]; // Alerts table. @@ -2790,11 +2792,11 @@ function groups_get_stats_modules_status($id_groups, $graph_width=250, $graph_he if ($data === '') { $data = [ - 'monitor_critical' => groups_get_critical_monitors($id_groups, [], [], false, false, false, false), - 'monitor_warning' => groups_get_warning_monitors($id_groups, [], [], false, false, false, false), - 'monitor_ok' => groups_get_normal_monitors($id_groups, [], [], false, false, false, false), - 'monitor_unknown' => groups_get_unknown_monitors($id_groups, [], [], false, false, false, false), - 'monitor_not_init' => groups_get_not_init_monitors($id_groups, [], [], false, false, false, false), + 'monitor_critical' => groups_get_critical_monitors($id_groups, [], [], false, false, false, true), + 'monitor_warning' => groups_get_warning_monitors($id_groups, [], [], false, false, false, true), + 'monitor_ok' => groups_get_normal_monitors($id_groups, [], [], false, false, false, true), + 'monitor_unknown' => groups_get_unknown_monitors($id_groups, [], [], false, false, false, true), + 'monitor_not_init' => groups_get_not_init_monitors($id_groups, [], [], false, false, false, true), ]; } diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index 0dfbdc15af..382aaffc5b 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -3303,7 +3303,7 @@ function html_print_input_image($name, $src, $value, $style='', $return=false, $ // If metaconsole is activated and image doesn't exists try to search on normal console. if (is_metaconsole() === true) { - if (false === @file_get_contents($src, 0, null, 0, 1)) { + if ($src !== null && false === @file_get_contents($src, 0, null, 0, 1)) { $src = '../../'.$src; } } @@ -7302,6 +7302,8 @@ function html_print_select_date_range( $date_init = date('Y/m/d', strtotime($date_end.' -1 days')); } + $date_init = date('Y/m/d', strtotime($date_init)); + if ($time_init === '') { $time_init = date('H:i:s'); } diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index fe47857e33..e82fca400b 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -701,6 +701,7 @@ function modules_update_agent_module( } // Disable action requires a special function + $result = false; if (isset($values['disabled'])) { $result_disable = modules_change_disabled($id, $values['disabled']); @@ -709,7 +710,9 @@ function modules_update_agent_module( $result_disable = true; } - $result = @db_process_sql_update('tagente_modulo', $values, $where); + if (empty($values) === false) { + $result = @db_process_sql_update('tagente_modulo', $values, $where); + } if ($result == false) { if ($result_disable === ERR_GENERIC) { diff --git a/pandora_console/include/functions_notifications.php b/pandora_console/include/functions_notifications.php index 60a8e6bce0..b9393ce1c4 100644 --- a/pandora_console/include/functions_notifications.php +++ b/pandora_console/include/functions_notifications.php @@ -635,6 +635,12 @@ function notifications_get_user_label_status($source, $user, $label) array_keys(users_get_groups($user)), array_keys(notifications_get_group_sources_for_select($source['id'])) ); + + // Clean default common groups error for mesagges. + if ($common_groups[0] === 0) { + unset($common_groups[0]); + } + // No group found, return no permissions. $value = empty($common_groups) ? false : $source[$label]; return notifications_build_user_enable_return($value, false); @@ -760,9 +766,10 @@ function notifications_print_global_source_configuration($source) } // Generate the title. - $html_title = "
"; + $html_title = '

'.$source['description'].'

'; + $html_title .= "
"; $html_title .= html_print_switch($switch_values); - $html_title .= '

'.$source['description'].'

'; + $html_title .= '

'.__('Enable user configuration').'

'; $html_title .= '
'; // Generate the html for title. diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 994496322d..12988333ac 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -159,7 +159,10 @@ function reporting_make_reporting_data( $force_width_chart=null, $force_height_chart=null, $pdf=false, - $from_template=false + $from_template=false, + $filter_type='', + $custom_date_end='', + $custom_period=false ) { global $config; @@ -194,8 +197,7 @@ function reporting_make_reporting_data( if (empty($contents)) { return reporting_check_structure_report($report); - } - + }; $metaconsole_on = is_metaconsole(); $index_content = 0; @@ -562,7 +564,10 @@ function reporting_make_reporting_data( $type, $force_width_chart, $force_height_chart, - $pdf + $pdf, + $filter_type, + $custom_date_end, + $custom_period ); break; @@ -6917,7 +6922,10 @@ function reporting_projection_graph( $type='dinamic', $force_width_chart=null, $force_height_chart=null, - $pdf=false + $pdf=false, + $filter_type='', + $custom_date_end='', + $custom_period=false ) { global $config; @@ -6983,6 +6991,7 @@ function reporting_projection_graph( $return['agent_name_db'] = $agent_name_db; $return['agent_name'] = $agent_name; $return['module_name'] = $module_name; + $return['datetime'] = $report['datetime']; set_time_limit(500); @@ -7003,8 +7012,24 @@ function reporting_projection_graph( 'return_img_base_64' => true, ]; + $top_n_value = $content['top_n_value']; + if ($filter_type === 'this_week') { + $current_date = date('Y/m/d H:i:s'); + $monday = date('Y/m/d H:i:s', strtotime('last monday')); + $sunday = date('Y/m/d H:i:s', strtotime($monday.' +6 days')); + $top_n_value = (strtotime($sunday) - strtotime($current_date)); + } else if ($filter_type === 'this_month') { + $current_date = date('Y/m/d H:i:s'); + $last_of_month = date('Y/m/d', strtotime('last day of this month')); + $top_n_value = (strtotime($last_of_month) - strtotime($current_date)); + } else if ($filter_type === 'chose_range') { + $current_date = date('Y/m/d H:i:s'); + $top_n_value = (strtotime($custom_date_end) - strtotime($current_date)); + } + $params_combined = [ - 'projection' => $content['top_n_value'], + 'projection' => $top_n_value, + 'custom_period' => $custom_period, ]; if ($pdf === true) { diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index 9a7c072227..f794bcc8b0 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -26,6 +26,7 @@ * GNU General Public License for more details. * ============================================================================ */ +use PandoraFMS\Enterprise\Metaconsole\Node; require_once $config['homedir'].'/include/functions.php'; require_once $config['homedir'].'/include/functions_db.php'; @@ -119,10 +120,15 @@ function reporting_html_header( } -function html_do_report_info($report) +function html_do_report_info($report, $custom_date_end=false, $custom_period=false) { global $config; + if ($custom_period !== false && $custom_date_end !== false) { + $report['datetime'] = strtotime($custom_date_end); + $report['period'] = $custom_period; + } + if ($config['style'] === 'pandora_black' && !is_metaconsole()) { $background_color = '#222'; } else { @@ -170,10 +176,10 @@ function html_do_report_info($report) * * @return array */ -function reporting_html_print_report($report, $mini=false, $report_info=1) +function reporting_html_print_report($report, $mini=false, $report_info=1, $custom_date_end=false, $custom_period=false) { if ($report_info == 1) { - html_do_report_info($report); + html_do_report_info($report, $custom_date_end, $custom_period); } foreach ($report['contents'] as $key => $item) { @@ -226,6 +232,12 @@ function reporting_html_print_report($report, $mini=false, $report_info=1) $label = ''; } + if ($custom_date_end !== false) { + $to = strtotime($custom_date_end); + } else { + $to = $item['date']['to']; + } + reporting_html_header( $table, $mini, @@ -234,7 +246,7 @@ function reporting_html_print_report($report, $mini=false, $report_info=1) $item['date']['period'], $item['date']['date'], $item['date']['from'], - $item['date']['to'], + $to, $label ); @@ -2703,16 +2715,66 @@ function reporting_html_group_report($table, $item, $pdf=0) $table->colspan['group_report']['cell'] = 3; $table->cellstyle['group_report']['cell'] = 'text-align: center;'; $metaconsole_connected = false; - if (is_metaconsole() === true) { + if (is_metaconsole() === true && $item['server_name'] != '0') { $connection = metaconsole_get_connection($item['server_name']); if (metaconsole_connect($connection) == NOERR) { $metaconsole_connected = true; } } + $all_group_id = []; + $group_events = []; + $group_os = []; + if ($item['subtitle'] === 'All') { + if (is_metaconsole() === true && $item['server_name'] === 'all' || $item['server_name'] === '0') { + $nodes = metaconsole_get_connections(); + foreach ($nodes as $node) { + try { + $nd = new Node($node['id']); + $nd->connect(); + + $all_group_id_node = db_get_all_rows_sql('SELECT id_grupo FROM tgrupo'); + + $group_events_node = db_get_all_rows_sql( + 'SELECT COUNT(te.id_evento) as count_events, ta.alias + FROM tevento as te + INNER JOIN tagente as ta ON te.id_agente = ta.id_agente + GROUP BY te.id_agente' + ); + $group_os_node = db_get_all_rows_sql( + 'SELECT COUNT(os.name) as count_os, os.name as name_os, ta.id_grupo + FROM tconfig_os as os + INNER JOIN tagente as ta ON ta.id_os = os.id_os GROUP by os.name' + ); + + $all_group_id = array_merge($all_group_id, $all_group_id_node); + $group_events = array_merge($group_events, $group_events_node); + $group_os = array_merge($group_os, $group_os_node); + } catch (\Exception $e) { + $nd->disconnect(); + $modules_regex_node = []; + } finally { + $nd->disconnect(); + } + } + } else { + $all_group_id = db_get_all_rows_sql('SELECT id_grupo FROM tgrupo'); + + $group_events = db_get_all_rows_sql( + 'SELECT COUNT(te.id_evento) as count_events, ta.alias + FROM tevento as te + INNER JOIN tagente as ta ON te.id_agente = ta.id_agente + GROUP BY te.id_agente' + ); + $group_os = db_get_all_rows_sql( + 'SELECT COUNT(os.name) as count_os, os.name as name_os, ta.id_grupo + FROM tconfig_os as os + INNER JOIN tagente as ta ON ta.id_os = os.id_os GROUP by os.name' + ); + } + $group_id = []; - $all_group_id = db_get_all_rows_sql('SELECT id_grupo FROM tgrupo'); foreach ($all_group_id as $group) { $group_id[] = $group['id_grupo']; @@ -2720,61 +2782,113 @@ function reporting_html_group_report($table, $item, $pdf=0) $description = __('Data view of all groups'); $icon = ''; - - $group_events = db_get_all_rows_sql( - 'SELECT COUNT(te.id_evento) as count_events, ta.alias - FROM tevento as te - INNER JOIN tagente as ta ON te.id_agente = ta.id_agente - GROUP BY te.id_agente' - ); - - $group_os = db_get_all_rows_sql( - 'SELECT COUNT(os.name) as count_os, os.name as name_os, ta.id_grupo - FROM tconfig_os as os - INNER JOIN tagente as ta ON ta.id_os = os.id_os GROUP by os.name' - ); } else { $group_id = db_get_value('id_grupo', 'tgrupo', 'nombre', $item['subtitle']); - $description = db_get_value('description', 'tgrupo', 'id_grupo', $group_id); - $icon_url = db_get_value('icon', 'tgrupo', 'id_grupo', $group_id); - $icon = html_print_image( - 'images/'.$icon_url, - true, - [ - 'title' => $item['subtitle'], - 'class' => 'main_menu_icon invert_filter', - ] - ); - $childrens = db_get_all_rows_sql('SELECT id_grupo FROM tgrupo WHERE parent = '.$group_id); - $total_agents = db_get_all_rows_sql('SELECT COUNT(id_agente) as total FROM tagente where id_grupo = '.$group_id); + if (is_metaconsole() === true && $item['server_name'] === 'all' || $item['server_name'] === '0') { + $nodes = metaconsole_get_connections(); + foreach ($nodes as $node) { + try { + $nd = new Node($node['id']); + $nd->connect(); - if ($childrens !== false && (int) $total_agents[0]['total'] !== $item['data']['group_stats']['total_agents']) { - $array_group_id = []; - $array_group_id[] = $group_id; - foreach ($childrens as $group) { - $array_group_id[] = $group['id_grupo']; + $group_id_node = db_get_value('id_grupo', 'tgrupo', 'nombre', $item['subtitle']); + $description = db_get_value('description', 'tgrupo', 'id_grupo', $group_id_node); + $icon_url = db_get_value('icon', 'tgrupo', 'id_grupo', $group_id_node); + $icon = html_print_image( + 'images/'.$icon_url, + true, + [ + 'title' => $item['subtitle'], + 'class' => 'main_menu_icon invert_filter', + ] + ); + + $childrens = db_get_all_rows_sql('SELECT id_grupo FROM tgrupo WHERE parent = '.$group_id_node); + $total_agents = db_get_all_rows_sql('SELECT COUNT(id_agente) as total FROM tagente where id_grupo = '.$group_id_node); + + if ($childrens !== false && (int) $total_agents[0]['total'] !== $item['data']['group_stats']['total_agents']) { + $array_group_id = []; + $array_group_id[] = $group_id_node; + foreach ($childrens as $group) { + $array_group_id[] = $group['id_grupo']; + } + + $group_id_node = $array_group_id; + $explode_group_id = implode(',', $group_id_node); + } else { + $explode_group_id = $group_id_node; + } + + $group_events_node = db_get_all_rows_sql( + 'SELECT COUNT(te.id_evento) as count_events, ta.alias + FROM tevento as te + INNER JOIN tagente as ta ON te.id_agente = ta.id_agente WHERE te.id_grupo IN ('.$explode_group_id.') + GROUP BY te.id_agente' + ); + + $group_os_node = db_get_all_rows_sql( + 'SELECT COUNT(os.name) as count_os, os.name as name_os, ta.id_grupo + FROM tconfig_os as os + INNER JOIN tagente as ta ON ta.id_os = os.id_os + WHERE ta.id_grupo IN ('.$explode_group_id.') GROUP by os.name' + ); + + if (is_array($group_events_node) === true) { + $group_events = array_merge($group_events, $group_events_node); + } + + if (is_array($group_os_node) === true) { + $group_os = array_merge($group_os, $group_os_node); + } + } catch (\Exception $e) { + $nd->disconnect(); + } finally { + $nd->disconnect(); + } + } + } else { + $description = db_get_value('description', 'tgrupo', 'id_grupo', $group_id); + $icon_url = db_get_value('icon', 'tgrupo', 'id_grupo', $group_id); + $icon = html_print_image( + 'images/'.$icon_url, + true, + [ + 'title' => $item['subtitle'], + 'class' => 'main_menu_icon invert_filter', + ] + ); + + $childrens = db_get_all_rows_sql('SELECT id_grupo FROM tgrupo WHERE parent = '.$group_id); + $total_agents = db_get_all_rows_sql('SELECT COUNT(id_agente) as total FROM tagente where id_grupo = '.$group_id); + + if ($childrens !== false && (int) $total_agents[0]['total'] !== $item['data']['group_stats']['total_agents']) { + $array_group_id = []; + $array_group_id[] = $group_id; + foreach ($childrens as $group) { + $array_group_id[] = $group['id_grupo']; + } + + $group_id = $array_group_id; + $explode_group_id = implode(',', $group_id); + } else { + $explode_group_id = $group_id; } - $group_id = $array_group_id; - $explode_group_id = implode(',', $group_id); - } else { - $explode_group_id = $group_id; + $group_events = db_get_all_rows_sql( + 'SELECT COUNT(te.id_evento) as count_events, ta.alias + FROM tevento as te + INNER JOIN tagente as ta ON te.id_agente = ta.id_agente WHERE te.id_grupo IN ('.$explode_group_id.') + GROUP BY te.id_agente' + ); + + $group_os = db_get_all_rows_sql( + 'SELECT COUNT(os.name) as count_os, os.name as name_os, ta.id_grupo + FROM tconfig_os as os + INNER JOIN tagente as ta ON ta.id_os = os.id_os + WHERE ta.id_grupo IN ('.$explode_group_id.') GROUP by os.name' + ); } - - $group_events = db_get_all_rows_sql( - 'SELECT COUNT(te.id_evento) as count_events, ta.alias - FROM tevento as te - INNER JOIN tagente as ta ON te.id_agente = ta.id_agente WHERE te.id_grupo IN ('.$explode_group_id.') - GROUP BY te.id_agente' - ); - - $group_os = db_get_all_rows_sql( - 'SELECT COUNT(os.name) as count_os, os.name as name_os, ta.id_grupo - FROM tconfig_os as os - INNER JOIN tagente as ta ON ta.id_os = os.id_os - WHERE ta.id_grupo IN ('.$explode_group_id.') GROUP by os.name' - ); } if ($metaconsole_connected === true) { @@ -2885,8 +2999,10 @@ function reporting_html_group_report($table, $item, $pdf=0) $options = []; $labels = []; foreach ($group_os as $value) { - $data[$value['name_os']] = $value['count_os']; - $labels[] = io_safe_output($value['name_os']); + $data[$value['name_os']] += $value['count_os']; + if (array_search($value['name_os'], $labels) === false) { + $labels[] = io_safe_output($value['name_os']); + } } $options = [ diff --git a/pandora_console/include/functions_servers.php b/pandora_console/include/functions_servers.php index e4d1f655b0..3a4273efa4 100644 --- a/pandora_console/include/functions_servers.php +++ b/pandora_console/include/functions_servers.php @@ -283,6 +283,10 @@ function servers_get_performance($filter=[]) } foreach ($counts as $c) { + if (empty($c['modules']) === true) { + continue; + } + switch ($c['server_type']) { case SERVER_TYPE_DATA: $data['total_local_modules'] = $c['modules']; @@ -292,7 +296,7 @@ function servers_get_performance($filter=[]) case SERVER_TYPE_SNMP: case SERVER_TYPE_ENTERPRISE_ICMP: case SERVER_TYPE_ENTERPRISE_SNMP: - $data['total_network_modules'] = $c['modules']; + $data['total_network_modules'] += $c['modules']; break; case SERVER_TYPE_PLUGIN: diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index a57a9346b7..e077e10c51 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -99,23 +99,27 @@ function ui_print_truncate_text( $forced_title=false ) { global $config; - + $truncate_at_end = false; if (is_string($numChars)) { switch ($numChars) { case 'agent_small': $numChars = $config['agent_size_text_small']; + $truncate_at_end = (bool) $config['truncate_agent_at_end']; break; case 'agent_medium': $numChars = $config['agent_size_text_medium']; + $truncate_at_end = (bool) $config['truncate_agent_at_end']; break; case 'module_small': $numChars = $config['module_size_text_small']; + $truncate_at_end = (bool) $config['truncate_module_at_end']; break; case 'module_medium': $numChars = $config['module_size_text_medium']; + $truncate_at_end = (bool) $config['truncate_module_at_end']; break; case 'description': @@ -147,27 +151,35 @@ function ui_print_truncate_text( // '/2' because [...] is in the middle of the word. $half_length = intval(($numChars - 3) / 2); - // Depending on the strange behavior of mb_strimwidth() itself, - // the 3rd parameter is not to be $numChars but the length of - // original text (just means 'large enough'). - $truncateText2 = mb_strimwidth( - $text_html_decoded, - (mb_strlen($text_html_decoded, 'UTF-8') - $half_length), - mb_strlen($text_html_decoded, 'UTF-8'), - '', - 'UTF-8' - ); + if ($truncate_at_end === true) { + // Recover the html entities to avoid XSS attacks. + $truncateText = ($text_has_entities) ? io_safe_input(substr($text_html_decoded, 0, $numChars)) : substr($text_html_decoded, 0, $numChars); + if (strlen($text_html_decoded) > $numChars) { + $truncateText .= '...'; + } + } else { + // Depending on the strange behavior of mb_strimwidth() itself, + // the 3rd parameter is not to be $numChars but the length of + // original text (just means 'large enough'). + $truncateText2 = mb_strimwidth( + $text_html_decoded, + (mb_strlen($text_html_decoded, 'UTF-8') - $half_length), + mb_strlen($text_html_decoded, 'UTF-8'), + '', + 'UTF-8' + ); - $truncateText = mb_strimwidth( - $text_html_decoded, - 0, - ($numChars - $half_length), - '', - 'UTF-8' - ); + $truncateText = mb_strimwidth( + $text_html_decoded, + 0, + ($numChars - $half_length), + '', + 'UTF-8' + ); - // Recover the html entities to avoid XSS attacks. - $truncateText = ($text_has_entities) ? io_safe_input($truncateText).$suffix.io_safe_input($truncateText2) : $truncateText.$suffix.$truncateText2; + // Recover the html entities to avoid XSS attacks. + $truncateText = ($text_has_entities) ? io_safe_input($truncateText).$suffix.io_safe_input($truncateText2) : $truncateText.$suffix.$truncateText2; + } if ($showTextInTitle) { if ($style === null) { @@ -1634,7 +1646,7 @@ function ui_format_alert_row( $data[$index['actions']] .= ''; $data[$index['actions']] .= ''.html_print_label_input_block( __('Agent'), - ui_print_truncate_text($agente['alias'], 'agent_small', false, true, true, '[…]') + ui_print_truncate_text($agente['alias'], 'agent_medium', false, true, true, '[…]') ).''; $data[$index['actions']] .= ''.html_print_label_input_block( __('Module'), @@ -3913,6 +3925,11 @@ function ui_print_datatable(array $parameters) $parameters['toggle_collapsed'] = true; } + $parameters['startDisabled'] = false; + if (isset($parameters['start_disabled']) && $parameters['start_disabled'] === true) { + $parameters['startDisabled'] = true; + } + $columns_tmp = []; foreach ($parameters['columns'] as $k_column => $v_column) { if (isset($parameters['columns'][$k_column]['text']) === true) { @@ -4126,7 +4143,7 @@ function ui_print_datatable(array $parameters) // Base table. $table = ''; $table .= ''; @@ -4200,13 +4217,19 @@ function ui_print_datatable(array $parameters) $info_msg_arr['message'] = $emptyTable; $info_msg_arr['div_class'] = 'info_box_container invisible_important datatable-msg-info-'.$table_id; - $spinner = '
'; + $info_msg_arr_filter = []; + $info_msg_arr_filter['message'] = __('Please apply a filter to display the data.'); + $info_msg_arr_filter['div_class'] = 'info_box_container invisible_important datatable-msg-info-filter-'.$table_id; + + $spinner = ''; // TODO This widget should take a return: ui_print_info_message($info_msg_arr, '', true) $info_msg = '
'.ui_print_info_message($info_msg_arr).'
'; + $info_msg_filter = '
'.ui_print_info_message($info_msg_arr_filter, true).'
'; + $err_msg = '
'; - $output = $info_msg.$err_msg.$filter.$extra.$spinner.$table.$js; + $output = $info_msg.$info_msg_filter.$err_msg.$filter.$extra.$spinner.$table.$js; if (is_ajax() === false) { ui_require_css_file('datatables.min', 'include/styles/js/'); ui_require_css_file('tables'); diff --git a/pandora_console/include/javascript/datatablesFunction.js b/pandora_console/include/javascript/datatablesFunction.js index 41f0bbf1e2..6c9dc6a3f4 100644 --- a/pandora_console/include/javascript/datatablesFunction.js +++ b/pandora_console/include/javascript/datatablesFunction.js @@ -126,6 +126,11 @@ if (typeof dt.ajax_data !== "undefined") { ajaxData = dt.ajax_data; } +var startDisabled = false; +if (dt.startDisabled === true) { + startDisabled = true; +} + $(document).ready(function() { function checkPages() { if (dt_table.page.info().pages > 1) { @@ -335,7 +340,25 @@ $(document).ready(function() { } $.extend(settings_datatable, ajaxOrData); - var dt_table = $(`#${dt.table_id}`).DataTable(settings_datatable); + + var dt_table; + + if (startDisabled === true) { + $(`.datatable-msg-info-filter-${dt.id}`) + .removeClass("invisible_important") + .show(); + + $(`div#${dt.id}-spinner`).hide(); + $(`#${dt.table_id}`).hide(); + + $(`#button-form_${dt.table_id}_search_bt`).click(function() { + $(`.datatable-msg-info-filter-${dt.id}`).hide(); + $(`#${dt.table_id}`).show(); + dt_table = $(`#${dt.table_id}`).DataTable(settings_datatable); + }); + } else { + dt_table = $(`#${dt.table_id}`).DataTable(settings_datatable); + } $(`#button-${dt.form_id}_search_bt`).click(function() { dt_table.draw().page(0); diff --git a/pandora_console/include/lib/Group.php b/pandora_console/include/lib/Group.php index d9b42271f3..630d91d1c2 100644 --- a/pandora_console/include/lib/Group.php +++ b/pandora_console/include/lib/Group.php @@ -663,11 +663,14 @@ class Group extends Entity ultimo_contacto_remoto, fired_count FROM tagente t + LEFT JOIN tagent_secondary_group g ON g.id_agent = t.id_agente WHERE disabled = 0 AND total_count <> notinit_count AND - id_grupo IN (%s) + (id_grupo IN (%s) OR id_group IN (%s)) + %s %s', implode(',', $id_groups), + implode(',', $id_groups), $order, $pagination ); @@ -686,11 +689,13 @@ class Group extends Entity ultimo_contacto_remoto, fired_count FROM tagente t + LEFT JOIN tagent_secondary_group g ON g.id_agent = t.id_agente WHERE disabled = 0 AND total_count <> notinit_count AND - id_grupo IN (%s) + (id_grupo IN (%s) OR id_group IN (%s)) %s', implode(',', $id_groups), + implode(',', $id_groups), $order, ); diff --git a/pandora_console/include/styles/js/jquery-ui_custom.css b/pandora_console/include/styles/js/jquery-ui_custom.css index 947c858025..9ee92c54d3 100644 --- a/pandora_console/include/styles/js/jquery-ui_custom.css +++ b/pandora_console/include/styles/js/jquery-ui_custom.css @@ -4,7 +4,6 @@ .ui-dialog .ui-corner-all .ui-widget { border-radius: 0; - margin: 0; padding: 0; border: none; } @@ -217,7 +216,7 @@ a.ui-state-default > span:hover { color: #000; } .ui-widget-header { - height: 20px !important; + height: fit-content !important; } .ui-dialog .ui-widget-header { margin: 3px 3px 0px 3px; diff --git a/pandora_console/install.php b/pandora_console/install.php index dc3e1e582d..1b307ccdee 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -131,7 +131,7 @@
'alerts_status_datatable', 'class' => 'info_table', - 'style' => 'width: 99%;', + 'style' => 'width: 100%;', 'columns' => $columns, 'column_names' => $column_names, 'no_sortable_columns' => $no_sortable_columns, @@ -439,6 +439,7 @@ if ($agent_view_page === true) { $strict_user ), ], + 'start_disabled' => true, ] ); } diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index d54d70a799..046fbc5222 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -154,7 +154,7 @@ if ($ag_freestring !== '' || $moduletype !== '' || $datatype !== '' // The execution has not been done manually. $userRequest = (bool) get_parameter('uptbutton'); -if ($userRequest === false) { +if ($userRequest === true) { $autosearch = true; } @@ -2354,7 +2354,7 @@ if (empty($result) === false) { $tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', false); } } else { - ui_print_info_message(['no_close' => true, 'message' => __('Sorry no search parameters')]); + ui_print_info_message(['no_close' => true, 'message' => __('Please apply a filter to display the data')]); } if (is_metaconsole() !== true) { diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index b764dc23bc..bb6a75d275 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -509,10 +509,22 @@ if (is_ajax() === true) { $tmp->evento = str_replace('"', '', io_safe_output($tmp->evento)); $event_text = $tmp->evento; - if (strlen($tmp->evento) >= 40) { - $tmp->evento = ui_print_truncate_text( - $tmp->evento, - 40, + + $tmp->evento = ui_print_truncate_text( + $tmp->evento, + $config['item_title_size_text'], + false, + true, + false, + '…', + true, + true, + ); + + if (empty($tmp->module_name) === false) { + $tmp->module_name = ui_print_truncate_text( + $tmp->module_name, + 'module_medium', false, true, false, @@ -523,19 +535,16 @@ if (is_ajax() === true) { } if (empty($tmp->module_name) === false) { - $tmp->module_name = io_safe_output($tmp->module_name); - if (strlen($tmp->module_name) >= 20) { - $tmp->module_name = ui_print_truncate_text( - $tmp->module_name, - 20, - false, - true, - false, - '…', - true, - true, - ); - } + $tmp->module_name = ui_print_truncate_text( + $tmp->module_name, + 'module_medium', + false, + true, + false, + '…', + true, + true, + ); } if (empty($tmp->comments) === false) { @@ -564,19 +573,16 @@ if (is_ajax() === true) { } } - $tmp->agent_name = io_safe_output($tmp->agent_name); - if (strlen($tmp->agent_name) >= 10) { - $tmp->agent_name = ui_print_truncate_text( - $tmp->agent_name, - 10, - false, - true, - false, - '…', - true, - true, - ); - } + $tmp->agent_name = ui_print_truncate_text( + $tmp->agent_name, + 'agent_medium', + false, + true, + false, + '…', + true, + true, + ); $tmp->id_extra = io_safe_output($tmp->id_extra); if (strlen($tmp->id_extra) >= 10) { @@ -944,10 +950,11 @@ if (is_ajax() === true) { // Module name. $tmp->id_agentmodule = $tmp->module_name; - if (strlen($tmp->id_agentmodule) >= 10) { + /* + if (strlen($tmp->id_agentmodule) >= 10) { $tmp->id_agentmodule = ui_print_truncate_text( $tmp->id_agentmodule, - 10, + 'module_small', false, true, false, @@ -955,7 +962,7 @@ if (is_ajax() === true) { true, true, ); - } + }*/ // Options. // Show more. diff --git a/pandora_console/operation/reporting/reporting_viewer.php b/pandora_console/operation/reporting/reporting_viewer.php index 78f9126122..f84ecdb699 100755 --- a/pandora_console/operation/reporting/reporting_viewer.php +++ b/pandora_console/operation/reporting/reporting_viewer.php @@ -60,12 +60,29 @@ $datetime_end = strtotime($date_end.' '.$time_end); $custom_date = get_parameter('custom_date', 0); $date = get_parameter('date', SECONDS_1DAY); $date_text = get_parameter('date_text', SECONDS_1DAY); -if ($custom_date === '1') { - if ($datetime_init >= $datetime_end) { - $datetime_init = $date_init_less; - } - $period = ($datetime_end - $datetime_init); +$custom_date_end = ''; +$filter_type = ''; +$custom_period = false; +if ($custom_date === '1') { + if ($date === 'chose_range') { + $date_init = get_parameter('date_init', 0); + $date_init = explode(' ', $date_init); + $date_init = $date_init[0]; + $date_init .= ' '.get_parameter('time_init', '00:00:00'); + $custom_date_end = get_parameter('date_end', 0); + $custom_date_end .= ' '.get_parameter('time_end', '00:00:00'); + $date_end = date('Y/m/d H:i:s'); + $period = (strtotime($date_end) - strtotime($date_init)); + $custom_period = (strtotime($custom_date_end) - strtotime($date_init)); + $filter_type = 'chose_range'; + } else { + if ($datetime_init >= $datetime_end) { + $datetime_init = $date_init_less; + } + + $period = ($datetime_end - $datetime_init); + } } else if ($custom_date === '2') { $date_units = get_parameter('date_units'); $date_end = date('Y/m/d H:i:s'); @@ -73,16 +90,18 @@ if ($custom_date === '1') { $period = (strtotime($date_end) - strtotime($date_start)); } else if (in_array($date, ['this_week', 'this_month', 'past_week', 'past_month'])) { if ($date === 'this_week') { - $monday = date('Y/m/d', strtotime('last monday')); - - $sunday = date('Y/m/d', strtotime($monday.' +6 days')); - $period = (strtotime($sunday) - strtotime($monday)); - $date_init = $monday; - $date_end = $sunday; + // Last monday. + $date_init = date('Y/m/d H:i:s', strtotime('last monday')); + // $date_end = date('Y/m/d H:i:s', strtotime($date_init.' +6 days')); + $date_end = date('Y/m/d H:i:s'); + $period = (strtotime($date_end) - strtotime($date_init)); + $filter_type = 'this_week'; } else if ($date === 'this_month') { - $date_end = date('Y/m/d', strtotime('last day of this month')); + // $date_end = date('Y/m/d', strtotime('last day of this month')); + $date_end = date('Y/m/d H:i:s'); $first_of_month = date('Y/m/d', strtotime('first day of this month')); $period = (strtotime($date_end) - strtotime($first_of_month)); + $filter_type = 'this_month'; } else if ($date === 'past_month') { $date_end = date('Y/m/d', strtotime('last day of previous month')); $first_of_month = date('Y/m/d', strtotime('first day of previous month')); @@ -197,7 +216,7 @@ if (check_acl_restricted_all($config['id_user'], $report_group, 'RW')) { $options['view'] = [ 'active' => true, 'text' => ''.html_print_image( - 'images/eye.png', + 'images/see-details@svg.svg', true, [ 'title' => __('View report'), @@ -265,10 +284,8 @@ ui_print_standard_header( // ------------------------ INIT FORM ----------------------------------- $table2 = new stdClass(); $table2->id = 'controls_table'; -$table2->size[2] = '50%'; -$table2->size[3] = '50%'; -$table2->style[0] = 'text-align:center'; -$table2->style[1] = 'text-align:center'; +$table2->size[2] = '20%'; +$table2->style[3] = 'position:absolute; left: auto'; $table2->styleTable = 'border:none'; if (defined('METACONSOLE')) { @@ -353,13 +370,20 @@ $report = reporting_make_reporting_data( $date_end, $time, $period, - 'dinamic' + 'dinamic', + null, + null, + false, + false, + $filter_type, + $custom_date_end, + $custom_period ); for ($i = 0; $i < count($report['contents']); $i++) { $report['contents'][$i]['description'] = str_replace(' ', '
', $report['contents'][$i]['description']); } -reporting_html_print_report($report, false, $config['custom_report_info']); +reporting_html_print_report($report, false, $config['custom_report_info'], $custom_date_end, $custom_period); echo '
'; diff --git a/pandora_console/operation/search_agents.getdata.php b/pandora_console/operation/search_agents.getdata.php index ea63506fa4..bdeea391a1 100644 --- a/pandora_console/operation/search_agents.getdata.php +++ b/pandora_console/operation/search_agents.getdata.php @@ -15,6 +15,7 @@ global $config; enterprise_include_once('include/functions_policies.php'); require_once $config['homedir'].'/include/functions_users.php'; +require_once $config['homedir'].'/include/functions_reporting.php'; $searchAgents = get_parameter('search_agents', 0); $stringSearchSQL = get_parameter('stringSearchSQL'); diff --git a/pandora_console/operation/snmpconsole/snmp_browser.php b/pandora_console/operation/snmpconsole/snmp_browser.php index 04a44d2fa1..0fa30148ed 100644 --- a/pandora_console/operation/snmpconsole/snmp_browser.php +++ b/pandora_console/operation/snmpconsole/snmp_browser.php @@ -73,9 +73,10 @@ if ($config['pure']) { } // Control from managent polices. -$type = get_parameter('type', false); +$type = get_parameter('moduletype', false); $page = get_parameter('page', false); -if (empty($page) && $type !== 'networkserver') { + +if (empty($page) && $type !== 'networkserver' && $moduletype !== 2) { // Header. ui_print_standard_header( __('SNMP Browser'), diff --git a/pandora_console/operation/users/user_edit_notifications.php b/pandora_console/operation/users/user_edit_notifications.php index 309439dfe7..77ef1caebe 100644 --- a/pandora_console/operation/users/user_edit_notifications.php +++ b/pandora_console/operation/users/user_edit_notifications.php @@ -36,33 +36,11 @@ require_once $config['homedir'].'/include/functions_notifications.php'; $headerTitle = __('User notifications'); require $config['homedir'].'/operation/users/user_edit_header.php'; -if (get_parameter('change_label', 0)) { - $label = get_parameter('label', ''); - $source = get_parameter('source', 0); - $user = get_parameter('user', ''); - $value = get_parameter('value', 0) ? 1 : 0; - - // Update the label value. - ob_clean(); - echo json_encode( - [ - 'result' => notifications_set_user_label_status( - $source, - $user, - $label, - $value - ), - ] - ); - return; -} - - echo '
-
'.__('Enable').'
-
'.__('Also receive an email').'
+
'.__('Console notifications').'
+
'.__('E-mail notifications').'
'; $sources = notifications_get_all_sources(); @@ -109,13 +87,12 @@ html_print_input_hidden('id_user', $id); event.preventDefault(); var check = document.getElementById(event.target.id); if (check === null) return; - var match = /notifications-user-([0-9]+)-label-(.*)/ .exec(event.target.id); - jQuery.post ("ajax.php", { - "page" : "operation/users/user_edit_notifications", + //"page" : "operation/users/user_edit_notifications", + "page" : 'include/ajax/notifications.ajax', "change_label" : 1, "label" : match[2], "source" : match[1], @@ -148,4 +125,5 @@ html_print_input_hidden('id_user', $id); ); } }()); + diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 3823d30ad6..049372b3b2 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.773.3 -%define release 230906 +%define release 230915 # 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 308686eff8..1f6c2c7ccc 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.773.3 -%define release 230906 +%define release 230915 # 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 a0022361c6..1bc3dd8ecc 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.773.3 -%define release 230906 +%define release 230915 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_console/vendor/composer/platform_check.php b/pandora_console/vendor/composer/platform_check.php index b168ddd5d9..21111b57c6 100644 --- a/pandora_console/vendor/composer/platform_check.php +++ b/pandora_console/vendor/composer/platform_check.php @@ -16,7 +16,32 @@ if ($issues) { if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + require_once __DIR__.'/../../include/functions_ui.php'; + + $url = str_replace('/var/www/html/', '', __DIR__); + $url = str_replace('/vendor/composer', '', $url); + + echo ''; + ?> + + + + '; + echo '
'; } } trigger_error( diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index df72528214..eebd8988c4 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.773.3-230906 +Version: 7.0NG.773.3-230915 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 7c68242ec8..30b88f96e9 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.773.3-230906" +pandora_version="7.0NG.773.3-230915" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index d830591889..c9fbf2e249 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.773.3"; -my $pandora_build = "230906"; +my $pandora_build = "230915"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 278c5814f6..020476c03f 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -5692,7 +5692,7 @@ sub pandora_server_statistics ($$) { $server->{"modules_total"} = get_db_value ($dbh, "SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) FROM tagente, tagent_module_inventory WHERE tagente.disabled=0 AND tagent_module_inventory.id_agente = tagente.id_agente"); # Calculate lag - $lag_row = get_db_single_row ($dbh, "SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) AS module_lag, AVG(UNIX_TIMESTAMP() - utimestamp - tagent_module_inventory.interval) AS lag + $lag_row = get_db_single_row ($dbh, "SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) AS `module_lag`, AVG(UNIX_TIMESTAMP() - utimestamp - tagent_module_inventory.interval) AS `lag` FROM tagente, tagent_module_inventory WHERE utimestamp > 0 AND tagent_module_inventory.id_agente = tagente.id_agente @@ -5741,8 +5741,8 @@ sub pandora_server_statistics ($$) { if ($server->{"server_type"} != DATASERVER){ $lag_row = get_db_single_row ( $dbh, - "SELECT COUNT(tam.id_agente_modulo) AS module_lag, - AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS lag + "SELECT COUNT(tam.id_agente_modulo) AS `module_lag`, + AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS `lag` FROM ( SELECT tagente_estado.last_execution_try, tagente_estado.current_interval, tagente_estado.id_agente_modulo FROM tagente_estado @@ -5767,8 +5767,8 @@ sub pandora_server_statistics ($$) { else { $lag_row = get_db_single_row ( $dbh, - "SELECT COUNT(tam.id_agente_modulo) AS module_lag, - AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS lag + "SELECT COUNT(tam.id_agente_modulo) AS `module_lag`, + AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS `lag` FROM ( SELECT tagente_estado.last_execution_try, tagente_estado.current_interval, tagente_estado.id_agente_modulo FROM tagente_estado diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 0aa20fcffb..101d0aea0f 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.773.3"; -my $pandora_build = "230906"; +my $pandora_build = "230915"; 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 38e15b7842..5ad6e7fc88 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_server %define version 7.0NG.773.3 -%define release 230906 +%define release 230915 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 722d9d2f43..efe6d75e49 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.773.3 -%define release 230906 +%define release 230915 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 7b3751cb8b..b61a75df78 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.773.3" -PI_BUILD="230906" +PI_BUILD="230915" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/load/pandora_xml_stress.agents b/pandora_server/util/load/pandora_xml_stress.agents index da718018e0..0b4a54a894 100644 --- a/pandora_server/util/load/pandora_xml_stress.agents +++ b/pandora_server/util/load/pandora_xml_stress.agents @@ -147,154 +147,4 @@ be67e5298c830c0bb582556f 63f5d1404aea4377779edf35 b03831cce718125cb9612c07 5465b26fd45d86b059066cc2 -5351de84d2fd638b138ba27b -6c63000157aed37fa8c0c022 -8d3c18c7fbe518694c6bdb22 -615ec092b6f63bb14a2bb42e -61de25cf8e12926c28aeffdc -2b96bc1c8f6f81a5437b61bf -ba1f4fcf3954e0efe5d68c83 -ee5bd3e1a937b90562677f1d -0cf18ae18b0c680d00cb4d2e -abf72b0d66f90bd6e67c43c6 -f263d033bb07e0b8cd405224 -418ddf02720649b40db2dd67 -01d1a735aa980326d385ea65 -0cc3860bb0a3fd5822b25ea4 -b0b89dbebfab05fafd6cf9dd -2fcbb999444db5c0c77c2ec2 -f49a97b3531b8ab8d487c7a7 -ffb66d5003620e2fa47ef8ea -04da742ab6c99b5c44f9f0cc -dc310a9d42d7c367671ffbf9 -b0f5c4ee8d327449ef2103e6 -5bd2ce604ed7c820169f0ac2 -57f874a6e41baa5a1196b15f -b43142736205ad1011f4a5a6 -50cf8523e5090251516eecb0 -ebad61d47be209696f9d41aa -66bc5976a98266560d1867ff -3c37fc452e9ad36cd7adcb1a -4ac8c3db63a69ce883f3fcf5 -6c89e2bb90b9ab95f4adde3c -917de5ece0a5ef663a8f44e7 -b50eba76cf29aca3cf696d7e -74264c913ac1e141db78708a -2b6c93011f62cffb5c085886 -700617c377952010272b9522 -dac10c8ddf7c45e55d8028af -053328a6ff4f2773eebe76fe -2d7390260285c272688ae1e8 -fa30c9ee6fb1e2f00d7ccb77 -0ca6db378a05246f30c8b820 -9ad6f959de166cc1475040ea -23b4702f4dfb350085e77482 -4198a8ab80780c5d9b0d82d5 -baebd530dfc47ac77ea42d2a -636d2ab4e018b5542e429f5e -40ae44193af360eea68b6f0b -dd47b39e494a62a4f5b6bef8 -240339c9dcd159595c1edbf3 -0f11840efe364ca6bbb17f43 -8522e203fb4b53e2bd6d6f82 -f134d9b501fa40b17993beee -d0483306f2f972aacfb4fcea -926ee4e0a80455cfee517f8b -c188a327bc66df4878cb3e8b -c874083c1d932bb4ade6d028 -be2271d8da327f97e05c1c60 -9ca7451d3f261682ec717547 -9eb46e2a5fd072c5267d7432 -41e8f3f7733f87e16b773bad -f642220cd19f84154e4dd972 -fe3d9f6433883332b464b7ca -3e9648ccf60b1fa712ea8590 -b7da7292e9418889bc957bd7 -fb4a392d386eca19eec9215e -34188e4a6590877b2dbb67b0 -e233cb364659dea13dee1fd8 -757b8330465df34879414b7d -5e0f80102fee69d0742934b2 -d72124afc78e9b3f91550497 -21c77bfe67c6e99f73323f42 -afa8ce345db6300882858f93 -886cc8b32ed80f4c69edb990 -64ea275ce73ef4070cefca19 -c676f1ffe5bdce4e1d3643ed -baca61ab59568605e3ec8899 -1610892c53a071ed02d20c75 -3321fb7111d74e532932d262 -29583747ac9fbf0bf21c1574 -f51210b47a6e847dcfb52f94 -63c95735ba96c65d2d45b23d -679c4e3acb15ebec6ecc7529 -42da0760b02d50c6587a8c31 -e42de775dcfcc3c950c1cff5 -ae5791cf265badebd39c78d9 -f66c123309525eeb81b47e92 -7cddc2b9ed6b4df83c72fcbe -e69cc74632fdaa06f76f708a -7cfd19c2eeaef2c0537332be -d27cdcea69f4e49fbae06f4d -bdfaa2ec52319f0e6533e826 -d59452cdfce11e21682a791f -cbb74f2d35d54557abdbc2da -369a4e6f128475bc9f87ef42 -90bf992a98d0b768cbc50520 -1fea663421dae7b418b9b15f -f9fc5505565c43cebc1545f9 -d02a8f77fbb2b7f384a99949 -279ff35e17c7f6b6a043fde7 -9cf7725d3a97d9aa9e529ce6 -1f465b328b349502c0953b2d -283fad60fa48ea2075a0e516 -ef5d9e841a02665c54d8fa7f -b6023425cb4a1503726b3135 -7fb8a1a734c24cc22a5c75eb -da38d78e83c9288e4cd60cca -2a928a6498ae8e0b29675c25 -d2194ab5b0e48c2c1f213860 -53acafcd86a61ce55688ebef -65608eeebc7d9fe2912635ed -fafb0273e3b04deb1edb2628 -baf07d1f28416da065b6771f -c2ee8e58209102fdd0bb341c -f8e92e00670f65c29c4617c9 -a83661705134029ae344176d -fc02c24e172d12a29b17eede -2632f143ffe3f64e63e4ba32 -847120de4b72f59263d160f1 -5be36ff5b668eb93823974b2 -cdd8fe5081225519b5fc28af -53569cbaedb9265839290a6c -decca89ea0e8944fd93fcd24 -4b10511d840b7f5129ed6190 -5c4a1904de5f90f4d5dd749a -49c47514c3308df82fcd6b79 -15af3e182c00000eea12f8e5 -a9645c4a43ad211d9ae9a406 -dcffa4e5eee8f966b1edcdaf -75b25f796f1e392f45c3a737 -0ad5f0b96946ebcabd0457e9 -2f9128177cab74e0bad61189 -49ed14b81e0a166ccf335b4a -dfe100788326c45dfb84579c -2616f38caef9decae47e5023 -99b2d0eb14ac19d1cfedd86e -fb1d4c42ea70fad330b5c5ee -b6c560867faa3b41b1f5d4fa -1167fb22e86098ef684eb702 -a2e2c2ee8ec87d4e5d59eb22 -b228beac094e16a0fa3cb528 -ea0de9aad68deed0a4df3e71 -e50cb420497d928ef9827800 -3bb39890ca4a6da941e01782 -73391f2914465c3f2335e24a -f8b2f512cc0cbc024e2cd377 -4f816b0d36c934b44dbd5bc0 -817edf1e2637fef229752a5f -4466f97959df7247f7410fbe -cc85c727080e9d6eb75ef513 -7e27f012167ed8bedc4bd635 -98a445ff41a81a0a752aff25 -3b339e213dd613c4efd878c1 \ No newline at end of file +5351de84d2fd638b138ba27b \ No newline at end of file diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 08b79de11a..6434561772 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.773.3 Build 230906"; +my $version = "7.0NG.773.3 Build 230915"; # Pandora server configuration my %conf; @@ -359,7 +359,12 @@ sub pandora_purgedb ($$$) { log_message ('!', "Cannot execute " . $conf->{'_netflow_nfexpire'} . ", skipping."); } else { - `yes 2>/dev/null | $conf->{'_netflow_nfexpire'} -r "$conf->{'_netflow_path'}" -t $conf->{'_netflow_max_lifetime'}d`; + # Update stats file with max lifetime. + `yes 2>/dev/null | $conf->{'_netflow_nfexpire'} -u "$conf->{'_netflow_path'}" -t $conf->{'_netflow_max_lifetime'}d -w 100`; + # Rescan directory. + `yes 2>/dev/null | $conf->{'_netflow_nfexpire'} -r "$conf->{'_netflow_path'}"`; + # Expire files + `yes 2>/dev/null | $conf->{'_netflow_nfexpire'} -e "$conf->{'_netflow_path'}"`; } } else { diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index a30ff2a4d6..95493bd13e 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.773.3 Build 230906"; +my $version = "7.0NG.773.3 Build 230915"; # save program name for logging my $progname = basename($0);