Merge branch 'ent-9662-Restyling-fuentes-colores-botones' of brutus.artica.es:artica/pandorafms into ent-9662-Restyling-fuentes-colores-botones

This commit is contained in:
Jonathan 2023-03-01 08:18:50 +01:00
commit 472b655ee6
54 changed files with 1356 additions and 751 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.769-230228 Version: 7.0NG.769-230301
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.769-230228" pandora_version="7.0NG.769-230301"
echo "Test if you has the tools for to make the packages." echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -1023,7 +1023,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.769'; use constant AGENT_VERSION => '7.0NG.769';
use constant AGENT_BUILD => '230228'; use constant AGENT_BUILD => '230301';
# Agent log default file size maximum and instances # Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000; use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_agent_linux %define name pandorafms_agent_linux
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_agent_linux %define name pandorafms_agent_linux
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.769" PI_VERSION="7.0NG.769"
PI_BUILD="230228" PI_BUILD="230301"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{230228} {230301}
ViewReadme ViewReadme
{Yes} {Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils; using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1 #define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.769 Build 230228") #define PANDORA_VERSION ("7.0NG.769 Build 230301")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST" VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.769(Build 230228))" VALUE "ProductVersion", "(7.0NG.769(Build 230301))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.769-230228 Version: 7.0NG.769-230301
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.769-230228" pandora_version="7.0NG.769-230301"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -60,4 +60,7 @@ UPDATE `ttipo_modulo` SET `icon` = 'remote-execution-incremental-data@svg.svg' W
UPDATE `ttipo_modulo` SET `icon` = 'server-web@svg.svg' WHERE `id_tipo` = 38; UPDATE `ttipo_modulo` SET `icon` = 'server-web@svg.svg' WHERE `id_tipo` = 38;
UPDATE `ttipo_modulo` SET `icon` = 'keepalive@svg.svg' WHERE `id_tipo` = 100; UPDATE `ttipo_modulo` SET `icon` = 'keepalive@svg.svg' WHERE `id_tipo` = 100;
CREATE INDEX agente_modulo_estado ON tevento (estado, id_agentmodule);
CREATE INDEX idx_disabled ON talert_template_modules (disabled);
COMMIT; COMMIT;

View File

@ -0,0 +1,5 @@
START TRANSACTION;
INSERT INTO `treport_custom_sql` (`name`, `sql`) VALUES ('Agent safe mode not enable', 'select alias from tagente where safe_mode_module = 0');
COMMIT;

View File

@ -269,26 +269,13 @@ $table->cellspacing = 0;
$table->cellpadding = 0; $table->cellpadding = 0;
$table->size[0] = '50%'; $table->size[0] = '50%';
$table->size[1] = '50%'; $table->size[1] = '50%';
$table->class = 'databox filters events-filters-create'; $table->class = 'databox filters events-filters-create pdd_10px';
$table->style[0] = 'vertical-align: top;'; $table->style[0] = 'vertical-align: top;';
$table->rowspan = []; $table->rowspan = [];
$table->rowspan[3][0] = 2; $table->rowspan[3][0] = 2;
$table->valign[1] = 'top'; $table->valign[1] = 'top';
if (is_metaconsole()) {
if ($id) {
$table->head[0] = __('Update Filter');
} else {
$table->head[0] = __('Create Filter');
}
$table->head_colspan[0] = 4;
$table->headstyle[0] = 'text-align: center';
$table->style[0] = '';
$table->valign[1] = '';
}
$table->data = []; $table->data = [];
$table->data[0][0] = html_print_label_input_block( $table->data[0][0] = html_print_label_input_block(

View File

@ -82,36 +82,32 @@ if ($event_response_id > 0) {
} }
$table = new stdClass(); $table = new stdClass();
$table->styleTable = 'margin: 10px 10px 0'; $table->styleTable = 'margin: 10px 10px 10px';
$table->class = 'databox filters'; $table->class = 'databox filters';
$table->colspan[4][1] = 3; $table->cellspacing = 0;
$table->cellpadding = 0;
if (is_metaconsole()) { $table->size[0] = '50%';
$table->head[0] = __('Edit event responses'); $table->size[1] = '50%';
$table->head_colspan[0] = 5;
$table->headstyle[0] = 'text-align: center';
}
$table->size = [];
$table->style[0] = 'font-weight: bold;';
$table->style[2] = 'font-weight: bold;';
$table->data = []; $table->data = [];
$data = []; $data = [];
$data[0] = __('Name');
$data[1] = html_print_input_text( $data[0] = html_print_label_input_block(
'name', __('Name'),
$event_response['name'], '<div class="w100p margin-top-10">'.html_print_input_text(
'', 'name',
50, $event_response['name'],
255, '',
true, false,
false, 255,
true true,
false,
true,
'',
'w100p'
).html_print_input_hidden('id_response', $event_response['id'], true).'</div>'
); );
$data[1] .= html_print_input_hidden('id_response', $event_response['id'], true);
$return_all_group = false; $return_all_group = false;
@ -119,32 +115,64 @@ if (users_can_manage_group_all('PM') === true) {
$return_all_group = true; $return_all_group = true;
} }
$data[2] = __('Group');
$data[3] = html_print_select_groups(false, 'PM', $return_all_group, 'id_group', $event_response['id_group'], '', '', '', true); $data[1] = html_print_label_input_block(
__('Group'),
'<div class="w100p margin-top-10">'.html_print_select_groups(
false,
'PM',
$return_all_group,
'id_group',
$event_response['id_group'],
'',
'',
'',
true,
false,
false,
'w100p'
).'</div>'
);
$table->data[0] = $data; $table->data[0] = $data;
$data = []; $data = [];
$table->colspan[1][1] = 3; $table->colspan[1][0] = 2;
$data[0] = __('Description'); $data[0] = html_print_label_input_block(
$data[1] = html_print_textarea( __('Description'),
'description', '<div class="w100p margin-top-10">'.html_print_textarea(
5, 'description',
40, 5,
$event_response['description'], 1,
'class="'.$class_description.'"', $event_response['description'],
true 'class="'.$class_description.' w100p"',
true,
'w100p'
).'</div>'
); );
$table->data[1] = $data; $table->data[1] = $data;
$data = []; $data = [];
$data[0] = __('Location').ui_print_help_tip(__('For Command type Modal Window mode is enforced'), true);
$locations = [ $locations = [
__('Modal window'), __('Modal window'),
__('New window'), __('New window'),
]; ];
$data[1] = html_print_select($locations, 'new_window', $event_response['new_window'], '', '', '', true); $data[0] = html_print_label_input_block(
__('Location').ui_print_help_tip(__('For Command type Modal Window mode is enforced'), true),
'<div class="w100p margin-top-10">'.html_print_select(
$locations,
'new_window',
$event_response['new_window'],
'',
'',
'',
true,
false,
true,
'w100p'
).'</div>'
);
$data[2] = '<span class="size">'.__('Size').'</span>'; $data[1] = '<span class="size">'.__('Size').'</span>';
if ($event_response['modal_width'] == 0) { if ($event_response['modal_width'] == 0) {
$event_response['modal_width'] = 620; $event_response['modal_width'] = 620;
} }
@ -153,40 +181,88 @@ if ($event_response['modal_height'] == 0) {
$event_response['modal_height'] = 500; $event_response['modal_height'] = 500;
} }
$data[3] = '<span class="size">'.__('Width').' (px) </span>'; $data[1] = '<div class="flex flex-space-around">';
$data[3] .= '<span class="size">'.html_print_input_text('modal_width', $event_response['modal_width'], '', 4, 5, true).'</span>'; $data[1] .= html_print_label_input_block(
$data[3] .= '<span class="size">'.__('Height').' (px) </span>'; __('Width').' (px) ',
$data[3] .= '<span class="size">'.html_print_input_text('modal_height', $event_response['modal_height'], '', 4, 5, true).'</span>'; '<div class="w100p margin-top-10">'.html_print_input_text(
'modal_width',
$event_response['modal_width'],
'',
4,
5,
true
).'</div>',
['div_class' => 'mgn_tp_0_imp']
);
$data[1] .= html_print_label_input_block(
__('Height').' (px) ',
'<div class="w100p margin-top-10">'.html_print_input_text(
'modal_height',
$event_response['modal_height'],
'',
4,
5,
true
).'</div>'
);
$data[1] .= '</div>';
$table->data[2] = $data; $table->data[2] = $data;
$data = []; $data = [];
$data[0] = __('Parameters'); $data[0] = html_print_label_input_block(
$data[1] = html_print_input_text( __('Parameters'),
'params', '<div class="w100p margin-top-10">'.html_print_input_text(
$event_response['params'], 'params',
'', $event_response['params'],
50, '',
255, 50,
true 255,
true,
false,
false,
'',
'w100p'
).'</div>'
); );
$types = [ $types = [
'url' => __('URL'), 'url' => __('URL'),
'command' => __('Command'), 'command' => __('Command'),
]; ];
$data[2] = __('Type');
$data[3] = html_print_select($types, 'type', $event_response['type'], '', '', '', true); $data[1] = html_print_label_input_block(
__('Type'),
'<div class="w100p margin-top-10">'.html_print_select(
$types,
'type',
$event_response['type'],
'',
'',
'',
true,
false,
true,
'w100p',
false,
'width: 100%'
).'</div>'
);
$table->data[3] = $data; $table->data[3] = $data;
$data = []; $data = [];
$data[0] = '<span id="command_label" class="labels">'.__('Command').'</span><span id="url_label" class="labels invisible">'.__('URL').'</span>'.ui_print_help_icon('response_macros', true); $table->colspan[4][0] = 2;
$data[1] = html_print_textarea( $data[0] = html_print_label_input_block(
'target', __('Command').'<span id="url_label" class="labels invisible">'.__('URL').'</span>'.ui_print_help_icon('response_macros', true),
3, '<div class="w100p margin-top-10">'.html_print_textarea(
1, 'target',
$event_response['target'], 3,
'class="mh_initial w100p"', 1,
true $event_response['target'],
'class="mh_initial w100p"',
true
).'</div>'
); );
$table->data[4] = $data;
$servers_to_exec = []; $servers_to_exec = [];
$servers_to_exec[0] = __('Local console'); $servers_to_exec[0] = __('Local console');
@ -206,24 +282,43 @@ if (enterprise_installed()) {
} }
} }
$data[2] = '<div id="server_to_exec_label" class="labels invisible">'.__('Server to execute command').'</div>';
$data[3] = '<div id="server_to_exec_value" class="invisible" >'.html_print_select($servers_to_exec, 'server_to_exec', $event_response['server_to_exec'], '', '', '', true).'</div>';
$table->data[4] = $data;
$data = []; $data = [];
$data[0] = '<div id="command_timeout_label" class="labels invisible">'.__('Command timeout (s)'); $data[0] = html_print_label_input_block(
$data[1] = '<div id="command_timeout_value" class="invisible">'.html_print_input_text('command_timeout', $event_response['command_timeout'], '', 4, 5, true); '<div id="server_to_exec_label" class="labels invisible">'.__('Server to execute command').'</div>',
'<div id="server_to_exec_value" class="invisible" >'.html_print_select(
$servers_to_exec,
'server_to_exec',
$event_response['server_to_exec'],
'',
'',
'',
true
).'</div>'
);
$data[1] = html_print_label_input_block(
'<div id="command_timeout_label" class="labels invisible">'.__('Command timeout (s)'),
'<div id="command_timeout_value" class="invisible">'.html_print_input_text(
'command_timeout',
$event_response['command_timeout'],
'',
4,
5,
true
)
);
$table->data[5] = $data; $table->data[5] = $data;
$data = []; $data = [];
$data[0] = __('Display command').ui_print_help_tip(__('If enabled the command will be displayed to any user that can execute this event response'), true); $data[0] = html_print_label_input_block(
$data[1] = html_print_checkbox_switch( __('Display command').ui_print_help_tip(__('If enabled the command will be displayed to any user that can execute this event response'), true),
'display_command', '<div class="w100p margin-top-10">'.html_print_checkbox_switch(
1, 'display_command',
$event_response['display_command'], 1,
true $event_response['display_command'],
true
).'</div>'
); );
$table->data[6] = $data; $table->data[6] = $data;

View File

@ -31,7 +31,7 @@ global $config;
check_login(); check_login();
enterprise_hook('open_meta_frame');
if (!check_acl($config['id_user'], 0, 'EW') && !check_acl($config['id_user'], 0, 'EM') && ! check_acl($config['id_user'], 0, 'PM')) { if (!check_acl($config['id_user'], 0, 'EW') && !check_acl($config['id_user'], 0, 'EM') && ! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit( db_pandora_audit(
@ -125,28 +125,25 @@ switch ($section) {
break; break;
} }
if (is_metaconsole() === false) { ui_print_standard_header(
ui_print_standard_header( $subpage,
$subpage, 'images/gm_events.png',
'images/gm_events.png', false,
false, '',
'', true,
true, (array) $buttons,
(array) $buttons, [
[ [
[ 'link' => '',
'link' => '', 'label' => __('Configuration'),
'label' => __('Configuration'), ],
], [
[ 'link' => '',
'link' => '', 'label' => __('Events'),
'label' => __('Events'), ],
], ]
] );
);
} else {
ui_meta_print_header(__('Manage events').$subpage, '', $buttons);
}
require_once $config['homedir'].'/include/functions_events.php'; require_once $config['homedir'].'/include/functions_events.php';
@ -168,5 +165,3 @@ switch ($section) {
include_once $config['homedir'].'/godmode/events/event_responses.php'; include_once $config['homedir'].'/godmode/events/event_responses.php';
break; break;
} }
enterprise_hook('close_meta_frame');

View File

@ -151,6 +151,8 @@ if ($update_config == 1 && $config['history_db_enabled'] == 1) {
} }
} }
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
$total_agents = db_get_value('count(*)', 'tagente'); $total_agents = db_get_value('count(*)', 'tagente');
$disable_agentaccess = ($total_agents >= 200 && $config['agentaccess'] == 0) ? true : false; $disable_agentaccess = ($total_agents >= 200 && $config['agentaccess'] == 0) ? true : false;
@ -264,104 +266,140 @@ $table->data[1][1] = html_print_input(
[ [
'type' => 'number', 'type' => 'number',
'size' => 5, 'size' => 5,
'max' => 99999, 'max' => $performance_variables_control['event_purge']->max,
'name' => 'event_purge', 'name' => 'event_purge',
'value' => $config['event_purge'], 'value' => $config['event_purge'],
'return' => true, 'return' => true,
'min' => ((((bool) $config['history_event_enabled'] === true) && $config['history_event_days'] > 0) ? $config['history_event_days'] + 1 : null), 'min' => $performance_variables_control['event_purge']->min,
'style' => 'width:43px', 'style' => 'width:43px',
] ]
); );
$table->data[2][0] = __('Max. days before delete traps'); $table->data[2][0] = __('Max. days before delete traps');
$table->data[2][1] = html_print_input_text( $table->data[2][1] = html_print_input(
'trap_purge', [
$config['trap_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['trap_purge']->max,
5, 'name' => 'trap_purge',
true 'value' => $config['trap_purge'],
'return' => true,
'min' => $performance_variables_control['trap_purge']->min,
'style' => 'width:43px',
]
); );
$table->data[3][0] = __('Max. days before delete audit events'); $table->data[3][0] = __('Max. days before delete audit events');
$table->data[3][1] = html_print_input_text( $table->data[3][1] = html_print_input(
'audit_purge', [
$config['audit_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['audit_purge']->max,
5, 'name' => 'audit_purge',
true 'value' => $config['audit_purge'],
'return' => true,
'min' => $performance_variables_control['audit_purge']->min,
'style' => 'width:43px',
]
); );
$table->data[4][0] = __('Max. days before delete string data'); $table->data[4][0] = __('Max. days before delete string data');
$table->data[4][1] = html_print_input_text( $table->data[4][1] = html_print_input(
'string_purge', [
$config['string_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['string_purge']->max,
5, 'name' => 'string_purge',
true 'value' => $config['string_purge'],
'return' => true,
'min' => $performance_variables_control['string_purge']->min,
'style' => 'width:43px',
]
); );
$table->data[5][0] = __('Max. days before delete GIS data'); $table->data[5][0] = __('Max. days before delete GIS data');
$table->data[5][1] = html_print_input_text( $table->data[5][1] = html_print_input(
'gis_purge', [
$config['gis_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['gis_purge']->max,
5, 'name' => 'gis_purge',
true 'value' => $config['gis_purge'],
'return' => true,
'min' => $performance_variables_control['gis_purge']->min,
'style' => 'width:43px',
]
); );
$table->data[6][0] = __('Max. days before purge'); $table->data[6][0] = __('Max. days before purge');
$table->data[6][1] = html_print_input_text( $table->data[6][1] = html_print_input(
'days_purge', [
$config['days_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['days_purge']->max,
5, 'name' => 'days_purge',
true 'value' => $config['days_purge'],
'return' => true,
'min' => $performance_variables_control['days_purge']->min,
'style' => 'width:43px',
]
); );
$table->data[7][0] = __('Max. days before compact data'); $table->data[7][0] = __('Max. days before compact data');
$table->data[7][1] = html_print_input_text( $table->data[7][1] = html_print_input(
'days_compact', [
$config['days_compact'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['days_compact']->max,
5, 'name' => 'days_compact',
true 'value' => $config['days_compact'],
'return' => true,
'min' => $performance_variables_control['days_compact']->min,
'style' => 'width:43px',
]
); );
$table->data[8][0] = __('Max. days before delete unknown modules'); $table->data[8][0] = __('Max. days before delete unknown modules');
$table->data[8][1] = html_print_input_text( $table->data[8][1] = html_print_input(
'days_delete_unknown', [
$config['days_delete_unknown'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['days_delete_unknown']->max,
5, 'name' => 'days_delete_unknown',
true 'value' => $config['days_delete_unknown'],
'return' => true,
'min' => $performance_variables_control['days_delete_unknown']->min,
'style' => 'width:43px',
]
); );
$table->data[9][0] = __('Max. days before delete not initialized modules'); $table->data[9][0] = __('Max. days before delete not initialized modules');
$table->data[9][1] = html_print_input_text( $table->data[9][1] = html_print_input(
'days_delete_not_initialized', [
$config['days_delete_not_initialized'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['days_delete_not_initialized']->max,
5, 'name' => 'days_delete_not_initialized',
true 'value' => $config['days_delete_not_initialized'],
'return' => true,
'min' => $performance_variables_control['days_delete_not_initialized']->min,
'style' => 'width:43px',
]
); );
$table->data[10][0] = __('Max. days before delete autodisabled agents'); $table->data[10][0] = __('Max. days before delete autodisabled agents');
$table->data[10][1] = html_print_input_text( $table->data[10][1] = html_print_input(
'days_autodisable_deletion', [
$config['days_autodisable_deletion'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['days_autodisable_deletion']->max,
5, 'name' => 'days_autodisable_deletion',
true 'value' => $config['days_autodisable_deletion'],
'return' => true,
'min' => $performance_variables_control['days_autodisable_deletion']->min,
'style' => 'width:43px',
]
); );
$table->data[11][0] = __('Retention period of past special days'); $table->data[11][0] = __('Retention period of past special days');
@ -502,13 +540,17 @@ $table->data[] = [
$table->data[] = [ $table->data[] = [
__('Max. days before delete old network matrix data'), __('Max. days before delete old network matrix data'),
html_print_input_text( html_print_input(
'delete_old_network_matrix', [
$config['delete_old_network_matrix'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['delete_old_network_matrix']->max,
5, 'name' => 'delete_old_network_matrix',
true 'value' => $config['delete_old_network_matrix'],
'return' => true,
'min' => $performance_variables_control['delete_old_network_matrix']->min,
'style' => 'width:43px',
]
), ),
]; ];
@ -522,13 +564,17 @@ $table_other->size[0] = '70%';
$table_other->size[1] = '30%'; $table_other->size[1] = '30%';
$i = 0; $i = 0;
$table_other->data[$i][0] = __('Item limit for realtime reports'); $table_other->data[$i][0] = __('Item limit for realtime reports');
$table_other->data[$i++][1] = html_print_input_text( $table_other->data[$i++][1] = html_print_input(
'report_limit', [
$config['report_limit'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['report_limit']->max,
5, 'name' => 'report_limit',
true 'value' => $config['report_limit'],
'return' => true,
'min' => $performance_variables_control['report_limit']->min,
'style' => 'width:43px',
]
); );
$table_other->data[$i][0] = __('Limit of events per query'); $table_other->data[$i][0] = __('Limit of events per query');
@ -565,13 +611,17 @@ $intervals[SECONDS_2WEEK] = __('2 weeks');
$intervals[SECONDS_1MONTH] = __('Last month'); $intervals[SECONDS_1MONTH] = __('Last month');
$table_other->data[$i][0] = __('Default hours for event view'); $table_other->data[$i][0] = __('Default hours for event view');
$table_other->data[$i++][1] = html_print_input_text( $table_other->data[$i++][1] = html_print_input(
'event_view_hr', [
$config['event_view_hr'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['event_view_hr']->max,
5, 'name' => 'event_view_hr',
true 'value' => $config['event_view_hr'],
'return' => true,
'min' => $performance_variables_control['event_view_hr']->min,
'style' => 'width:43px',
]
); );
$table_other->data[$i][0] = __('Use realtime statistics'); $table_other->data[$i][0] = __('Use realtime statistics');
@ -609,23 +659,33 @@ $table_other->data[$i][0] = __('Delete not init modules');
$table_other->data[$i++][1] = html_print_checkbox_switch('delete_notinit', 1, $config['delete_notinit'], true); $table_other->data[$i++][1] = html_print_checkbox_switch('delete_notinit', 1, $config['delete_notinit'], true);
$table_other->data[$i][0] = __('Big Operation Step to purge old data'); $table_other->data[$i][0] = __('Big Operation Step to purge old data');
$table_other->data[$i++][1] = html_print_input_text( $table_other->data[$i++][1] = html_print_input(
'big_operation_step_datos_purge', [
$config['big_operation_step_datos_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['big_operation_step_datos_purge']->max,
5, 'name' => 'big_operation_step_datos_purge',
true 'value' => $config['big_operation_step_datos_purge'],
'return' => true,
'min' => $performance_variables_control['big_operation_step_datos_purge']->min,
'style' => 'width:50px',
]
); );
$table_other->data[$i][0] = __('Small Operation Step to purge old data'); $table_other->data[$i][0] = __('Small Operation Step to purge old data');
$table_other->data[$i++][1] = html_print_input_text( $table_other->data[$i++][1] = html_print_input(
'small_operation_step_datos_purge', [
$config['small_operation_step_datos_purge'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['small_operation_step_datos_purge']->max,
5, 'name' => 'small_operation_step_datos_purge',
true 'value' => $config['small_operation_step_datos_purge'],
'return' => true,
'min' => $performance_variables_control['small_operation_step_datos_purge']->min,
'style' => 'width:50px',
]
); );
$table_other->data[$i][0] = __('Graph container - Max. Items'); $table_other->data[$i][0] = __('Graph container - Max. Items');
@ -649,13 +709,17 @@ $table_other->data[$i++][1] = html_print_input_text(
); );
$table_other->data[$i][0] = __('Row limit in csv log'); $table_other->data[$i][0] = __('Row limit in csv log');
$table_other->data[$i++][1] = html_print_input_text( $table_other->data[$i++][1] = html_print_input(
'row_limit_csv', [
$config['row_limit_csv'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['row_limit_csv']->max,
10, 'name' => 'row_limit_csv',
true 'value' => $config['row_limit_csv'],
'return' => true,
'min' => $performance_variables_control['row_limit_csv']->min,
'style' => 'width:63px',
]
); );
$table_other->data[$i][0] = __('SNMP walk binary'); $table_other->data[$i][0] = __('SNMP walk binary');

View File

@ -47,6 +47,8 @@ if (is_ajax()) {
exit(); exit();
} }
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
$table = new StdClass(); $table = new StdClass();
$table->class = 'databox filters'; $table->class = 'databox filters';
$table->id = 'setup_general'; $table->id = 'setup_general';
@ -512,13 +514,17 @@ $table->data[$i++][1] = html_print_checkbox_switch(
); );
$table->data[$i][0] = __('Limit for bulk operations'); $table->data[$i][0] = __('Limit for bulk operations');
$table->data[$i++][1] = html_print_input_text( $table->data[$i++][1] = html_print_input(
'limit_parameters_massive', [
$config['limit_parameters_massive'], 'type' => 'number',
'', 'size' => 5,
10, 'max' => $performance_variables_control['limit_parameters_massive']->max,
10, 'name' => 'limit_parameters_massive',
true 'value' => $config['limit_parameters_massive'],
'return' => true,
'min' => $performance_variables_control['limit_parameters_massive']->min,
'style' => 'width:50px',
]
); );
$table->data[$i][0] = __('Include agents manually disabled'); $table->data[$i][0] = __('Include agents manually disabled');

View File

@ -53,6 +53,8 @@ $row = 0;
echo '<form id="form_setup" method="post">'; echo '<form id="form_setup" method="post">';
html_print_input_hidden('update_config', 1); html_print_input_hidden('update_config', 1);
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// BEHAVIOUR CONFIGURATION // BEHAVIOUR CONFIGURATION
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
@ -64,7 +66,18 @@ $table_behaviour->size[0] = '50%';
$table_behaviour->data = []; $table_behaviour->data = [];
$table_behaviour->data[$row][0] = __('Block size for pagination'); $table_behaviour->data[$row][0] = __('Block size for pagination');
$table_behaviour->data[$row][1] = html_print_input_text('block_size', $config['global_block_size'], '', 5, 5, true); $table_behaviour->data[$row][1] = html_print_input(
[
'type' => 'number',
'size' => 5,
'max' => $performance_variables_control['block_size']->max,
'name' => 'block_size',
'value' => $config['global_block_size'],
'return' => true,
'min' => $performance_variables_control['block_size']->min,
'style' => 'width:50px',
]
);
$row++; $row++;
$values = []; $values = [];
@ -904,16 +917,19 @@ if (enterprise_installed() === false) {
} }
$table_chars->data[$row][0] = __('Data precision'); $table_chars->data[$row][0] = __('Data precision');
$table_chars->data[$row][1] = html_print_input_text( $table_chars->data[$row][1] = html_print_input(
'graph_precision', [
$config['graph_precision'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['graph_precision']->max,
5, 'name' => 'graph_precision',
true, 'value' => $config['graph_precision'],
$disabled_graph_precision, 'return' => true,
false, 'min' => $performance_variables_control['graph_precision']->min,
'onChange="change_precision()"' 'style' => 'width:50px',
($disabled_graph_precision) ? 'readonly' : '' => 'readonly',
'onchange' => 'change_precision()',
]
); );
$row++; $row++;
@ -922,17 +938,21 @@ if (isset($config['short_module_graph_data']) === false) {
} }
$table_chars->data[$row][0] = __('Data precision in graphs'); $table_chars->data[$row][0] = __('Data precision in graphs');
$table_chars->data[$row][1] = html_print_input_text( $table_chars->data[$row][1] = html_print_input(
'short_module_graph_data', [
$config['short_module_graph_data'], 'type' => 'number',
'', 'size' => 5,
5, 'max' => $performance_variables_control['short_module_graph_data']->max,
5, 'name' => 'short_module_graph_data',
true, 'value' => $config['short_module_graph_data'],
$disabled_graph_precision, 'return' => true,
false, 'min' => $performance_variables_control['short_module_graph_data']->min,
'onChange="change_precision()"' 'style' => 'width:50px',
($disabled_graph_precision) ? 'readonly' : '' => 'readonly',
'onchange' => 'change_precision()',
]
); );
$row++; $row++;
$table_chars->data[$row][0] = __( $table_chars->data[$row][0] = __(

View File

@ -955,29 +955,42 @@ class DiscoveryTaskList extends HTML
) )
) { ) {
if ($ipam === true) { if ($ipam === true) {
$data[9] .= '<a href="'.ui_get_full_url( if (empty($tipam_task_id) === false) {
sprintf( $data[9] .= '<a href="'.ui_get_full_url(
'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=edit&id=%d', sprintf(
$tipam_task_id 'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=edit&id=%d',
) $tipam_task_id
).'">'.html_print_image( )
'images/config.png', ).'">'.html_print_image(
true, 'images/config.png',
[ true,
'title' => __('Edit task'), [
'class' => 'invert_filter', 'title' => __('Edit task'),
] 'class' => 'invert_filter',
).'</a>'; ]
$data[9] .= '<a href="'.ui_get_full_url( ).'</a>';
'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=delete&id='.$tipam_task_id $data[9] .= '<a href="'.ui_get_full_url(
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image( 'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=delete&id='.$tipam_task_id
'images/cross.png', ).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
true, 'images/cross.png',
[ true,
'title' => __('Delete task'), [
'class' => 'invert_filter', 'title' => __('Delete task'),
] 'class' => 'invert_filter',
).'</a>'; ]
).'</a>';
} else {
$data[9] .= '<a href="'.ui_get_full_url(
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist&delete=1&task='.$task['id_rt']
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
'images/cross.png',
true,
[
'title' => __('Delete task'),
'class' => 'invert_filter',
]
).'</a>';
}
} else { } else {
// Check if is a H&D, Cloud or Application or IPAM. // Check if is a H&D, Cloud or Application or IPAM.
$data[9] .= '<a href="'.ui_get_full_url( $data[9] .= '<a href="'.ui_get_full_url(

View File

@ -2279,7 +2279,7 @@ if ($process_buffers === true) {
'', '',
true, true,
true, true,
'white_box white_box_opened fixed_filter_bar', 'white_box white_box_opened no_border',
'no-border flex-row' 'no-border flex-row'
); );

View File

@ -1158,7 +1158,6 @@ if (check_login()) {
} }
} }
hd($data[4], true);
// Module thresholds. // Module thresholds.
$data[5] = ''; $data[5] = '';
if ((int) $module['id_tipo_modulo'] !== 25) { if ((int) $module['id_tipo_modulo'] !== 25) {

View File

@ -96,7 +96,10 @@ class AuditLog extends HTML
// Datatables list. // Datatables list.
try { try {
$columns = [ $columns = [
'id_usuario', [
'text' => 'id_usuario',
'class' => 'w50px',
],
'accion', 'accion',
'fecha', 'fecha',
'ip_origen', 'ip_origen',
@ -206,11 +209,23 @@ class AuditLog extends HTML
'name' => 'filter_text', 'name' => 'filter_text',
], ],
[ [
'label' => __('Max. hours old'), 'label' => __('Max. hours old'),
'type' => 'text', 'type' => 'select',
'class' => 'w100p', 'class' => 'w20px',
'id' => 'filter_period', 'select2_enable' => true,
'name' => 'filter_period', 'sort' => false,
'selected' => 168,
'fields' => [
24 => __('1 day'),
168 => __('7 days'),
360 => __('15 days'),
744 => __('1 month'),
2160 => __('3 months'),
4320 => __('6 months'),
8760 => __('1 Year'),
],
'id' => 'filter_period',
'name' => 'filter_period',
], ],
[ [
'label' => __('IP'), 'label' => __('IP'),
@ -225,7 +240,7 @@ class AuditLog extends HTML
'nothing' => __('All'), 'nothing' => __('All'),
'nothing_value' => '-1', 'nothing_value' => '-1',
'sql' => 'SELECT DISTINCT(accion), accion AS text FROM tsesion', 'sql' => 'SELECT DISTINCT(accion), accion AS text FROM tsesion',
'class' => 'mw250px', 'class' => 'mw200px',
'id' => 'filter_type', 'id' => 'filter_type',
'name' => 'filter_type', 'name' => 'filter_type',
], ],
@ -237,7 +252,7 @@ class AuditLog extends HTML
'sql' => 'SELECT id_user, id_user AS text FROM tusuario UNION SELECT "SYSTEM" 'sql' => 'SELECT id_user, id_user AS text FROM tusuario UNION SELECT "SYSTEM"
AS id_user, "SYSTEM" AS text UNION SELECT "N/A" AS id_user, "SYSTEM" AS text UNION SELECT "N/A"
AS id_user, "N/A" AS text', AS id_user, "N/A" AS text',
'class' => 'mw250px', 'class' => 'mw200px',
'id' => 'filter_user', 'id' => 'filter_user',
'name' => 'filter_user', 'name' => 'filter_user',
], ],
@ -351,9 +366,12 @@ class AuditLog extends HTML
).ui_print_timestamp($tmp->utimestamp, true); ).ui_print_timestamp($tmp->utimestamp, true);
if (enterprise_installed() === true) { if (enterprise_installed() === true) {
$tmp->security = enterprise_hook('cell1EntepriseAudit', [$tmp->id_sesion]); $extendedInfo = enterprise_hook('rowEnterpriseAudit', [$tmp->id_sesion]);
$tmp->action = enterprise_hook('cell2EntepriseAudit', []); if (empty($extendedInfo) === false) {
$tmp->extendedInfo = enterprise_hook('rowEnterpriseAudit', [$tmp->id_sesion]); $tmp->security = enterprise_hook('cell1EntepriseAudit', [$tmp->id_sesion]);
$tmp->action = enterprise_hook('cell2EntepriseAudit', []);
$tmp->extendedInfo = $extendedInfo;
}
} }
$carry[] = $tmp; $carry[] = $tmp;

View File

@ -248,6 +248,11 @@ class ConsoleSupervisor
$this->checkAuditLogOldLocation(); $this->checkAuditLogOldLocation();
/*
* Check if performance variables are corrects
*/
$this->checkPerformanceVariables();
/* /*
* Checks if sync queue is longer than limits. * Checks if sync queue is longer than limits.
* NOTIF.SYNCQUEUE.LENGTH * NOTIF.SYNCQUEUE.LENGTH
@ -524,6 +529,11 @@ class ConsoleSupervisor
$this->checkAuditLogOldLocation(); $this->checkAuditLogOldLocation();
/*
* Check if performance variables are corrects
*/
$this->checkPerformanceVariables();
/* /*
* Checks if sync queue is longer than limits. * Checks if sync queue is longer than limits.
* NOTIF.SYNCQUEUE.LENGTH * NOTIF.SYNCQUEUE.LENGTH
@ -553,6 +563,91 @@ class ConsoleSupervisor
} }
/**
* Check if performance variables are corrects
*
* @return void
*/
public function checkPerformanceVariables()
{
global $config;
$names = [
'event_purge' => 'Max. days before events are deleted',
'trap_purge' => 'Max. days before traps are deleted',
'audit_purge' => 'Max. days before audited events are deleted',
'string_purge' => 'Max. days before string data is deleted',
'gis_purge' => 'Max. days before GIS data is deleted',
'days_purge' => 'Max. days before purge',
'days_compact' => 'Max. days before data is compacted',
'days_delete_unknown' => 'Max. days before unknown modules are deleted',
'days_delete_not_initialized' => 'Max. days before delete not initialized modules',
'days_autodisable_deletion' => 'Max. days before autodisabled agents are deleted',
'delete_old_network_matrix' => 'Max. days before delete old network matrix data',
'report_limit' => 'Item limit for real-time reports',
'event_view_hr' => 'Default hours for event view',
'big_operation_step_datos_purge' => 'Big Operation Step to purge old data',
'small_operation_step_datos_purge' => 'Small Operation Step to purge old data',
'row_limit_csv' => 'Row limit in csv log',
'limit_parameters_massive' => 'Limit for bulk operations',
'block_size' => 'Block size for pagination',
'short_module_graph_data' => 'Data precision',
'graph_precision' => 'Data precision in graphs',
];
$variables = (array) json_decode(io_safe_output($config['performance_variables_control']));
foreach ($variables as $variable => $values) {
if (empty($config[$variable]) === true || $config[$variable] === '') {
continue;
}
$message = '';
$limit_value = '';
if ($config[$variable] > $values->max) {
$message = 'Check the setting of %s, a value greater than %s is not recommended';
$limit_value = $values->max;
}
if ($config[$variable] < $values->min) {
$message = 'Check the setting of %s, a value less than %s is not recommended';
$limit_value = $values->min;
}
if ($limit_value !== '' && $message !== '') {
if (is_metaconsole() === true) {
$this->notify(
[
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
'title' => __('Incorrect config value'),
'message' => __(
$message,
$names[$variable],
$limit_value
),
'url' => '__url__index.php?sec=advanced&sec2=advanced/metasetup',
]
);
} else {
$this->notify(
[
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
'title' => __('Incorrect config value'),
'message' => __(
$message,
$names[$variable],
$limit_value
),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup',
]
);
}
}
}
}
/** /**
* Executes console maintenance operations. Executed ALWAYS through CRON. * Executes console maintenance operations. Executed ALWAYS through CRON.
* *

View File

@ -669,7 +669,6 @@ class Tree
} }
$module['statusImageHTML'] = ui_print_status_image($statusType, htmlspecialchars($statusTitle), true, ['is_tree_view' => true]); $module['statusImageHTML'] = ui_print_status_image($statusType, htmlspecialchars($statusTitle), true, ['is_tree_view' => true]);
hd($module['statusImageHTML'], true);
// HTML of the server type image. // HTML of the server type image.
$module['serverTypeHTML'] = ui_print_servertype_icon((int) $module['server_type']); $module['serverTypeHTML'] = ui_print_servertype_icon((int) $module['server_type']);

View File

@ -20,7 +20,7 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC230228'; $build_version = 'PC230301';
$pandora_version = 'v7.0NG.769'; $pandora_version = 'v7.0NG.769';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.

View File

@ -2317,6 +2317,96 @@ function config_process_config()
config_update_value('2Fa_auth', ''); config_update_value('2Fa_auth', '');
} }
if (isset($config['performance_variables_control']) === false) {
config_update_value(
'performance_variables_control',
json_encode(
[
'event_purge' => [
'max' => 45,
'min' => 1,
],
'trap_purge' => [
'max' => 45,
'min' => 1,
],
'audit_purge' => [
'max' => 365,
'min' => 7,
],
'string_purge' => [
'max' => 365,
'min' => 7,
],
'gis_purge' => [
'max' => 365,
'min' => 7,
],
'days_purge' => [
'max' => 365,
'min' => 7,
],
'days_compact' => [
'max' => 365,
'min' => 0,
],
'days_delete_unknown' => [
'max' => 90,
'min' => 0,
],
'days_delete_not_initialized' => [
'max' => 90,
'min' => 0,
],
'days_autodisable_deletion' => [
'max' => 90,
'min' => 0,
],
'delete_old_network_matrix' => [
'max' => 30,
'min' => 1,
],
'report_limit' => [
'max' => 500,
'min' => 1,
],
'event_view_hr' => [
'max' => 360,
'min' => 1,
],
'big_operation_step_datos_purge' => [
'max' => 10000,
'min' => 100,
],
'small_operation_step_datos_purge' => [
'max' => 10000,
'min' => 100,
],
'row_limit_csv' => [
'max' => 1000000,
'min' => 1,
],
'limit_parameters_massive' => [
'max' => 2000,
'min' => 100,
],
'block_size' => [
'max' => 200,
'min' => 10,
],
'short_module_graph_data' => [
'max' => 20,
'min' => 1,
],
'graph_precision' => [
'max' => 5,
'min' => 1,
],
]
)
);
}
if (isset($config['agent_wizard_defaults']) === false) { if (isset($config['agent_wizard_defaults']) === false) {
config_update_value( config_update_value(
'agent_wizard_defaults', 'agent_wizard_defaults',

View File

@ -176,7 +176,7 @@ function groupview_get_groups_list($id_user=false, $access='AR', $is_not_paginat
[] []
); );
$total_counters = []; $list = [];
foreach ($agents_counters as $id_group => $agent_counter) { foreach ($agents_counters as $id_group => $agent_counter) {
$list[$id_group]['_name_'] = $agent_counter['name']; $list[$id_group]['_name_'] = $agent_counter['name'];

View File

@ -718,7 +718,7 @@ function inventory_get_datatable(
} }
if (array_search(-1, $agents_ids) === false) { if (array_search(-1, $agents_ids) === false) {
array_push($where, 'id_agente IN ('.implode(',', $agents_ids).')'); array_push($where, 'tagent_module_inventory.id_agente IN ('.implode(',', $agents_ids).')');
} }
if ($inventory_module_name[0] !== '0' if ($inventory_module_name[0] !== '0'
@ -732,75 +732,61 @@ function inventory_get_datatable(
array_push($where, "tagent_module_inventory.data LIKE '%".$inventory_search_string."%'"); array_push($where, "tagent_module_inventory.data LIKE '%".$inventory_search_string."%'");
} }
$sql = 'SELECT * $sql = sprintf(
FROM tmodule_inventory, tagent_module_inventory 'SELECT tmodule_inventory.*,
WHERE tagent_module_inventory.*,
'.implode(' AND ', $where).' tagente.alias as name_agent
ORDER BY tmodule_inventory.id_module_inventory LIMIT '.$offset.', '.$config['block_size']; FROM tmodule_inventory
INNER JOIN tagent_module_inventory
$sql_count = 'SELECT COUNT(*) ON tmodule_inventory.id_module_inventory = tagent_module_inventory.id_module_inventory
FROM tmodule_inventory, tagent_module_inventory LEFT JOIN tagente
WHERE '.implode(' AND ', $where); ON tagente.id_agente = tagent_module_inventory.id_agente
WHERE %s
ORDER BY tmodule_inventory.id_module_inventory
LIMIT %d, %d',
implode(' AND ', $where),
$offset,
$config['block_size']
);
$rows = db_get_all_rows_sql($sql); $rows = db_get_all_rows_sql($sql);
$count = db_get_sql($sql_count);
if ($order_by_agent === false) { if ($order_by_agent === false) {
$modules = []; $modules = [];
$module_rows = [];
foreach ($rows as $row) { foreach ($rows as $row) {
array_push($modules, $row['name']); $data_rows = explode(PHP_EOL, $row['data']);
} foreach ($data_rows as $data_key => $data_value) {
if (empty($data_value) === false) {
foreach ($modules as $module) { $row['data'] = $data_value;
$rows_tmp = []; $modules[$row['name']][$row['name_agent'].'-'.$data_key.'-'.$data_value] = $row;
foreach ($rows as $row) {
if ($row['name'] === $module) {
$agent_name = db_get_value_sql(
'SELECT alias
FROM tagente
WHERE id_agente = '.$row['id_agente']
);
$row['name_agent'] = $agent_name;
array_push($rows_tmp, $row);
$module_rows[$module] = $rows_tmp;
} }
} }
} }
return $module_rows; return $modules;
} else { } else {
$agents_rows = []; $agents_rows = [];
$agent_data = []; $agent_data = [];
$rows_tmp = []; $rows_tmp = [];
foreach ($rows as $row) { foreach ($rows as $row) {
$agent_name = db_get_value_sql(
'SELECT alias
FROM tagente
WHERE id_agente = '.$row['id_agente']
);
$row['name_agent'] = $agent_name;
$agent_data[$row['id_agente']][] = $row; $agent_data[$row['id_agente']][] = $row;
} }
foreach ($agent_data as $id_agent => $rows) { foreach ($agent_data as $id_agent => $rows) {
$agent_name = db_get_value_sql( $rows_tmp['agent'] = $row['name_agent'];
'SELECT alias
FROM tagente
WHERE id_agente = '.$id_agent
);
$rows_tmp['agent'] = $agent_name;
foreach ($rows as $row) { foreach ($rows as $row) {
if ($utimestamp > 0) { if ($utimestamp > 0) {
$data_row = db_get_row_sql( $data_row = db_get_row_sql(
"SELECT data, timestamp sprintf(
FROM tagente_datos_inventory 'SELECT `data`,
WHERE utimestamp <= '".$utimestamp."' `timestamp`
AND id_agent_module_inventory = ".$row['id_agent_module_inventory'].' ORDER BY utimestamp DESC' FROM tagente_datos_inventory
WHERE utimestamp <= "%s"
AND id_agent_module_inventory = %d
ORDER BY utimestamp DESC',
$utimestamp,
$row['id_agent_module_inventory']
)
); );
if ($data_row !== false) { if ($data_row !== false) {
@ -821,6 +807,63 @@ function inventory_get_datatable(
} }
function get_data_basic_info_sql($params, $count=false)
{
$where = 'WHERE 1=1 ';
if ($params['id_agent'] > 0) {
$where .= sprintf(' AND id_agente = %d', $params['id_agent']);
}
if ($params['search'] > 0) {
$where .= sprintf(
' AND ( alias LIKE "%%%s%%" )',
$params['search']
);
}
$limit_condition = '';
$order_condition = '';
$fields = 'count(*)';
if ($count !== true) {
$fields = '*';
$limit_condition = sprintf(
'LIMIT %d, %d',
$params['start'],
$params['length']
);
$order_condition = sprintf('ORDER BY %s', $params['order']);
}
$sql = sprintf(
'SELECT %s
FROM tagente
%s
%s
%s',
$fields,
$where,
$order_condition,
$limit_condition
);
if ($count !== true) {
$result = db_get_all_rows_sql($sql);
if ($result === false) {
$result = [];
}
} else {
$result = db_get_sql($sql);
if ($result === false) {
$result = 0;
}
}
return $result;
}
function inventory_get_dates($module_inventory_name, $inventory_agent, $inventory_id_group) function inventory_get_dates($module_inventory_name, $inventory_agent, $inventory_id_group)
{ {
$sql = 'SELECT tagente_datos_inventory.utimestamp, $sql = 'SELECT tagente_datos_inventory.utimestamp,

View File

@ -160,6 +160,7 @@ function notifications_get_subtypes(?string $source=null)
'NOTIF.SERVER.QUEUE', 'NOTIF.SERVER.QUEUE',
'NOTIF.SERVER.MASTER', 'NOTIF.SERVER.MASTER',
'NOTIF.ACCESSSTASTICS.PERFORMANCE', 'NOTIF.ACCESSSTASTICS.PERFORMANCE',
'NOTIF.VARIABLES.PERFORMANCE',
], ],
]; ];

View File

@ -225,7 +225,6 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
} else { } else {
// Only profiles that can be viewed by the user. // Only profiles that can be viewed by the user.
$group_um = users_get_groups_UM($config['id_user']); $group_um = users_get_groups_UM($config['id_user']);
hd($group_um, true);
if (isset($group_um[0]) === true) { if (isset($group_um[0]) === true) {
$group_um_string = implode(',', array_keys(users_get_groups($config['id_user'], 'um', true))); $group_um_string = implode(',', array_keys(users_get_groups($config['id_user'], 'um', true)));
} else { } else {
@ -239,7 +238,6 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
$id, $id,
$group_um_string $group_um_string
); );
hd($sql, true);
$result = db_get_all_rows_sql($sql); $result = db_get_all_rows_sql($sql);
} }

View File

@ -3728,11 +3728,6 @@ function ui_print_datatable(array $parameters)
$("#'.$form_id.'_loading").remove(); $("#'.$form_id.'_loading").remove();
} }
// Move elements to table_action_buttons bar.
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers"));
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dataTables_length"));
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dt-buttons"));
if (json.error) { if (json.error) {
console.error(json.error); console.error(json.error);
$("#error-'.$table_id.'").html(json.error); $("#error-'.$table_id.'").html(json.error);
@ -3904,6 +3899,13 @@ function ui_print_datatable(array $parameters)
{ bSortable: false, targets: '.$no_sortable_columns.' } { bSortable: false, targets: '.$no_sortable_columns.' }
], ],
ordering: '.$ordering.', ordering: '.$ordering.',
initComplete: function(settings, json) {
// Move elements to table_action_buttons bar.
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers"));
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dataTables_length"));
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dt-buttons"));
$(".action_buttons_right_content").append($("#'.$table_id.'_wrapper > .dataTables_filter"));
},
columns: ['; columns: [';
foreach ($parameters['datacolumns'] as $data) { foreach ($parameters['datacolumns'] as $data) {
@ -3926,8 +3928,6 @@ function ui_print_datatable(array $parameters)
$("#button-'.$form_id.'_search_bt").click(function (){ $("#button-'.$form_id.'_search_bt").click(function (){
dt_'.$table_id.'.draw().page(0) dt_'.$table_id.'.draw().page(0)
}); });
//$(".action_buttons_right_content").html($("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers"));
'; ';
if (isset($parameters['caption']) === true if (isset($parameters['caption']) === true
@ -3958,7 +3958,7 @@ function ui_print_datatable(array $parameters)
ui_require_css_file('datatables.min', 'include/styles/js/'); ui_require_css_file('datatables.min', 'include/styles/js/');
ui_require_css_file('tables'); ui_require_css_file('tables');
if (is_metaconsole()) { if (is_metaconsole()) {
ui_require_css_file('tables_meta', ENTERPRISE_DIR.'/include/styles/'); ui_require_css_file('meta_tables', ENTERPRISE_DIR.'/include/styles/');
} }
ui_require_javascript_file('datatables.min'); ui_require_javascript_file('datatables.min');
@ -3986,10 +3986,10 @@ function ui_print_datatable(array $parameters)
); );
$output .= '"/>'; $output .= '"/>';
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
// Load tables_meta.css. // Load meta_tables.css.
$output .= '<link rel="stylesheet" href="'; $output .= '<link rel="stylesheet" href="';
$output .= ui_get_full_url( $output .= ui_get_full_url(
ENTERPRISE_DIR.'/include/styles/tables_meta.css', ENTERPRISE_DIR.'/include/styles/meta_tables.css',
false, false,
false, false,
false false
@ -4407,7 +4407,7 @@ function ui_toggle(
$class_table = ''; $class_table = '';
if ($id_table !== false) { if ($id_table !== false) {
$class_table = ' $("#'.$id_table.'_wrapper").addClass("w100p");'."\n"; $class_table = '$("#'.$id_table.'_wrapper").addClass("w100p");'."\n";
} }
if ($disableToggle === false) { if ($disableToggle === false) {
@ -6290,7 +6290,7 @@ function ui_print_agent_autocomplete_input($parameters)
true true
); );
if ($show_helptip) { if ($show_helptip) {
$html .= ui_print_help_tip($helptip_text, true); $html .= ui_print_input_placeholder($helptip_text, true);
} }
if ($print_hidden_input_idagent) { if ($print_hidden_input_idagent) {

View File

@ -169,6 +169,7 @@ body {
body * { body * {
font-family: "lato"; font-family: "lato";
} }
body.body-report { body.body-report {
display: block; display: block;
} }
@ -1023,6 +1024,7 @@ select:-internal-list-box {
border: 1px solid #e5e9ed; border: 1px solid #e5e9ed;
border-radius: 8px; border-radius: 8px;
} }
.align-top td { .align-top td {
vertical-align: top; vertical-align: top;
} }
@ -1161,6 +1163,11 @@ p.center {
margin-bottom: 10px; margin-bottom: 10px;
} }
.margin-lr-10 {
margin-left: 10px;
margin-right: 10px;
}
.img_help { .img_help {
cursor: help; cursor: help;
margin: 0 5px; margin: 0 5px;
@ -2769,6 +2776,7 @@ td.cellBig {
right: 0; right: 0;
margin: 0 10px; margin: 0 10px;
} }
/* Standard styles for status colos (groups, events, backgrounds...) */ /* Standard styles for status colos (groups, events, backgrounds...) */
.opacity_cell { .opacity_cell {
filter: alpha(opacity=80); filter: alpha(opacity=80);
@ -5951,6 +5959,7 @@ div#bullets_modules div {
.agent_details_first_row.agent_details_line { .agent_details_first_row.agent_details_line {
margin: 0; margin: 0;
} }
.agent_details_line { .agent_details_line {
display: flex; display: flex;
margin: 20px 0 0; margin: 20px 0 0;
@ -9170,11 +9179,12 @@ div.stat-win-spinner img {
font-size: 11pt; font-size: 11pt;
} }
.checkbox-random-name { /*.checkbox-random-name {
width: 100px !important; width: 100px !important;
margin-left: 20px; margin-left: 20px;
} }
*/
.btn_update_online_open { .btn_update_online_open {
float: right; float: right;
margin-bottom: 20px; margin-bottom: 20px;
@ -9203,6 +9213,7 @@ div.stat-win-spinner img {
.line_height_26 { .line_height_26 {
line-height: 26px; line-height: 26px;
} }
.line_height_0pt { .line_height_0pt {
line-height: 10pt !important; line-height: 10pt !important;
} }
@ -9886,6 +9897,7 @@ div#err_msg_centralised {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.div-col { .div-col {
width: 33%; width: 33%;
display: flex; display: flex;
@ -9968,6 +9980,7 @@ textarea[list],
select[list] { select[list] {
line-height: initial; line-height: initial;
} }
textarea { textarea {
padding: 10px; padding: 10px;
height: auto; height: auto;
@ -10345,14 +10358,17 @@ button div.load {
mask: url(../../images/logs@svg.svg) no-repeat center / contain; mask: url(../../images/logs@svg.svg) no-repeat center / contain;
-webkit-mask: url(../../images/logs@svg.svg) no-repeat center / contain; -webkit-mask: url(../../images/logs@svg.svg) no-repeat center / contain;
} }
button div.camera { button div.camera {
mask: url(../../images/picture.svg) no-repeat center / contain; mask: url(../../images/picture.svg) no-repeat center / contain;
-webkit-mask: url(../../images/picture.svg) no-repeat center / contain; -webkit-mask: url(../../images/picture.svg) no-repeat center / contain;
} }
button div.alert { button div.alert {
mask: url(../../images/alert@svg.svg) no-repeat center / contain; mask: url(../../images/alert@svg.svg) no-repeat center / contain;
-webkit-mask: url(../../images/alert@svg.svg) no-repeat center / contain; -webkit-mask: url(../../images/alert@svg.svg) no-repeat center / contain;
} }
button div.ok { button div.ok {
mask: url(../../images/ok.svg) no-repeat center / contain; mask: url(../../images/ok.svg) no-repeat center / contain;
-webkit-mask: url(../../images/ok.svg) no-repeat center / contain; -webkit-mask: url(../../images/ok.svg) no-repeat center / contain;
@ -10412,6 +10428,7 @@ button div.info {
mask: url(../../images/info@svg.svg) no-repeat center / contain; mask: url(../../images/info@svg.svg) no-repeat center / contain;
-webkit-mask: url(../../images/info@svg.svg) no-repeat center / contain; -webkit-mask: url(../../images/info@svg.svg) no-repeat center / contain;
} }
button div.signin { button div.signin {
mask: url(../../images/signin.svg) no-repeat center / contain; mask: url(../../images/signin.svg) no-repeat center / contain;
-webkit-mask: url(../../images/signin.svg) no-repeat center / contain; -webkit-mask: url(../../images/signin.svg) no-repeat center / contain;
@ -10451,6 +10468,7 @@ button div.cog.rotation {
transform: rotate(359deg); transform: rotate(359deg);
} }
} }
.ui-dialog-buttonset { .ui-dialog-buttonset {
width: 100%; width: 100%;
display: flex; display: flex;
@ -10916,6 +10934,7 @@ tr.bring_next_field {
.external_tools_title { .external_tools_title {
padding: 0 10px; padding: 0 10px;
} }
pre.external_tools_output { pre.external_tools_output {
padding: 0 10px; padding: 0 10px;
/* /*
@ -11005,6 +11024,7 @@ pre.external_tools_output {
margin-right: 10px; margin-right: 10px;
font-size: 10pt; font-size: 10pt;
} }
/* /*
.filter_table input, .filter_table input,
.table_modal_alternate input, .table_modal_alternate input,
@ -11140,6 +11160,7 @@ table.table_modal_alternate
span.subsection_header_title { span.subsection_header_title {
height: 18px; height: 18px;
} }
.subsection_header_title.secondary { .subsection_header_title.secondary {
font-size: 14px; font-size: 14px;
} }
@ -11147,6 +11168,7 @@ span.subsection_header_title {
span.subsection_header_title.secondary { span.subsection_header_title.secondary {
height: 14px; height: 14px;
} }
.regular_font { .regular_font {
font-family: "lato" !important; font-family: "lato" !important;
} }
@ -11380,6 +11402,27 @@ div[role="dialog"] {
margin: 0 auto; margin: 0 auto;
} }
.filter-list-adv .wizard li {
display: grid;
}
.filter-list-adv .wizard li label {
color: #161628;
font-size: 13px;
font-weight: bold;
line-height: 16px;
text-align: left;
margin-bottom: 10px;
}
.filter-list-adv fieldset.several-fields {
margin-left: 10px;
}
.display-grid {
display: grid;
}
.flex-colum-center { .flex-colum-center {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -712,3 +712,22 @@ td:has(div > .no-margin-top) {
.no-margin-top { .no-margin-top {
margin-top: 0px !important; margin-top: 0px !important;
} }
tr.datos > td.datos > div > label,
tr.datos2 > td.datos2 > div > label,
tr.datos2 > td.datos2 > div > div > label {
font-size: 13px;
line-height: 16px;
}
tr.datos2 > td.datos2 > div > div {
margin-top: 10px;
}
.mgn_tp_0_imp {
margin-top: 0px !important;
}
.dataTables_wrapper .dataTables_filter input {
margin: 0.5em;
}

View File

@ -131,7 +131,7 @@
<div style='padding-bottom: 50px'> <div style='padding-bottom: 50px'>
<?php <?php
$version = '7.0NG.769'; $version = '7.0NG.769';
$build = '230228'; $build = '230301';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -184,35 +184,27 @@ if ($idAgent != 0) {
$print_agent = true; $print_agent = true;
if (is_metaconsole() === false) { // Header.
// Header. ui_print_standard_header(
ui_print_standard_header( __('Alert detail'),
__('Alert detail'), 'images/op_alerts.png',
'images/op_alerts.png', false,
false, '',
'', false,
false, [],
[], [
[ [
[ 'link' => '',
'link' => '', 'label' => __('Monitoring'),
'label' => __('Monitoring'), ],
], [
[ 'link' => '',
'link' => '', 'label' => __('Views'),
'label' => __('Views'), ],
], ]
] );
);
} else {
ui_meta_print_header(__('Alerts view'));
}
} }
enterprise_hook('open_meta_frame');
$alerts = []; $alerts = [];
if ($tab != null) { if ($tab != null) {
@ -237,7 +229,6 @@ if (is_metaconsole() === false) {
[ [
'title' => __('Standby'), 'title' => __('Standby'),
'text' => __('Standby'), 'text' => __('Standby'),
'style' => 'max-width: 5%;',
], ],
); );
@ -252,7 +243,6 @@ if (is_metaconsole() === false) {
[ [
'title' => __('Policy'), 'title' => __('Policy'),
'text' => __('Policy'), 'text' => __('Policy'),
'style' => 'max-width: 5%;vertical-align: baseline;',
] ]
); );
@ -278,26 +268,11 @@ if (is_metaconsole() === false) {
if ((bool) check_acl($config['id_user'], $id_group, 'AW') === true || (bool) check_acl($config['id_user'], $id_group, 'LM') === true) { if ((bool) check_acl($config['id_user'], $id_group, 'AW') === true || (bool) check_acl($config['id_user'], $id_group, 'LM') === true) {
array_push( array_push(
$column_names, $column_names,
[ ['text' => 'Module'],
'text' => 'Module', ['text' => 'Template'],
'style' => 'min-width: 15%;vertical-align: baseline;', ['text' => 'Operation'],
], ['text' => 'Last fired'],
[ ['text' => 'Status']
'text' => 'Template',
'style' => 'min-width: 10%;vertical-align: baseline;',
],
[
'text' => 'Operation',
'style' => 'min-width: 15%;vertical-align: baseline;',
],
[
'text' => 'Last fired',
'style' => 'min-width: 15%;',
],
[
'text' => 'Status',
'style' => 'width: 5%;',
]
); );
$columns = array_merge( $columns = array_merge(
@ -439,7 +414,7 @@ if ($agent_view_page === true) {
[ [
'id' => 'alerts_status_datatable', 'id' => 'alerts_status_datatable',
'class' => 'info_table', 'class' => 'info_table',
'style' => 'width: 99%', 'style' => 'width: 99%;',
'columns' => $columns, 'columns' => $columns,
'column_names' => $column_names, 'column_names' => $column_names,
'no_sortable_columns' => $no_sortable_columns, 'no_sortable_columns' => $no_sortable_columns,
@ -538,9 +513,6 @@ html_print_input_text('strict_user_hidden', $strict_user);
html_print_input_text('is_meta_hidden', (int) is_metaconsole()); html_print_input_text('is_meta_hidden', (int) is_metaconsole());
echo '</div>'; echo '</div>';
enterprise_hook('close_meta_frame');
ui_require_css_file('cluetip', 'include/styles/js/'); ui_require_css_file('cluetip', 'include/styles/js/');
ui_require_jquery_file('cluetip'); ui_require_jquery_file('cluetip');
?> ?>

View File

@ -50,7 +50,9 @@ enterprise_include_once('include/functions_metaconsole.php');
$isFunctionPolicies = enterprise_include_once('include/functions_policies.php'); $isFunctionPolicies = enterprise_include_once('include/functions_policies.php');
if (! defined('METACONSOLE')) { $buttons = [];
$subpage = '';
if (is_metaconsole() === false) {
$section = (string) get_parameter('section', 'view'); $section = (string) get_parameter('section', 'view');
$buttons['fields'] = [ $buttons['fields'] = [
@ -89,34 +91,36 @@ if (! defined('METACONSOLE')) {
$buttons['view']['active'] = true; $buttons['view']['active'] = true;
break; break;
} }
}
// Header. // Header.
ui_print_standard_header( ui_print_standard_header(
__('Monitor detail').$subpage, __('Monitor detail').$subpage,
'images/agent.png', 'images/agent.png',
false, false,
'', '',
true, true,
$buttons, $buttons,
[
[ [
[ 'link' => '',
'link' => '', 'label' => __('Monitoring'),
'label' => __('Monitoring'), ],
], [
[ 'link' => '',
'link' => '', 'label' => __('Views'),
'label' => __('Views'), ],
], ]
] );
);
if (is_metaconsole() === false) {
if ($section == 'fields') { if ($section == 'fields') {
include_once $config['homedir'].'/godmode/agentes/status_monitor_custom_fields.php'; include_once $config['homedir'].'/godmode/agentes/status_monitor_custom_fields.php';
exit(); exit();
} }
} else { } else {
$section = (string) get_parameter('sec', 'estado'); $section = (string) get_parameter('sec', 'estado');
ui_meta_print_header(__('Monitor view'));
} }
$recursion = get_parameter_switch('recursion', false); $recursion = get_parameter_switch('recursion', false);
@ -191,8 +195,6 @@ if ($id_module) {
$ag_freestring = modules_get_agentmodule_agent_alias($id_module); $ag_freestring = modules_get_agentmodule_agent_alias($id_module);
} }
enterprise_hook('open_meta_frame');
// Get Groups and profiles from user. // Get Groups and profiles from user.
$user_groups = implode(',', array_keys(users_get_groups(false, 'AR', false))); $user_groups = implode(',', array_keys(users_get_groups(false, 'AR', false)));
@ -2107,7 +2109,7 @@ if (empty($result) === false) {
} else { } else {
$sub_string = substr(io_safe_output($row['datos']), 0, 12); $sub_string = substr(io_safe_output($row['datos']), 0, 12);
if ($module_value == $sub_string) { if ($module_value == $sub_string) {
if ($module_value == 0 && !$sub_string) { if ((empty($module_value) === true || $module_value == 0) && !$sub_string) {
$salida = 0; $salida = 0;
} else { } else {
$data_macro = modules_get_unit_macro($row['datos'], $row['unit']); $data_macro = modules_get_unit_macro($row['datos'], $row['unit']);
@ -2240,8 +2242,6 @@ echo "<div id='monitor_details_window'></div>";
echo '<div id="load-modal-filter" style="display:none"></div>'; echo '<div id="load-modal-filter" style="display:none"></div>';
echo '<div id="save-modal-filter" style="display:none"></div>'; echo '<div id="save-modal-filter" style="display:none"></div>';
enterprise_hook('close_meta_frame');
ui_require_javascript_file('pandora_modules'); ui_require_javascript_file('pandora_modules');
?> ?>

View File

@ -74,7 +74,8 @@ $readonly = false;
ui_require_css_file('events'); ui_require_css_file('events');
ui_require_css_file('tables'); ui_require_css_file('tables');
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
ui_require_css_file('meta_tables', ENTERPRISE_DIR.'/meta/styles/'); ui_require_css_file('tables');
// ui_require_css_file('meta_tables', ENTERPRISE_DIR.'/meta/styles/');
ui_require_css_file('meta_events', ENTERPRISE_DIR.'/meta/styles/'); ui_require_css_file('meta_events', ENTERPRISE_DIR.'/meta/styles/');
} }

View File

@ -32,6 +32,7 @@ require_once $config['homedir'].'/include/functions_inventory.php';
if (is_ajax() === true) { if (is_ajax() === true) {
$get_csv_url = (bool) get_parameter('get_csv_url'); $get_csv_url = (bool) get_parameter('get_csv_url');
$get_data_basic_info = (bool) get_parameter('get_data_basic_info');
if ($get_csv_url) { if ($get_csv_url) {
// $inventory_module = get_parameter ('module_inventory_general_view', 'all'); // $inventory_module = get_parameter ('module_inventory_general_view', 'all');
@ -109,6 +110,156 @@ if (is_ajax() === true) {
return; return;
} }
if ($get_data_basic_info === true) {
// Datatables offset, limit and order.
$filter = get_parameter('search', []);
$start = (int) get_parameter('start', 0);
$length = (int) get_parameter('length', $config['block_size']);
$order = get_datatable_order();
$id_agent = (int) get_parameter('id_agent', 0);
$params = [
'search' => $filter['value'],
'start' => $start,
'length' => $length,
'order' => $order,
'id_agent' => $id_agent,
];
$data = get_data_basic_info_sql($params);
$count = get_data_basic_info_sql($params, true);
try {
ob_start();
$data = array_reduce(
$data,
function ($carry, $agent) {
// Transforms array of arrays $data into an array
// of objects, making a post-process of certain fields.
$tmp = new stdClass();
$id = $agent['id_agente'];
$tmp->alias = $agent['alias'];
$ip = '<em>'.__('N/A').'</em>';
if (empty($agent['direccion']) === false) {
$ip = $agent['direccion'];
}
$tmp->ip = $ip;
$secondary_ips = '';
foreach (agents_get_addresses($id) as $ip) {
if ($ip !== $agent['direccion']) {
$secondary_ips .= '<span class="left" style="height: 1.3em !important">'.$ip.'</span>';
}
}
$tmp->secondaryIp = $secondary_ips;
$tmp->group = groups_get_name($agent['id_grupo']);
$secondary_groups = enterprise_hook('agents_get_secondary_groups', [$id]);
if (empty($secondary_groups['for_select']) === true) {
$sec_group_data = '<em>'.__('N/A').'</em>';
} else {
$sec_group = [];
foreach ($secondary_groups['for_select'] as $name) {
$sec_group[] = $name;
}
$sec_group_data = implode(', ', $sec_group);
}
$tmp->secondaryGroups = $sec_group_data;
$tmp->os = ui_print_os_icon(
$agent['id_os'],
false,
true,
true,
false,
false,
false,
['class' => 'main_menu_icon invert_filter']
);
$interval = human_time_description_raw($agent['intervalo'], false, 'large');
$last_contact = ui_print_timestamp($agent['ultimo_contacto'], true);
// $last_contact .= ' / '.date_w_fixed_tz($agent['ultimo_contacto_remoto']);
$last_status_change_agent = agents_get_last_status_change($agent['id_agente']);
$time_elapsed = !empty($last_status_change_agent) ? human_time_comparation($last_status_change_agent) : '<em>'.__('N/A').'</em>';
$sql_fields = 'SELECT tcf.name, tcd.description, tcf.is_password_type
FROM tagent_custom_fields tcf
INNER JOIN tagent_custom_data tcd ON tcd.id_field=tcf.id_field
WHERE tcd.id_agent='.$id.' AND tcd.description!=""';
$field_result = db_get_all_rows_sql($sql_fields);
$custom_fields_names = '';
$custom_fields_values = '';
foreach ($field_result as $field) {
$field_name = str_replace(' ', '&nbsp;', io_safe_output($field['name']));
$custom_fields_names .= '<span class="right" style="height: 1.3em !important">'.$field_name.'</span>';
$description = $field['description'];
$password_length = strlen(io_safe_output($field['description']));
$asterisks = '';
if ((int) $field['is_password_type'] === 1) {
for ($i = 0; $i < $password_length; $i++) {
$asterisks .= '&#9679;';
}
$description = $asterisks;
}
$custom_fields_values .= '<span class="left" style="height: 1.3em !important">'.$description.'</span>';
}
$tmp->description = $agent['comentarios'];
$tmp->interval = $interval;
$tmp->lastContact = $last_contact;
$tmp->lastStatusChange = $time_elapsed;
$tmp->customFields = $custom_fields_names;
$tmp->valuesCustomFields = $custom_fields_values;
$carry[] = $tmp;
return $carry;
},
[]
);
// Datatables format: RecordsTotal && recordsfiltered.
echo json_encode(
[
'data' => $data,
'recordsTotal' => $count,
'recordsFiltered' => $count,
]
);
// Capture output.
$response = ob_get_clean();
} catch (\Exception $e) {
echo json_encode(['error' => $e->getMessage()]);
exit;
}
// If not valid, show error with issue.
json_decode($response);
if (json_last_error() == JSON_ERROR_NONE) {
// If valid dump.
echo $response;
} else {
echo json_encode(
['error' => $response]
);
}
return;
}
return; return;
} }
@ -116,13 +267,8 @@ global $config;
check_login(); check_login();
$is_metaconsole = is_metaconsole(); $is_metaconsole = is_metaconsole();
if ($is_metaconsole === true) {
open_meta_frame();
}
if (! check_acl($config['id_user'], 0, 'AR') && ! check_acl($config['id_user'], 0, 'AW')) { if (! check_acl($config['id_user'], 0, 'AR') && ! check_acl($config['id_user'], 0, 'AW')) {
db_pandora_audit( db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION, AUDIT_LOG_ACL_VIOLATION,
@ -135,6 +281,9 @@ if (! check_acl($config['id_user'], 0, 'AR') && ! check_acl($config['id_user'],
require_once $config['homedir'].'/include/functions_users.php'; require_once $config['homedir'].'/include/functions_users.php';
require_once $config['homedir'].'/include/functions_inventory.php'; require_once $config['homedir'].'/include/functions_inventory.php';
// TODO: Button
// echo "<a href='javascript: get_csv_url(\"".$inventory_module.'",'.$inventory_id_group.','.'"'.$inventory_search_string.'",'.$utimestamp.','.'"'.$inventory_agent.'",'.$order_by_agent.")'><span>".__('Export this list to CSV').'</span>'.html_print_image('images/csv.png', true, ['title' => __('Export this list to CSV')]).'</a>';
// Header. // Header.
ui_print_standard_header( ui_print_standard_header(
__('Inventory'), __('Inventory'),
@ -160,7 +309,7 @@ if (strlen($inventory_agent) == 0) {
$inventory_id_agent = 0; $inventory_id_agent = 0;
} }
$inventory_module = get_parameter('module_inventory_general_view'); $inventory_module = get_parameter('module_inventory_general_view', 'basic');
$inventory_id_group = (int) get_parameter('id_group'); $inventory_id_group = (int) get_parameter('id_group');
$inventory_search_string = (string) get_parameter('search_string'); $inventory_search_string = (string) get_parameter('search_string');
$order_by_agent = (bool) get_parameter('order_by_agent'); $order_by_agent = (bool) get_parameter('order_by_agent');
@ -333,17 +482,15 @@ if (is_metaconsole() === true) {
$filteringFunction = ''; $filteringFunction = '';
} }
echo '<form method="POST" action="index.php?sec=estado&sec2=operation/inventory/inventory" name="form_inventory">'; $searchForm = '<form method="post" action="index.php?sec=estado&sec2=operation/inventory/inventory" name="form_inventory">';
$table = new stdClass(); $table = new stdClass();
$table->width = '100%'; $table->width = '100%';
$table->class = 'databox filters';
$table->size = []; $table->size = [];
$table->size[0] = '120px'; $table->size[0] = '33%';
$table->cellpadding = 0; $table->size[1] = '33%';
$table->cellspacing = 0; $table->size[2] = '33%';
$table->class = 'filter-table-adv';
$table->data = []; $table->data = [];
$table->rowspan[0][4] = 2;
if ($is_metaconsole === true) { if ($is_metaconsole === true) {
// Node select. // Node select.
@ -352,37 +499,61 @@ if ($is_metaconsole === true) {
$nodes[$row['id']] = $row['server_name']; $nodes[$row['id']] = $row['server_name'];
} }
$table->data[-1][0] = '<strong>'.__('Server').'</strong>'; $table->data[-1][0] = html_print_label_input_block(
$table->data[-1][1] = html_print_select($nodes, 'id_server', $id_server, $filteringFunction, __('All'), 0, true, false, true, '', false, 'min-width: 250px; max-width: 300px;'); __('Server'),
html_print_select(
$nodes,
'id_server',
$id_server,
$filteringFunction,
__('All'),
0,
true,
false,
true,
'',
false,
'width:100%;'
)
);
} }
// Group select. // Group select.
$table->data[0][0] = '<strong>'.__('Group').'</strong>'; $table->data[0][0] = html_print_label_input_block(
__('Group'),
$table->data[0][1] = '<div class="w250px">'; html_print_select_groups(
$table->data[0][1] .= html_print_select_groups( $config['id_user'],
$config['id_user'], $access,
$access, true,
true, 'id_group',
'id_group', $inventory_id_group,
$inventory_id_group, $filteringFunction,
$filteringFunction, '',
'', '1',
'1', true,
true, false,
false, true,
true, '',
'', false
false )
); );
$table->data[0][1] .= '</div>';
// Module selected.
$table->data[0][2] = '<strong>'.__('Module').'</strong>';
if ($is_metaconsole === true) { if ($is_metaconsole === true) {
array_unshift($fields, __('All')); array_unshift($fields, __('All'));
$table->data[0][3] = html_print_select($fields, 'module_inventory_general_view', $inventory_module, $filteringFunction, __('Basic info'), 'basic', true, false, true, '', false, 'min-width: 194px; max-width: 200px;'); $module_input = html_print_select(
$fields,
'module_inventory_general_view',
$inventory_module,
$filteringFunction,
__('Basic info'),
'basic',
true,
false,
true,
'',
false,
'width:100%;'
);
} else { } else {
$sql = 'SELECT name as indexname, name $sql = 'SELECT name as indexname, name
FROM tmodule_inventory, tagent_module_inventory FROM tmodule_inventory, tagent_module_inventory
@ -404,13 +575,22 @@ if ($is_metaconsole === true) {
} }
array_unshift($fields, __('All')); array_unshift($fields, __('All'));
$table->data[0][3] = html_print_select($fields, 'module_inventory_general_view', $inventory_module, '', __('Basic info'), 'basic', true, false, false); $module_input = html_print_select(
$fields,
'module_inventory_general_view',
$inventory_module,
'',
__('Basic info'),
'basic',
true,
false,
false,
'',
false,
'width:100%;'
);
} }
// Button of submit.
$table->data[0][4] = html_print_submit_button(__('Search'), 'submit_filter', $noFilterSelected, "class='sub search'", true);
// Agent select. // Agent select.
if ($is_metaconsole === false) { if ($is_metaconsole === false) {
$agents = []; $agents = [];
@ -436,8 +616,6 @@ if ($is_metaconsole === false) {
} }
} }
$table->data[1][0] = '<strong>'.__('Agent').'</strong>';
$params = []; $params = [];
$params['return'] = true; $params['return'] = true;
$params['show_helptip'] = true; $params['show_helptip'] = true;
@ -459,27 +637,109 @@ if ($is_metaconsole === true) {
$params['metaconsole_enabled'] = true; $params['metaconsole_enabled'] = true;
} }
$table->data[1][1] = ui_print_agent_autocomplete_input($params); $table->data[0][1] = html_print_label_input_block(
__('Agent'),
ui_print_agent_autocomplete_input($params)
);
// Module selected.
$table->data[0][2] = html_print_label_input_block(
__('Module'),
$module_input
);
// String search_string. // String search_string.
$table->data[1][2] = '<strong>'.__('Search').'</strong>'; $table->data[1][0] = html_print_label_input_block(
$table->data[1][3] = html_print_input_text('search_string', $inventory_search_string, '', 25, 0, true, false, false, '', '', $filteringFunction, 'off', false, $filteringFunction); __('Search'),
html_print_input_text(
'search_string',
$inventory_search_string,
'',
25,
0,
true,
false,
false,
'',
'',
$filteringFunction,
'off',
false,
$filteringFunction
)
);
// Order by agent filter.
$table->data[1][1] = html_print_label_input_block(
__('Order by agent'),
html_print_checkbox(
'order_by_agent',
1,
$order_by_agent,
true,
false,
''
)
);
// Date filter. In Metaconsole has not reason for show. // Date filter. In Metaconsole has not reason for show.
if (is_metaconsole() === false) { if (is_metaconsole() === false) {
$table->data[2][0] = '<strong>'.__('Date').'</strong>'; $dates = inventory_get_dates(
$dates = inventory_get_dates($inventory_module, $inventory_agent, $inventory_id_group); $inventory_module,
$table->data[2][1] = html_print_select($dates, 'utimestamp', $utimestamp, '', __('Last'), 0, true); $inventory_agent,
$inventory_id_group
);
$table->data[1][2] = html_print_label_input_block(
__('Date'),
html_print_select(
$dates,
'utimestamp',
$utimestamp,
'',
__('Last'),
0,
true,
false,
true,
'',
false,
'width:100%;'
)
);
} }
// Order by agent filter. $searchForm .= html_print_table($table, true);
$table->data[2][2] = '<strong>'.__('Order by agent').'</strong>'; $searchForm .= html_print_div(
[
'class' => 'action-buttons',
'content' => html_print_submit_button(
__('Filter'),
'srcbutton',
false,
[
'icon' => 'search',
'mode' => 'mini',
],
true
),
],
true
);
$table->data[2][3] = html_print_checkbox('order_by_agent', 1, $order_by_agent, true, false, ''); $searchForm .= '</form>';
html_print_table($table); ui_toggle(
$searchForm,
echo '</form>'; '<span class="subsection_header_title">'.__('Filters').'</span>',
'filter_form',
'',
true,
false,
'',
'white-box-content',
'box-flat white_table_graph fixed_filter_bar'
);
if ($is_metaconsole === false) { if ($is_metaconsole === false) {
// Single agent selected. // Single agent selected.
@ -507,9 +767,6 @@ if ($is_metaconsole === false) {
return; return;
} }
echo "<div id='url_csv' style='width: ".$table->width.";' class='inventory_table_buttons'>";
echo "<a href='javascript: get_csv_url(\"".$inventory_module.'",'.$inventory_id_group.','.'"'.$inventory_search_string.'",'.$utimestamp.','.'"'.$inventory_agent.'",'.$order_by_agent.")'><span>".__('Export this list to CSV').'</span>'.html_print_image('images/csv.png', true, ['title' => __('Export this list to CSV')]).'</a>';
echo '</div>';
echo "<div id='loading_url' style='display: none; width: ".$table->width."; text-align: right;'>".html_print_image('images/spinner.gif', true).'</div>'; echo "<div id='loading_url' style='display: none; width: ".$table->width."; text-align: right;'>".html_print_image('images/spinner.gif', true).'</div>';
?> ?>
<script type="text/javascript"> <script type="text/javascript">
@ -544,9 +801,9 @@ if ($is_metaconsole === false) {
if ($inventory_module !== 'basic') { if ($inventory_module !== 'basic') {
if ($order_by_agent === true) { if ($order_by_agent === true) {
foreach ($rows as $agent_rows) { foreach ($rows as $agent_rows) {
foreach ($agent_rows['row'] as $row) { $data = [];
$data = []; $modules = '';
foreach ($agent_rows['row'] as $key_row => $row) {
$columns = explode(';', io_safe_output($row['data_format'])); $columns = explode(';', io_safe_output($row['data_format']));
array_push($columns, 'Timestamp'); array_push($columns, 'Timestamp');
@ -570,7 +827,7 @@ if ($is_metaconsole === false) {
} }
} }
$id_table = 'id_'.$row['id_module_inventory']; $id_table = 'id_'.$key_row.'_'.$row['id_module_inventory'].'_'.$row['id_agente'];
$table = ui_print_datatable( $table = ui_print_datatable(
[ [
@ -582,7 +839,7 @@ if ($is_metaconsole === false) {
'no_sortable_columns' => [], 'no_sortable_columns' => [],
'data_element' => $data, 'data_element' => $data,
'searching' => true, 'searching' => true,
'dom_elements' => 'lftip', 'dom_elements' => 'ftip',
'order' => [ 'order' => [
'field' => $columns[0], 'field' => $columns[0],
'direction' => 'asc', 'direction' => 'asc',
@ -629,106 +886,107 @@ if ($is_metaconsole === false) {
); );
} }
} else { } else {
$count_rows = count($rows);
foreach ($rows as $module_rows) { foreach ($rows as $module_rows) {
$agent = ''; $agent = '';
$data = [];
foreach ($module_rows as $row) { foreach ($module_rows as $row) {
$columns = explode(';', io_safe_output($row['data_format'])); $columns = explode(';', io_safe_output($row['data_format']));
array_push($columns, 'Timestamp'); array_push($columns, 'Timestamp');
$data = []; array_push($columns, 'Agent');
$data_explode = explode(PHP_EOL, $row['data']); // Exclude results don't match filter.
foreach ($data_explode as $values) { if ($inventory_search_string && preg_match('/'.io_safe_output($inventory_search_string).'/', ($row['data'])) == 0) {
// Exclude results don't match filter. continue;
if ($inventory_search_string && preg_match('/'.io_safe_output($inventory_search_string).'/', ($values)) == 0) { }
continue;
$data_tmp = [];
if ($row['data'] !== '') {
$values_explode = explode(';', io_safe_output($row['data']));
foreach ($values_explode as $key => $value) {
$data_tmp[$columns[$key]] = $value;
} }
$data_tmp = []; $data_tmp['Timestamp'] = $row['timestamp'];
if ($values !== '') { $data_tmp['Agent'] = $row['name_agent'];
$values_explode = explode(';', io_safe_output($values)); array_push($data, $data_tmp);
foreach ($values_explode as $key => $value) {
$data_tmp[$columns[$key]] = $value;
}
$data_tmp['Timestamp'] = $row['timestamp'];
array_push($data, $data_tmp);
}
} }
$id_table = 'id_'.$row['id_module_inventory']; $id_table = 'id_'.$row['id_module_inventory'];
$table = ui_print_datatable(
[
'id' => $id_table,
'class' => 'info_table w100p',
'style' => 'width: 99%',
'columns' => $columns,
'column_names' => $columns,
'no_sortable_columns' => [],
'data_element' => $data,
'searching' => true,
'dom_elements' => 'lftip',
'order' => [
'field' => $columns[0],
'direction' => 'asc',
],
'zeroRecords' => __('No inventory found'),
'emptyTable' => __('No inventory found'),
'return' => true,
'default_pagination' => 10,
'no_sortable_columns' => [-1],
]
);
$agent .= ui_toggle(
$table,
'<span class="title-blue">'.$row['name_agent'].'</span>',
'',
'',
true,
true,
'',
'white-box-content w100p',
'box-shadow white_table_graph w100p',
'images/arrow_down_green.png',
'images/arrow_right_green.png',
false,
false,
false,
'',
'',
null,
null,
false,
$id_table
);
} }
ui_toggle( $table = ui_print_datatable(
$agent, [
$module_rows[0]['name'], 'id' => $id_table,
'', 'class' => 'info_table w100p',
'', 'style' => 'width: 99%',
false, 'columns' => $columns,
false 'column_names' => $columns,
'no_sortable_columns' => [],
'data_element' => $data,
'searching' => true,
'dom_elements' => 'ftip',
'order' => [
'field' => $columns[0],
'direction' => 'asc',
],
'zeroRecords' => __('No inventory found'),
'emptyTable' => __('No inventory found'),
'return' => true,
'no_sortable_columns' => [],
]
); );
if ($count_rows > 1) {
ui_toggle(
$table,
array_shift($module_rows)['name'],
'',
'',
false,
false
);
} else {
echo $table;
html_print_action_buttons(
'',
['type' => 'form_action']
);
}
} }
} }
} else { } else {
$id_agente = $inventory_id_agent; $id_agente = $inventory_id_agent;
$agentes = []; $agentes = [];
$data = []; $data = [];
$class = 'info_table w100p'; $class = 'info_table';
$style = 'width: 100%'; $style = 'width: 99%';
$ordering = false; $ordering = true;
$searching = false; $searching = false;
$dom = 't';
$columns = [ $columns = [
'alias',
'ip',
'secondoaryIp',
'group',
'secondaryGroups',
'description',
'os',
'interval',
'lastContact',
'lastStatusChange',
'customFields',
'valuesCustomFields',
];
$columns_names = [
__('Alias'), __('Alias'),
__('IP'), __('IP'),
__("IP's Secondary"), __('Secondary IP'),
__('Group'), __('Group'),
__('Secondary groups'), __('Secondary groups'),
__('Description'), __('Description'),
@ -739,134 +997,38 @@ if ($is_metaconsole === false) {
__('Custom fields'), __('Custom fields'),
__('Values Custom Fields'), __('Values Custom Fields'),
]; ];
if ((int) $id_agente === 0) {
$class = 'databox info_table w100p';
$style = 'width: 99%';
$ordering = true;
$searching = true;
$dom = 'lftipB';
$agentes = db_get_all_rows_sql('SELECT id_agente FROM tagente');
} else {
array_push($agentes, $id_agente);
}
foreach ($agentes as $id) { ui_print_datatable(
if ((int) $id_agente === 0) {
$id = $id['id_agente'];
}
$agent = db_get_row('tagente', 'id_agente', $id);
$ip = '<em>'.__('N/A').'</em>';
if (empty($agent['direccion']) === false) {
$ip = $agent['direccion'];
}
$secondary_ips = '';
foreach (agents_get_addresses($id) as $ip) {
if ($ip !== $agent['direccion']) {
$secondary_ips .= '<span class="left" style="height: 1.3em !important">'.$ip.'</span>';
}
}
$group = groups_get_name($agent['id_grupo']);
$secondary_groups = enterprise_hook('agents_get_secondary_groups', [$id]);
if (empty($secondary_groups['for_select']) === true) {
$sec_group_data = '<em>'.__('N/A').'</em>';
} else {
$sec_group = [];
foreach ($secondary_groups['for_select'] as $name) {
$sec_group[] = $name;
}
$sec_group_data = implode(', ', $sec_group);
}
$os = ui_print_os_icon($agent['id_os'], false, true).' ';
$os .= io_safe_output(get_os_name($agent['id_os'])).' '.io_safe_output($agent['os_version']);
$interval = human_time_description_raw($agent['intervalo'], false, 'large');
$last_contact = ui_print_timestamp($agent['ultimo_contacto'], true);
// $last_contact .= ' / '.date_w_fixed_tz($agent['ultimo_contacto_remoto']);
$last_status_change_agent = agents_get_last_status_change($agent['id_agente']);
$time_elapsed = !empty($last_status_change_agent) ? human_time_comparation($last_status_change_agent) : '<em>'.__('N/A').'</em>';
$sql_fields = 'SELECT tcf.name, tcd.description, tcf.is_password_type
FROM tagent_custom_fields tcf
INNER JOIN tagent_custom_data tcd ON tcd.id_field=tcf.id_field
WHERE tcd.id_agent='.$id.' AND tcd.description!=""';
$field_result = db_get_all_rows_sql($sql_fields);
$custom_fields_names = '';
$custom_fields_values = '';
foreach ($field_result as $field) {
$field_name = str_replace(' ', '&nbsp;', io_safe_output($field['name']));
$custom_fields_names .= '<span class="right" style="height: 1.3em !important">'.$field_name.'</span>';
$description = $field['description'];
$password_length = strlen(io_safe_output($field['description']));
$asterisks = '';
if ((int) $field['is_password_type'] === 1) {
for ($i = 0; $i < $password_length; $i++) {
$asterisks .= '&#9679;';
}
$description = $asterisks;
}
$custom_fields_values .= '<span class="left" style="height: 1.3em !important">'.$description.'</span>';
}
$data_tmp = [
__('Alias') => $agent['alias'],
__('IP') => $ip,
__("IP's Secondary") => $secondary_ips,
__('Group') => $group,
__('Secondary groups') => $sec_group_data,
__('Description') => $agent['comentarios'],
__('OS') => $os,
__('Interval') => $interval,
__('Last contact') => $last_contact,
__('Last status change') => $time_elapsed,
__('Custom fields') => $custom_fields_names,
__('Values Custom Fields') => $custom_fields_values,
];
array_push($data, $data_tmp);
}
$table = ui_print_datatable(
[ [
'id' => 'basic_info', 'id' => 'basic_info',
'class' => $class, 'class' => $class,
'style' => $style, 'style' => $style,
'columns' => $columns, 'columns' => $columns,
'column_names' => $columns, 'column_names' => $columns_names,
'ordering' => $ordering, 'ordering' => $ordering,
'data_element' => $data, 'searching' => $searching,
'searching' => $searching, 'order' => [
'dom_elements' => $dom,
'order' => [
'field' => $columns[0], 'field' => $columns[0],
'direction' => 'asc', 'direction' => 'asc',
], ],
'zeroRecords' => __('Agent info not found'), 'ajax_url' => 'operation/inventory/inventory',
'emptyTable' => __('Agent info not found'), 'ajax_data' => [
'default_pagination' => 10, 'get_data_basic_info' => 1,
'return' => true, 'id_agent' => $id_agente,
],
'zeroRecords' => __('Agent info not found'),
'emptyTable' => __('Agent info not found'),
'return' => false,
] ]
); );
if ((int) $id_agente === 0) {
echo $table;
} else {
echo '<div class="databox">'.$table.'</div>';
}
}
// Metaconsole. html_print_action_buttons(
'',
['type' => 'form_action']
);
}
} else { } else {
// Metaconsole.
if ($inventory_module !== 'basic') { if ($inventory_module !== 'basic') {
if ($order_by_agent === true) { if ($order_by_agent === true) {
$count_nodos_tmp = []; $count_nodos_tmp = [];
@ -1103,7 +1265,7 @@ if ($is_metaconsole === false) {
$columns = [ $columns = [
__('Alias'), __('Alias'),
__('IP'), __('IP'),
__("IP's Secondary"), __('Secondary IP'),
__('Group'), __('Group'),
__('Secondary groups'), __('Secondary groups'),
__('Description'), __('Description'),
@ -1225,7 +1387,7 @@ if ($is_metaconsole === false) {
$data_tmp = [ $data_tmp = [
__('Alias') => $agent['alias'], __('Alias') => $agent['alias'],
__('IP') => $ip, __('IP') => $ip,
__("IP's Secondary") => $secondary_ips, __('Secondary IP') => $secondary_ips,
__('Group') => $group, __('Group') => $group,
__('Secondary groups') => $sec_group_data, __('Secondary groups') => $sec_group_data,
__('Description') => $agent['comentarios'], __('Description') => $agent['comentarios'],
@ -1272,8 +1434,6 @@ if ($is_metaconsole === false) {
echo '<div class="databox">'.$table.'</div>'; echo '<div class="databox">'.$table.'</div>';
} }
} }
close_meta_frame();
} }
ui_require_jquery_file('pandora.controls'); ui_require_jquery_file('pandora.controls');

View File

@ -138,8 +138,6 @@ if ($strict_acl === false) {
} }
} }
enterprise_hook('open_meta_frame');
$header_title = __('Tree view'); $header_title = __('Tree view');
$header_sub_title = __('Sort the agents by %s'); $header_sub_title = __('Sort the agents by %s');
switch ($tab) { switch ($tab) {
@ -206,16 +204,10 @@ $table->data = [];
$table->rowspan = []; $table->rowspan = [];
$table->size = []; $table->size = [];
// if (is_metaconsole() === true) {
// $table->width = '96%';
// $table->cellpadding = '0';
// $table->cellspacing = '0';
// $table->class = 'databox_filters';
// $table->styleTable = 'padding:0px;margin-bottom:0px; ';
// }
// Agent filter. // Agent filter.
$agent_status_arr = []; $agent_status_arr = [];
$agent_status_arr[AGENT_STATUS_ALL] = __('All'); $agent_status_arr[AGENT_STATUS_ALL] = __('All');
// Default. // Default.
$agent_status_arr[AGENT_STATUS_NORMAL] = __('Normal'); $agent_status_arr[AGENT_STATUS_NORMAL] = __('Normal');
$agent_status_arr[AGENT_STATUS_WARNING] = __('Warning'); $agent_status_arr[AGENT_STATUS_WARNING] = __('Warning');
@ -360,23 +352,17 @@ $form_html .= html_print_div(
); );
$form_html .= '</form>'; $form_html .= '</form>';
if (is_metaconsole() === true) { ui_toggle(
echo "<div class='view_tree'>"; $form_html,
ui_toggle($form_html, '<span class="subsection_header_title">'.__('Show Options').'</span>'); '<span class="subsection_header_title">'.__('Tree search').'</span>',
echo '<br>'; 'tree_search',
} else { false,
ui_toggle( true,
$form_html, false,
'<span class="subsection_header_title">'.__('Tree search').'</span>', '',
'tree_search', 'white-box-content',
false, 'box-flat white_table_graph fixed_filter_bar'
true, );
false,
'',
'white-box-content',
'box-flat white_table_graph fixed_filter_bar'
);
}
html_print_input_hidden('group-id', $group_id); html_print_input_hidden('group-id', $group_id);
html_print_input_hidden('tag-id', $tag_id); html_print_input_hidden('tag-id', $tag_id);
@ -392,16 +378,7 @@ if (is_metaconsole() === true) {
} }
ui_print_spinner(__('Loading')); ui_print_spinner(__('Loading'));
/*
html_print_image(
'images/spinner.gif',
false,
[
'class' => 'loading_tree',
'style' => 'display: none;',
]
);
*/
html_print_div( html_print_div(
[ [
'id' => 'tree-controller-recipient', 'id' => 'tree-controller-recipient',
@ -413,7 +390,6 @@ if (is_metaconsole() === true) {
echo '</div>'; echo '</div>';
} }
enterprise_hook('close_meta_frame');
$infoHeadTitle = 'Sombra oscura'; $infoHeadTitle = 'Sombra oscura';
?> ?>

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
%define httpd_name httpd %define httpd_name httpd
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name apache2 %define httpd_name apache2

View File

@ -557,7 +557,8 @@ CREATE TABLE IF NOT EXISTS `talert_template_modules` (
FOREIGN KEY (`id_alert_template`) REFERENCES talert_templates(`id`) FOREIGN KEY (`id_alert_template`) REFERENCES talert_templates(`id`)
ON DELETE CASCADE ON UPDATE CASCADE, ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE (`id_agent_module`, `id_alert_template`, `id_policy_alerts`), UNIQUE (`id_agent_module`, `id_alert_template`, `id_policy_alerts`),
INDEX force_execution (`force_execution`) INDEX force_execution (`force_execution`),
INDEX idx_disabled (disabled)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
-- ----------------------------------------------------- -- -----------------------------------------------------
@ -719,7 +720,8 @@ CREATE TABLE IF NOT EXISTS `tevento` (
PRIMARY KEY (`id_evento`), PRIMARY KEY (`id_evento`),
KEY `idx_agente` (`id_agente`), KEY `idx_agente` (`id_agente`),
KEY `idx_agentmodule` (`id_agentmodule`), KEY `idx_agentmodule` (`id_agentmodule`),
KEY `idx_utimestamp` USING BTREE (`utimestamp`) KEY `idx_utimestamp` USING BTREE (`utimestamp`),
INDEX `agente_modulo_estado`(`estado`, `id_agentmodule`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
-- Criticity: 0 - Maintance (grey) -- Criticity: 0 - Maintance (grey)
-- Criticity: 1 - Informational (blue) -- Criticity: 1 - Informational (blue)

View File

@ -1165,6 +1165,7 @@ INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (1, 'Monitoring&#x
INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (2, 'Monitoring&#x20;Report&#x20;Modules', 'select&#x20;&#40;select&#x20;tagente.alias&#x20;from&#x20;tagente&#x20;where&#x20;tagente.id_agente&#x20;=&#x20;tagente_modulo.id_agente&#41;&#x20;as&#x20;agent_nombre,&#x20;nombre&#x20;,&#x20;&#40;select&#x20;tmodule_group.name&#x20;from&#x20;tmodule_group&#x20;where&#x20;tmodule_group.id_mg&#x20;=&#x20;tagente_modulo.id_module_group&#41;&#x20;as&#x20;module_group,&#x20;module_interval&#x20;from&#x20;tagente_modulo&#x20;where&#x20;delete_pending&#x20;=&#x20;0&#x20;order&#x20;by&#x20;nombre;'); INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (2, 'Monitoring&#x20;Report&#x20;Modules', 'select&#x20;&#40;select&#x20;tagente.alias&#x20;from&#x20;tagente&#x20;where&#x20;tagente.id_agente&#x20;=&#x20;tagente_modulo.id_agente&#41;&#x20;as&#x20;agent_nombre,&#x20;nombre&#x20;,&#x20;&#40;select&#x20;tmodule_group.name&#x20;from&#x20;tmodule_group&#x20;where&#x20;tmodule_group.id_mg&#x20;=&#x20;tagente_modulo.id_module_group&#41;&#x20;as&#x20;module_group,&#x20;module_interval&#x20;from&#x20;tagente_modulo&#x20;where&#x20;delete_pending&#x20;=&#x20;0&#x20;order&#x20;by&#x20;nombre;');
INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (3, 'Monitoring&#x20;Report&#x20;Alerts', 'select&#x20;t1.alias&#x20;as&#x20;agent_name,&#x20;t2.nombre&#x20;as&#x20;module_name,&#x20;&#40;select&#x20;talert_templates.name&#x20;from&#x20;talert_templates&#x20;where&#x20;talert_templates.id&#x20;=&#x20;t3.id_alert_template&#41;&#x20;as&#x20;template,&#x20;&#40;select&#x20;group_concat&#40;t02.name&#41;&#x20;from&#x20;talert_template_module_actions&#x20;as&#x20;t01&#x20;inner&#x20;join&#x20;talert_actions&#x20;as&#x20;t02&#x20;on&#x20;t01.id_alert_action&#x20;=&#x20;t02.id&#x20;where&#x20;t01.id_alert_template_module&#x20;=&#x20;t3.id&#x20;group&#x20;by&#x20;t01.id_alert_template_module&#41;&#x20;as&#x20;actions&#x20;from&#x20;tagente&#x20;as&#x20;t1&#x20;inner&#x20;join&#x20;tagente_modulo&#x20;as&#x20;t2&#x20;on&#x20;t1.id_agente&#x20;=&#x20;t2.id_agente&#x20;inner&#x20;join&#x20;talert_template_modules&#x20;as&#x20;t3&#x20;on&#x20;t2.id_agente_modulo&#x20;=&#x20;t3.id_agent_module&#x20;order&#x20;by&#x20;agent_name,&#x20;module_name;'); INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (3, 'Monitoring&#x20;Report&#x20;Alerts', 'select&#x20;t1.alias&#x20;as&#x20;agent_name,&#x20;t2.nombre&#x20;as&#x20;module_name,&#x20;&#40;select&#x20;talert_templates.name&#x20;from&#x20;talert_templates&#x20;where&#x20;talert_templates.id&#x20;=&#x20;t3.id_alert_template&#41;&#x20;as&#x20;template,&#x20;&#40;select&#x20;group_concat&#40;t02.name&#41;&#x20;from&#x20;talert_template_module_actions&#x20;as&#x20;t01&#x20;inner&#x20;join&#x20;talert_actions&#x20;as&#x20;t02&#x20;on&#x20;t01.id_alert_action&#x20;=&#x20;t02.id&#x20;where&#x20;t01.id_alert_template_module&#x20;=&#x20;t3.id&#x20;group&#x20;by&#x20;t01.id_alert_template_module&#41;&#x20;as&#x20;actions&#x20;from&#x20;tagente&#x20;as&#x20;t1&#x20;inner&#x20;join&#x20;tagente_modulo&#x20;as&#x20;t2&#x20;on&#x20;t1.id_agente&#x20;=&#x20;t2.id_agente&#x20;inner&#x20;join&#x20;talert_template_modules&#x20;as&#x20;t3&#x20;on&#x20;t2.id_agente_modulo&#x20;=&#x20;t3.id_agent_module&#x20;order&#x20;by&#x20;agent_name,&#x20;module_name;');
INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (4, 'Group&#x20;view', 'select&#x20;t1.nombre,&#x20;&#40;select&#x20;count&#40;t3.id_agente&#41;&#x20;from&#x20;tagente&#x20;as&#x20;t3&#x20;where&#x20;t1.id_grupo&#x20;=&#x20;t3.id_grupo&#41;&#x20;as&#x20;agents,&#x20;&#40;SELECT&#x20;COUNT&#40;t4.id_agente&#41;&#x20;FROM&#x20;tagente&#x20;as&#x20;t4&#x20;WHERE&#x20;t4.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;t4.disabled&#x20;=&#x20;0&#x20;AND&#x20;t4.ultimo_contacto&#x20;&lt;&#x20;NOW&#40;&#41;&#x20;-&#x20;&#40;intervalo&#x20;/&#x20;&#40;1/2&#41;&#41;&#41;&#x20;as&#x20;agent_unknown,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente.id_agente&#x20;=&#x20;tagente_estado.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;utimestamp&#x20;&gt;&#x20;0&#x20;AND&#x20;tagente_modulo.id_tipo_modulo&#x20;NOT&#x20;IN&#40;21,22,23,24,100&#41;&#x20;AND&#x20;&#40;UNIX_TIMESTAMP&#40;NOW&#40;&#41;&#41;&#x20;-&#x20;tagente_estado.utimestamp&#41;&#x20;&gt;=&#x20;&#40;tagente_estado.current_interval&#x20;/&#x20;&#40;1/2&#41;&#41;&#41;&#x20;as&#x20;monitor_unknow,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente.id_agente&#x20;=&#x20;tagente_estado.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente_modulo.id_tipo_modulo&#x20;NOT&#x20;IN&#x20;&#40;21,22,23,24&#41;&#x20;AND&#x20;utimestamp&#x20;=&#x20;0&#41;&#x20;as&#x20;monitor_no_init,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente_estado.id_agente&#x20;=&#x20;tagente.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;estado&#x20;=&#x20;0&#x20;AND&#x20;&#40;&#40;UNIX_TIMESTAMP&#40;NOW&#40;&#41;&#41;&#x20;-&#x20;tagente_estado.utimestamp&#41;&#x20;&lt;&#x20;&#40;tagente_estado.current_interval&#x20;/&#x20;&#40;1/2&#41;&#41;&#x20;OR&#x20;&#40;tagente_modulo.id_tipo_modulo&#x20;IN&#40;21,22,23,24,100&#41;&#41;&#41;&#x20;AND&#x20;&#40;utimestamp&#x20;&gt;&#x20;0&#x20;OR&#x20;&#40;tagente_modulo.id_tipo_modulo&#x20;IN&#40;21,22,23,24&#41;&#41;&#41;&#41;&#x20;as&#x20;monitor_ok,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente_estado.id_agente&#x20;=&#x20;tagente.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;estado&#x20;=&#x20;1&#x20;AND&#x20;&#40;&#40;UNIX_TIMESTAMP&#40;NOW&#40;&#41;&#41;&#x20;-&#x20;tagente_estado.utimestamp&#41;&#x20;&lt;&#x20;&#40;tagente_estado.current_interval&#x20;/&#x20;&#40;1/2&#41;&#41;&#x20;OR&#x20;&#40;tagente_modulo.id_tipo_modulo&#x20;IN&#40;21,22,23,24,100&#41;&#41;&#41;&#x20;AND&#x20;utimestamp&#x20;&gt;&#x20;0&#41;&#x20;as&#x20;monitor_critical,&#x20;&#40;SELECT&#x20;COUNT&#40;talert_template_modules.id&#41;&#x20;FROM&#x20;talert_template_modules,&#x20;tagente_modulo,&#x20;tagente_estado,&#x20;tagente&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente_modulo.id_agente&#x20;=&#x20;tagente.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;talert_template_modules.id_agent_module&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;times_fired&#x20;&gt;&#x20;0&#41;&#x20;as&#x20;monitor_alert_fired&#x20;from&#x20;tgrupo&#x20;as&#x20;t1&#x20;where&#x20;0&#x20;&lt;&#x20;&#40;select&#x20;count&#40;t2.id_agente&#41;&#x20;from&#x20;tagente&#x20;as&#x20;t2&#x20;where&#x20;t1.id_grupo&#x20;=&#x20;t2.id_grupo&#41;'); INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (4, 'Group&#x20;view', 'select&#x20;t1.nombre,&#x20;&#40;select&#x20;count&#40;t3.id_agente&#41;&#x20;from&#x20;tagente&#x20;as&#x20;t3&#x20;where&#x20;t1.id_grupo&#x20;=&#x20;t3.id_grupo&#41;&#x20;as&#x20;agents,&#x20;&#40;SELECT&#x20;COUNT&#40;t4.id_agente&#41;&#x20;FROM&#x20;tagente&#x20;as&#x20;t4&#x20;WHERE&#x20;t4.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;t4.disabled&#x20;=&#x20;0&#x20;AND&#x20;t4.ultimo_contacto&#x20;&lt;&#x20;NOW&#40;&#41;&#x20;-&#x20;&#40;intervalo&#x20;/&#x20;&#40;1/2&#41;&#41;&#41;&#x20;as&#x20;agent_unknown,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente.id_agente&#x20;=&#x20;tagente_estado.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;utimestamp&#x20;&gt;&#x20;0&#x20;AND&#x20;tagente_modulo.id_tipo_modulo&#x20;NOT&#x20;IN&#40;21,22,23,24,100&#41;&#x20;AND&#x20;&#40;UNIX_TIMESTAMP&#40;NOW&#40;&#41;&#41;&#x20;-&#x20;tagente_estado.utimestamp&#41;&#x20;&gt;=&#x20;&#40;tagente_estado.current_interval&#x20;/&#x20;&#40;1/2&#41;&#41;&#41;&#x20;as&#x20;monitor_unknow,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente.id_agente&#x20;=&#x20;tagente_estado.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente_modulo.id_tipo_modulo&#x20;NOT&#x20;IN&#x20;&#40;21,22,23,24&#41;&#x20;AND&#x20;utimestamp&#x20;=&#x20;0&#41;&#x20;as&#x20;monitor_no_init,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente_estado.id_agente&#x20;=&#x20;tagente.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;estado&#x20;=&#x20;0&#x20;AND&#x20;&#40;&#40;UNIX_TIMESTAMP&#40;NOW&#40;&#41;&#41;&#x20;-&#x20;tagente_estado.utimestamp&#41;&#x20;&lt;&#x20;&#40;tagente_estado.current_interval&#x20;/&#x20;&#40;1/2&#41;&#41;&#x20;OR&#x20;&#40;tagente_modulo.id_tipo_modulo&#x20;IN&#40;21,22,23,24,100&#41;&#41;&#41;&#x20;AND&#x20;&#40;utimestamp&#x20;&gt;&#x20;0&#x20;OR&#x20;&#40;tagente_modulo.id_tipo_modulo&#x20;IN&#40;21,22,23,24&#41;&#41;&#41;&#41;&#x20;as&#x20;monitor_ok,&#x20;&#40;SELECT&#x20;COUNT&#40;tagente_estado.id_agente_estado&#41;&#x20;FROM&#x20;tagente_estado,&#x20;tagente,&#x20;tagente_modulo&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente_estado.id_agente&#x20;=&#x20;tagente.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;estado&#x20;=&#x20;1&#x20;AND&#x20;&#40;&#40;UNIX_TIMESTAMP&#40;NOW&#40;&#41;&#41;&#x20;-&#x20;tagente_estado.utimestamp&#41;&#x20;&lt;&#x20;&#40;tagente_estado.current_interval&#x20;/&#x20;&#40;1/2&#41;&#41;&#x20;OR&#x20;&#40;tagente_modulo.id_tipo_modulo&#x20;IN&#40;21,22,23,24,100&#41;&#41;&#41;&#x20;AND&#x20;utimestamp&#x20;&gt;&#x20;0&#41;&#x20;as&#x20;monitor_critical,&#x20;&#40;SELECT&#x20;COUNT&#40;talert_template_modules.id&#41;&#x20;FROM&#x20;talert_template_modules,&#x20;tagente_modulo,&#x20;tagente_estado,&#x20;tagente&#x20;WHERE&#x20;tagente.id_grupo&#x20;=&#x20;t1.id_grupo&#x20;AND&#x20;tagente_modulo.id_agente&#x20;=&#x20;tagente.id_agente&#x20;AND&#x20;tagente_estado.id_agente_modulo&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;tagente_modulo.disabled&#x20;=&#x20;0&#x20;AND&#x20;tagente.disabled&#x20;=&#x20;0&#x20;AND&#x20;talert_template_modules.id_agent_module&#x20;=&#x20;tagente_modulo.id_agente_modulo&#x20;AND&#x20;times_fired&#x20;&gt;&#x20;0&#41;&#x20;as&#x20;monitor_alert_fired&#x20;from&#x20;tgrupo&#x20;as&#x20;t1&#x20;where&#x20;0&#x20;&lt;&#x20;&#40;select&#x20;count&#40;t2.id_agente&#41;&#x20;from&#x20;tagente&#x20;as&#x20;t2&#x20;where&#x20;t1.id_grupo&#x20;=&#x20;t2.id_grupo&#41;');
INSERT INTO `treport_custom_sql` (`id`, `name`, `sql`) VALUES (5, 'Agent&#x20;safe&#x20;mode&#x20;not&#x20;enable', 'select&#x20;alias&#x20;from&#x20;tagente&#x20;where&#x20;safe_mode_module&#x20;=&#x20;0');
-- trecon scripts -- trecon scripts
INSERT INTO `trecon_script` (`type`,`name`,`description`,`script`,`macros`) VALUES (1, 'Discovery.Application.VMware', 'Discovery&#x20;Application&#x20;script&#x20;to&#x20;monitor&#x20;VMware&#x20;technologies&#x20;&#40;ESXi,&#x20;VCenter,&#x20;VSphere&#41;', '/usr/share/pandora_server/util/recon_scripts/vmware-plugin.pl', '{"1":{"macro":"_field1_","desc":"Configuration&#x20;file","help":"","value":"","hide":""}}'); INSERT INTO `trecon_script` (`type`,`name`,`description`,`script`,`macros`) VALUES (1, 'Discovery.Application.VMware', 'Discovery&#x20;Application&#x20;script&#x20;to&#x20;monitor&#x20;VMware&#x20;technologies&#x20;&#40;ESXi,&#x20;VCenter,&#x20;VSphere&#41;', '/usr/share/pandora_server/util/recon_scripts/vmware-plugin.pl', '{"1":{"macro":"_field1_","desc":"Configuration&#x20;file","help":"","value":"","hide":""}}');

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.769-230228 Version: 7.0NG.769-230301
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.769-230228" pandora_version="7.0NG.769-230301"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -46,7 +46,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.769"; my $pandora_version = "7.0NG.769";
my $pandora_build = "230228"; my $pandora_build = "230301";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.769"; my $pandora_version = "7.0NG.769";
my $pandora_build = "230228"; my $pandora_build = "230301";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230228 %define release 230301
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -9,7 +9,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.769" PI_VERSION="7.0NG.769"
PI_BUILD="230228" PI_BUILD="230301"
MODE=$1 MODE=$1
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then

View File

@ -35,7 +35,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.769 Build 230228"; my $version = "7.0NG.769 Build 230301";
# Pandora server configuration # Pandora server configuration
my %conf; my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv; Encode::Locale::decode_argv;
# version: define current version # version: define current version
my $version = "7.0NG.769 Build 230228"; my $version = "7.0NG.769 Build 230301";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);