2010-11-03 18:45:39 +01:00
< ? php
2019-05-28 12:13:29 +02:00
/**
* Module management .
*
* @ category Ajax library .
* @ package Pandora FMS
* @ subpackage Modules .
* @ version 1.0 . 0
* @ license See below
*
* ______ ___ _______ _______ ________
* | __ \ .-----.--.--.--| |.-----.----.-----. | ___ | | | __ |
* | __ /| _ | | _ || _ | _ | _ | | ___ | | __ |
* | ___ | | ___ . _ | __ | __ | _____ || _____ | __ | | ___ . _ | | ___ | | __ | _ | __ | _______ |
*
* ============================================================================
2020-11-27 13:52:35 +01:00
* Copyright ( c ) 2005 - 2021 Artica Soluciones Tecnologicas
2019-05-28 12:13:29 +02:00
* Please see http :// pandorafms . org for full contribution list
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
* ============================================================================
*/
// Begin.
2019-01-30 16:18:44 +01:00
if ( check_login ()) {
global $config ;
include_once $config [ 'homedir' ] . '/include/functions_agents.php' ;
include_once $config [ 'homedir' ] . '/include/functions_modules.php' ;
include_once $config [ 'homedir' ] . '/include/functions_ui.php' ;
enterprise_include_once ( 'include/functions_metaconsole.php' );
$get_plugin_macros = get_parameter ( 'get_plugin_macros' );
$search_modules = get_parameter ( 'search_modules' );
$get_module_detail = get_parameter ( 'get_module_detail' , 0 );
2020-12-09 14:05:40 +01:00
$get_module_autocomplete_input = ( bool ) get_parameter (
'get_module_autocomplete_input'
);
2019-01-30 16:18:44 +01:00
$add_module_relation = ( bool ) get_parameter ( 'add_module_relation' );
$remove_module_relation = ( bool ) get_parameter ( 'remove_module_relation' );
2020-12-09 14:05:40 +01:00
$change_module_relation_updates = ( bool ) get_parameter (
'change_module_relation_updates'
);
2019-01-30 16:18:44 +01:00
$get_id_tag = ( bool ) get_parameter ( 'get_id_tag' , 0 );
$get_type = ( bool ) get_parameter ( 'get_type' , 0 );
$list_modules = ( bool ) get_parameter ( 'list_modules' , 0 );
2020-12-09 14:05:40 +01:00
$get_agent_modules_json_by_name = ( bool ) get_parameter (
'get_agent_modules_json_by_name' ,
0
);
$get_graph_module = ( bool ) get_parameter ( 'get_graph_module' , 0 );
$get_graph_module_interfaces = ( bool ) get_parameter (
'get_graph_module_interfaces' ,
0
);
if ( $get_agent_modules_json_by_name === true ) {
2019-01-30 16:18:44 +01:00
$agent_name = get_parameter ( 'agent_name' );
$agent_id = agents_get_agent_id ( $agent_name );
$agent_modules = db_get_all_rows_sql (
2020-12-09 14:05:40 +01:00
' SELECT id_agente_modulo as id_module ,
nombre as name FROM tagente_modulo
WHERE id_agente = ' . $agent_id
2019-01-30 16:18:44 +01:00
);
echo json_encode ( $agent_modules );
return ;
}
if ( $get_plugin_macros ) {
if ( https_is_running ()) {
header ( 'Content-type: application/json' );
}
$id_plugin = get_parameter ( 'id_plugin' , 0 );
$plugin_macros = db_get_value (
'macros' ,
'tplugin' ,
'id' ,
$id_plugin
);
$macros = [];
$macros [ 'base64' ] = base64_encode ( $plugin_macros );
$macros [ 'array' ] = json_decode ( $plugin_macros , true );
echo json_encode ( $macros );
return ;
}
if ( $search_modules ) {
if ( https_is_running ()) {
header ( 'Content-type: application/json' );
}
$id_agents = json_decode ( io_safe_output ( get_parameter ( 'id_agents' )));
$filter = '%' . get_parameter ( 'q' , '' ) . '%' ;
2020-12-09 14:05:40 +01:00
$other_filter = json_decode (
io_safe_output ( get_parameter ( 'other_filter' )),
true
);
2019-05-28 12:13:29 +02:00
// TODO TAGS agents_get_modules.
2019-01-30 16:18:44 +01:00
$modules = agents_get_modules (
$id_agents ,
false ,
([ 'tagente_modulo.nombre' => $filter ] + $other_filter )
);
if ( $modules === false ) {
$modules = [];
}
$modules = array_unique ( $modules );
$modules = io_safe_output ( $modules );
echo json_encode ( $modules );
return ;
}
if ( $get_module_detail ) {
2020-12-09 14:05:40 +01:00
// This script is included manually to be
// included after jquery and avoid error.
2019-01-30 16:18:44 +01:00
ui_include_time_picker ();
2020-12-09 14:05:40 +01:00
ui_require_jquery_file (
'ui.datepicker-' . get_user_language (),
'include/javascript/i18n/'
);
2019-01-30 16:18:44 +01:00
$module_id = ( int ) get_parameter ( 'id_module' );
$period = get_parameter ( 'period' , SECONDS_1DAY );
if ( $period === 'undefined' ) {
$period = SECONDS_1DAY ;
} else {
$period = ( int ) $period ;
}
$group = agents_get_agentmodule_group ( $module_id );
$agentId = ( int ) get_parameter ( 'id_agent' );
$server_name = ( string ) get_parameter ( 'server_name' );
if ( is_metaconsole ()) {
$server = metaconsole_get_connection ( $server_name );
if ( metaconsole_connect ( $server ) != NOERR ) {
return ;
}
$conexion = false ;
} else {
$conexion = false ;
}
$freesearch = ( string ) get_parameter ( 'freesearch' , '' );
$free_checkbox = ( bool ) get_parameter ( 'free_checkbox' , false );
$selection_mode = get_parameter ( 'selection_mode' , 'fromnow' );
$utimestamp = get_system_time ();
2020-12-09 14:05:40 +01:00
$date_from = ( string ) get_parameter (
'date_from' ,
date ( DATE_FORMAT , ( $utimestamp - SECONDS_1DAY ))
);
$time_from = ( string ) get_parameter (
'time_from' ,
date ( TIME_FORMAT , ( $utimestamp - SECONDS_1DAY ))
);
$date_to = ( string ) get_parameter (
'date_to' ,
date ( DATE_FORMAT , $utimestamp )
);
$time_to = ( string ) get_parameter (
'time_to' ,
date ( TIME_FORMAT , $utimestamp )
);
2019-01-30 16:18:44 +01:00
2020-09-07 13:54:18 +02:00
// Definition of new table.
$formtable = new stdClass ();
2019-01-30 16:18:44 +01:00
$formtable -> width = '98%' ;
$formtable -> class = 'databox' ;
$formtable -> data = [];
$formtable -> size = [];
$moduletype_name = modules_get_moduletype_name (
modules_get_agentmodule_type ( $module_id )
);
$periods = [
SECONDS_5MINUTES => __ ( '5 minutes' ),
SECONDS_30MINUTES => __ ( '30 minutes' ),
SECONDS_1HOUR => __ ( '1 hour' ),
SECONDS_6HOURS => __ ( '6 hours' ),
SECONDS_12HOURS => __ ( '12 hours' ),
SECONDS_1DAY => __ ( '1 day' ),
SECONDS_1WEEK => __ ( '1 week' ),
SECONDS_15DAYS => __ ( '15 days' ),
SECONDS_1MONTH => __ ( '1 month' ),
SECONDS_3MONTHS => __ ( '3 months' ),
SECONDS_6MONTHS => __ ( '6 months' ),
SECONDS_1YEAR => __ ( '1 year' ),
SECONDS_2YEARS => __ ( '2 years' ),
SECONDS_3YEARS => __ ( '3 years' ),
];
$formtable -> data [ 0 ][ 0 ] = html_print_radio_button_extended (
'selection_mode' ,
'fromnow' ,
'' ,
$selection_mode ,
false ,
'' ,
2021-03-11 15:40:23 +01:00
'class="mrgn_right_15px"' ,
2019-01-30 16:18:44 +01:00
true
) . __ ( 'Choose a time from now' );
2020-12-09 14:05:40 +01:00
$formtable -> data [ 0 ][ 1 ] = html_print_select (
$periods ,
'period' ,
$period ,
'' ,
'' ,
0 ,
true ,
false ,
false
);
2019-01-30 16:18:44 +01:00
$formtable -> data [ 0 ][ 2 ] = '' ;
2021-06-10 10:19:11 +02:00
$formtable -> data [ 0 ][ 3 ] = " <a href='javascript: show_module_detail_dialog( " . $module_id . ', ' . $agentId . ', "' . $server_name . '", 0, -1,"' . modules_get_agentmodule_name ( $module_id ) . " \" )'> " . html_print_image ( 'images/refresh.png' , true , [ 'style' => 'vertical-align: middle;' , 'border' => '0' , 'class' => 'invert_filter' ]) . '</a>' ;
2019-01-30 16:18:44 +01:00
$formtable -> rowspan [ 0 ][ 3 ] = 2 ;
$formtable -> cellstyle [ 0 ][ 3 ] = 'vertical-align: middle;' ;
$formtable -> data [ 1 ][ 0 ] = html_print_radio_button_extended (
'selection_mode' ,
'range' ,
'' ,
$selection_mode ,
false ,
'' ,
2021-03-11 15:40:23 +01:00
'class="mrgn_right_15px"' ,
2019-01-30 16:18:44 +01:00
true
) . __ ( 'Specify time range' );
$formtable -> data [ 1 ][ 1 ] = __ ( 'Timestamp from:' );
$formtable -> data [ 1 ][ 2 ] = html_print_input_text (
'date_from' ,
$date_from ,
'' ,
10 ,
10 ,
true
);
$formtable -> data [ 1 ][ 2 ] .= html_print_input_text (
'time_from' ,
$time_from ,
'' ,
9 ,
7 ,
true
);
$formtable -> data [ 1 ][ 1 ] .= '<br />' ;
$formtable -> data [ 1 ][ 1 ] .= __ ( 'Timestamp to:' );
$formtable -> data [ 1 ][ 2 ] .= '<br />' ;
$formtable -> data [ 1 ][ 2 ] .= html_print_input_text (
'date_to' ,
$date_to ,
'' ,
10 ,
10 ,
true
);
$formtable -> data [ 1 ][ 2 ] .= html_print_input_text (
'time_to' ,
$time_to ,
'' ,
9 ,
7 ,
true
);
$freesearch_object = '' ;
if ( preg_match ( '/_string/' , $moduletype_name )) {
$formtable -> data [ 2 ][ 0 ] = __ ( 'Free search' ) . ' ' ;
2020-12-09 14:05:40 +01:00
$formtable -> data [ 2 ][ 1 ] = html_print_input_text (
'freesearch' ,
$freesearch ,
'' ,
20 ,
null ,
true
);
$formtable -> data [ 2 ][ 2 ] = html_print_checkbox (
'free_checkbox' ,
1 ,
$free_checkbox ,
true
);
2019-01-30 16:18:44 +01:00
$formtable -> data [ 2 ][ 2 ] .= ' ' . __ ( 'Exact phrase' );
$freesearch_object = json_encode (
[
'value' => io_safe_output ( $freesearch ),
'exact' => ( bool ) $free_checkbox ,
]
);
}
html_print_table ( $formtable );
$offset = ( int ) get_parameter ( 'offset' );
$block_size = ( int ) $config [ 'block_size' ];
$columns = [];
$datetime_from = strtotime ( $date_from . ' ' . $time_from );
$datetime_to = strtotime ( $date_to . ' ' . $time_to );
$columns = [
'Data' => [
'data' ,
'modules_format_data' ,
'align' => 'center' ,
'width' => '230px'
],
];
if ( $config [ 'prominent_time' ] == 'comparation' ) {
$columns [ 'Time' ] = [
'utimestamp' ,
'modules_format_time' ,
'align' => 'center' ,
'width' => '50px'
];
} else {
$columns [ 'Timestamp' ] = [
'utimestamp' ,
'modules_format_timestamp' ,
'align' => 'center' ,
'width' => '50px'
];
}
if ( $selection_mode == 'fromnow' ) {
$date = get_system_time ();
$period = $period ;
} else {
$period = ( $datetime_to - $datetime_from );
$date = ( $datetime_from + $period );
}
$count = modules_get_agentmodule_data (
$module_id ,
$period ,
$date ,
true ,
$conexion ,
'ASC' ,
$freesearch_object
);
$module_data = modules_get_agentmodule_data (
$module_id ,
$period ,
$date ,
false ,
$conexion ,
'DESC' ,
$freesearch_object
);
if ( empty ( $module_data )) {
$result = [];
} else {
2019-05-28 12:13:29 +02:00
// Paginate the result.
2019-01-30 16:18:44 +01:00
$result = array_slice ( $module_data , $offset , $block_size );
}
2020-09-07 13:54:18 +02:00
// Definition of new class.
$table = new stdClass ();
2019-01-30 16:18:44 +01:00
$table -> width = '100%' ;
$table -> class = 'databox data' ;
$table -> data = [];
$index = 0 ;
foreach ( $columns as $col => $attr ) {
$table -> head [ $index ] = $col ;
2021-03-04 11:29:52 +01:00
if ( $col === 'Data' ) {
$table -> head [ $index ] .= ui_print_help_tip (
2021-11-04 16:28:15 +01:00
__ ( 'In Pandora FMS, data is stored compressed. The data visualization in database, charts or CSV exported data won\'t match, because is interpreted at runtime. Please check \'Pandora FMS Engineering\' chapter from documentation.' ),
2021-03-04 11:29:52 +01:00
true
);
}
2019-01-30 16:18:44 +01:00
if ( isset ( $attr [ 'align' ])) {
$table -> align [ $index ] = $attr [ 'align' ];
}
if ( isset ( $attr [ 'width' ])) {
$table -> size [ $index ] = $attr [ 'width' ];
}
$index ++ ;
}
$id_type_web_content_string = db_get_value (
'id_tipo' ,
'ttipo_modulo' ,
'nombre' ,
'web_content_string'
);
2020-12-09 14:05:40 +01:00
$post_process = db_get_value_filter (
'post_process' ,
'tagente_modulo' ,
[ 'id_agente_modulo' => $module_id ]
);
$unit = db_get_value_filter (
'unit' ,
'tagente_modulo' ,
[ 'id_agente_modulo' => $module_id ]
);
2019-01-30 16:18:44 +01:00
foreach ( $result as $row ) {
$data = [];
$is_web_content_string = ( bool ) db_get_value_filter (
'id_agente_modulo' ,
'tagente_modulo' ,
[
'id_agente_modulo' => $row [ 'id_agente_modulo' ],
'id_tipo_modulo' => $id_type_web_content_string ,
]
);
foreach ( $columns as $col => $attr ) {
if ( $attr [ 1 ] != 'modules_format_data' ) {
$data [] = date ( 'd F Y h:i:s A' , $row [ 'utimestamp' ]);
} else if ( is_snapshot_data ( $row [ $attr [ 0 ]])) {
if ( $config [ 'command_snapshot' ]) {
2021-03-11 15:40:23 +01:00
$imagetab = '<img class="w100p" src="' ;
2020-06-08 11:24:46 +02:00
$imagetab .= io_safe_input ( $row [ $attr [ 0 ]]);
$imagetab .= '">' ;
2021-03-11 15:40:23 +01:00
$image = '<img class="w300px" src="' ;
2020-06-08 11:24:46 +02:00
$image .= io_safe_input ( $row [ $attr [ 0 ]]);
$image .= '">' ;
$data [] = '<a style="cursor:pointer;" onclick="newTabjs(\'' . base64_encode ( $imagetab ) . '\')">' . $image . '</a>' ;
2019-01-30 16:18:44 +01:00
} else {
$data [] = '<span>' . wordwrap ( io_safe_input ( $row [ $attr [ 0 ]]), 60 , " <br> \n " , true ) . '</span>' ;
}
} else if (( $config [ 'command_snapshot' ] == '0' ) && ( preg_match ( " /[ \n ]+/i " , $row [ $attr [ 0 ]]))) {
// Its a single-data, multiline data (data snapshot) ?
// I dont why, but using index (value) method, data is automatically converted to html entities ¿?
$data [] = html_print_result_div ( $row [ $attr [ 0 ]]);
} else if ( $is_web_content_string ) {
// Fixed the goliat sends the strings from web
2019-05-28 12:13:29 +02:00
// without HTML entities.
2019-01-30 16:18:44 +01:00
$data [] = io_safe_input ( $row [ $attr [ 0 ]]);
} else {
2019-05-28 12:13:29 +02:00
// Fixed the data from Selenium Plugin.
2019-01-30 16:18:44 +01:00
if ( $row [ $attr [ 0 ]] != strip_tags ( $row [ $attr [ 0 ]])) {
$data [] = html_print_result_div ( $row [ $attr [ 0 ]]);
2020-12-09 14:05:40 +01:00
} else if ( is_numeric ( $row [ $attr [ 0 ]])
&& ! modules_is_string_type ( $row [ 'module_type' ])
) {
2019-01-30 16:18:44 +01:00
switch ( $row [ 'module_type' ]) {
case 15 :
2020-12-09 14:05:40 +01:00
$value = db_get_value (
'snmp_oid' ,
'tagente_modulo' ,
'id_agente_modulo' ,
$module_id
);
2019-06-14 16:13:01 +02:00
// System Uptime:
2020-12-09 14:05:40 +01:00
// In case of System Uptime module,
// shows data in format
// "Days hours minutes seconds" if and only if
2019-06-14 16:13:01 +02:00
// selected module unit is "_timeticks_"
2020-12-09 14:05:40 +01:00
// Take notice that selected unit
// may not be postrocess unit.
if ( $value == '.1.3.6.1.2.1.1.3.0'
|| $value == '.1.3.6.1.2.1.25.1.1.0'
) {
$data_macro = modules_get_unit_macro (
$row [ $attr [ 0 ]],
$unit
);
2019-06-17 10:29:28 +02:00
if ( $data_macro ) {
$data [] = $data_macro ;
2019-01-30 16:18:44 +01:00
} else {
2020-12-09 14:05:40 +01:00
$data [] = remove_right_zeros (
number_format (
$row [ $attr [ 0 ]],
$config [ 'graph_precision' ]
)
);
2019-01-30 16:18:44 +01:00
}
} else {
2020-12-09 14:05:40 +01:00
$data [] = remove_right_zeros (
number_format (
$row [ $attr [ 0 ]],
$config [ 'graph_precision' ]
)
);
2019-01-30 16:18:44 +01:00
}
break ;
default :
2020-12-09 14:05:40 +01:00
$data_macro = modules_get_unit_macro (
$row [ $attr [ 0 ]],
$unit
);
2019-01-30 16:18:44 +01:00
if ( $data_macro ) {
$data [] = $data_macro ;
} else {
2020-12-09 14:05:40 +01:00
$data [] = remove_right_zeros (
number_format (
$row [ $attr [ 0 ]],
$config [ 'graph_precision' ]
)
);
2019-01-30 16:18:44 +01:00
}
break ;
}
} else {
if ( $row [ $attr [ 0 ]] == '' ) {
$data [] = 'No data' ;
} else {
2020-12-09 14:05:40 +01:00
$data_macro = modules_get_unit_macro (
$row [ $attr [ 0 ]],
$unit
);
2019-01-30 16:18:44 +01:00
if ( $data_macro ) {
$data [] = $data_macro ;
} else {
2020-12-09 14:05:40 +01:00
$data [] = html_print_result_div (
$row [ $attr [ 0 ]]
);
2019-01-30 16:18:44 +01:00
}
}
}
}
}
array_push ( $table -> data , $data );
if ( count ( $table -> data ) > 200 ) {
break ;
}
}
if ( empty ( $table -> data )) {
ui_print_error_message ( __ ( 'No available data to show' ));
} else {
2020-12-09 14:05:40 +01:00
ui_pagination (
count ( $count ),
false ,
$offset ,
0 ,
false ,
'offset' ,
true ,
'binary_dialog'
);
2019-01-30 16:18:44 +01:00
html_print_table ( $table );
}
if ( is_metaconsole ()) {
metaconsole_restore_db ();
}
return ;
}
if ( $get_module_autocomplete_input ) {
$id_agent = ( int ) get_parameter ( 'id_agent' );
ob_clean ();
if ( $id_agent > 0 ) {
html_print_autocomplete_modules (
'autocomplete_module_name' ,
'' ,
[ $id_agent ]
);
return ;
}
return ;
}
if ( $add_module_relation ) {
$result = false ;
$id_module_a = ( int ) get_parameter ( 'id_module_a' );
$id_module_b = ( int ) get_parameter ( 'id_module_b' );
2019-07-03 17:51:47 +02:00
$type = ( string ) get_parameter ( 'relation_type' );
2019-01-30 16:18:44 +01:00
if ( $id_module_a < 1 ) {
$name_module_a = get_parameter ( 'name_module_a' , '' );
if ( $name_module_a ) {
2019-07-03 17:51:47 +02:00
$id_module_a = ( int ) db_get_value (
'id_agente_modulo' ,
'tagente_modulo' ,
'nombre' ,
$name_module_a
);
2019-01-30 16:18:44 +01:00
} else {
echo json_encode ( $result );
return ;
}
}
if ( $id_module_b < 1 ) {
$name_module_b = get_parameter ( 'name_module_b' , '' );
if ( $name_module_b ) {
2019-07-03 17:51:47 +02:00
$id_module_b = ( int ) db_get_value (
'id_agente_modulo' ,
'tagente_modulo' ,
'nombre' ,
$name_module_b
);
2019-01-30 16:18:44 +01:00
} else {
echo json_encode ( $result );
return ;
}
}
if ( $id_module_a > 0 && $id_module_b > 0 ) {
2019-07-03 17:51:47 +02:00
$result = modules_add_relation ( $id_module_a , $id_module_b , $type );
2019-01-30 16:18:44 +01:00
}
echo json_encode ( $result );
return ;
}
if ( $remove_module_relation ) {
$id_relation = ( int ) get_parameter ( 'id_relation' );
if ( $id_relation > 0 ) {
$result = ( bool ) modules_delete_relation ( $id_relation );
}
echo json_encode ( $result );
return ;
}
if ( $change_module_relation_updates ) {
$id_relation = ( int ) get_parameter ( 'id_relation' );
if ( $id_relation > 0 ) {
$result = ( bool ) modules_change_relation_lock ( $id_relation );
}
echo json_encode ( $result );
return ;
}
if ( $get_id_tag ) {
$tag_name = get_parameter ( 'tag_name' );
if ( $tag_name ) {
$tag_id = db_get_value ( 'id_tag' , 'ttag' , 'name' , $tag_name );
} else {
$tag_id = 0 ;
}
echo $tag_id ;
return ;
}
if ( $list_modules ) {
include_once $config [ 'homedir' ] . '/include/functions_modules.php' ;
include_once $config [ 'homedir' ] . '/include/functions_servers.php' ;
include_once $config [ 'homedir' ] . '/include/functions_tags.php' ;
include_once $config [ 'homedir' ] . '/include/functions_clippy.php' ;
2020-05-21 19:28:24 +02:00
// Disable module edition in cluster module list.
$cluster_view = ( bool ) preg_match (
'/operation\/cluster\/cluster/' ,
$_SERVER [ 'HTTP_REFERER' ]
);
2019-01-30 16:18:44 +01:00
$agent_a = check_acl ( $config [ 'id_user' ], 0 , 'AR' );
$agent_w = check_acl ( $config [ 'id_user' ], 0 , 'AW' );
$access = ( $agent_a == true ) ? 'AR' : (( $agent_w == true ) ? 'AW' : 'AR' );
2019-05-28 12:13:29 +02:00
$id_agent = ( int ) get_parameter ( 'id_agente' , 0 );
$id_agente = $id_agent ;
2019-01-30 16:18:44 +01:00
$show_notinit = ( int ) get_parameter ( 'show_notinit' , 0 );
$cluster_list = ( int ) get_parameter ( 'cluster_list' , 0 );
$url = 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $id_agent ;
2019-04-05 13:18:38 +02:00
$selectTypeUp = false ;
$selectTypeDown = false ;
$selectNameUp = false ;
$selectNameDown = false ;
$selectStatusUp = false ;
$selectStatusDown = false ;
$selectDataUp = false ;
$selectDataDown = false ;
$selectLastContactUp = false ;
$selectLastContactDown = false ;
2019-01-30 16:18:44 +01:00
$sortField = get_parameter ( 'sort_field' );
$sort = get_parameter ( 'sort' , 'none' );
2019-04-05 13:18:38 +02:00
$selected = true ;
2019-01-30 16:18:44 +01:00
$order [] = [
'field' => 'tmodule_group.name' ,
'order' => 'ASC' ,
];
switch ( $sortField ) {
case 'type' :
switch ( $sort ) {
case 'up' :
2019-05-28 12:13:29 +02:00
default :
2019-01-30 16:18:44 +01:00
$selectTypeUp = $selected ;
$order [] = [
'field' => 'tagente_modulo.id_modulo' ,
'order' => 'ASC' ,
];
break ;
case 'down' :
$selectTypeDown = $selected ;
$order [] = [
'field' => 'tagente_modulo.id_modulo' ,
'order' => 'DESC' ,
];
break ;
}
break ;
case 'name' :
switch ( $sort ) {
case 'up' :
$selectNameUp = $selected ;
$order [] = [
'field' => 'tagente_modulo.nombre' ,
'order' => 'ASC' ,
];
break ;
case 'down' :
$selectNameDown = $selected ;
$order [] = [
'field' => 'tagente_modulo.nombre' ,
'order' => 'DESC' ,
];
break ;
2019-05-28 12:13:29 +02:00
default :
// Ignore.
break ;
2019-01-30 16:18:44 +01:00
}
break ;
case 'status' :
switch ( $sort ) {
case 'up' :
$selectStatusUp = $selected ;
$order [] = [
'field' => 'tagente_estado.estado=0 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=1 DESC' ,
'order' => '' ,
];
break ;
case 'down' :
$selectStatusDown = $selected ;
$order [] = [
'field' => 'tagente_estado.estado=1 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=0 DESC' ,
'order' => '' ,
];
break ;
2019-05-28 12:13:29 +02:00
default :
// Ignore.
break ;
2019-01-30 16:18:44 +01:00
}
break ;
case 'last_contact' :
switch ( $sort ) {
case 'up' :
$selectLastContactUp = $selected ;
$order [] = [
'field' => 'tagente_estado.utimestamp' ,
'order' => 'ASC' ,
];
break ;
case 'down' :
$selectLastContactDown = $selected ;
$order [] = [
'field' => 'tagente_estado.utimestamp' ,
'order' => 'DESC' ,
];
break ;
2019-05-28 12:13:29 +02:00
default :
// Ignore.
break ;
2019-01-30 16:18:44 +01:00
}
break ;
default :
2019-04-05 13:18:38 +02:00
$selectTypeUp = false ;
$selectTypeDown = false ;
2019-01-30 16:18:44 +01:00
$selectNameUp = $selected ;
2019-04-05 13:18:38 +02:00
$selectNameDown = false ;
$selectStatusUp = false ;
$selectStatusDown = false ;
$selectDataUp = false ;
$selectDataDown = false ;
$selectLastContactUp = false ;
$selectLastContactDown = false ;
2019-01-30 16:18:44 +01:00
$order [] = [
'field' => 'tagente_modulo.nombre' ,
'order' => 'ASC' ,
];
break ;
}
2019-05-28 12:13:29 +02:00
// Fix: for tag functionality groups have to be all user_groups
// (propagate ACL funct!).
2019-01-30 16:18:44 +01:00
$groups = users_get_groups ( $config [ 'id_user' ], $access );
$tags_join = '' ;
$tags_sql = '' ;
if ( $cluster_list != 1 ) {
$tags = tags_get_user_applied_agent_tags ( $id_agent , $access );
if ( $tags === false ) {
$tags_sql = ' AND 1=0' ;
} else if ( is_array ( $tags )) {
$tags_sql = ' AND ttag_module.id_tag IN (' . implode ( ',' , $tags ) . ')' ;
$tags_join = ' LEFT JOIN ttag_module
ON ttag_module . id_agente_modulo = tagente_modulo . id_agente_modulo ' ;
}
}
2020-12-09 14:05:40 +01:00
$status_filter_monitor = ( int ) get_parameter (
'status_filter_monitor' ,
- 1
);
2019-01-30 16:18:44 +01:00
$status_text_monitor = get_parameter ( 'status_text_monitor' , '' );
$filter_monitors = ( bool ) get_parameter ( 'filter_monitors' , false );
$status_module_group = get_parameter ( 'status_module_group' , - 1 );
2020-12-09 14:05:40 +01:00
$monitors_change_filter = ( bool ) get_parameter (
'monitors_change_filter' ,
false
);
2019-01-30 16:18:44 +01:00
$status_filter_sql = '1 = 1' ;
if ( $status_filter_monitor == AGENT_MODULE_STATUS_NOT_NORMAL ) {
2019-05-28 12:13:29 +02:00
// Not normal.
2019-01-30 16:18:44 +01:00
$status_filter_sql = ' tagente_estado.estado <> 0' ;
} else if ( $status_filter_monitor != - 1 ) {
$status_filter_sql = 'tagente_estado.estado = ' . $status_filter_monitor ;
}
if ( $status_module_group != - 1 ) {
$status_module_group_filter = 'tagente_modulo.id_module_group = ' . $status_module_group ;
} else {
$status_module_group_filter = 'tagente_modulo.id_module_group >= 0' ;
}
$status_text_monitor_sql = '%' ;
if ( ! empty ( $status_text_monitor )) {
$status_text_monitor_sql .= $status_text_monitor . '%' ;
}
if ( ! $show_notinit ) {
$monitor_filter = AGENT_MODULE_STATUS_NO_DATA ;
} else {
$monitor_filter = - 15 ;
}
// Count monitors/modules
2019-05-28 12:13:29 +02:00
// Build the order sql.
2019-01-30 16:18:44 +01:00
$first = true ;
foreach ( $order as $ord ) {
if ( $first ) {
$first = false ;
} else {
$order_sql .= ',' ;
}
$order_sql .= $ord [ 'field' ] . ' ' . $ord [ 'order' ];
}
$sql_condition = " FROM tagente_modulo
2018-10-02 13:19:17 +02:00
$tags_join
INNER JOIN tagente_estado
ON tagente_modulo . id_agente_modulo = tagente_estado . id_agente_modulo
LEFT JOIN tmodule_group
ON tagente_modulo . id_module_group = tmodule_group . id_mg
WHERE tagente_modulo . id_agente = $id_agente
AND nombre LIKE '$status_text_monitor_sql'
AND delete_pending = 0
2018-10-31 08:57:34 +01:00
AND disabled = 0
2018-10-02 13:19:17 +02:00
AND $status_filter_sql
2018-11-06 11:14:12 +01:00
AND $status_module_group_filter
2018-10-02 13:19:17 +02:00
$tags_sql
AND tagente_estado . estado != $monitor_filter
" ;
2015-10-21 17:06:08 +02:00
2020-12-09 14:05:40 +01:00
$count_modules = db_get_all_rows_sql (
'SELECT COUNT(DISTINCT tagente_modulo.id_agente_modulo)' . $sql_condition
);
2018-11-06 11:14:12 +01:00
2019-01-30 16:18:44 +01:00
if ( isset ( $count_modules [ 0 ])) {
$count_modules = reset ( $count_modules [ 0 ]);
} else {
$count_modules = 0 ;
}
2015-10-21 17:06:08 +02:00
2019-01-30 16:18:44 +01:00
// Get monitors/modules
2020-12-09 14:05:40 +01:00
// Get all module from agent.
2019-01-30 16:18:44 +01:00
$sql_modules_info = " SELECT tagente_estado.*, tagente_modulo.*, tmodule_group.*
2018-11-06 11:14:12 +01:00
$sql_condition
GROUP BY tagente_modulo . id_agente_modulo ORDER BY $order_sql " ;
2015-10-21 17:06:08 +02:00
2019-01-30 16:18:44 +01:00
if ( $monitors_change_filter ) {
$limit = ' LIMIT ' . $config [ 'block_size' ] . ' OFFSET 0' ;
} else {
$limit = ' LIMIT ' . $config [ 'block_size' ] . ' OFFSET ' . get_parameter ( 'offset' , 0 );
}
$paginate_module = false ;
if ( isset ( $config [ 'paginate_module' ])) {
$paginate_module = $config [ 'paginate_module' ];
}
if ( $paginate_module ) {
$modules = db_get_all_rows_sql ( $sql_modules_info . $limit );
} else {
$modules = db_get_all_rows_sql ( $sql_modules_info );
}
if ( empty ( $modules )) {
$modules = [];
}
2019-04-05 13:18:38 +02:00
// Urls to sort the table.
$url_up_type = $url . '&sort_field=type&sort=up&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_down_type = $url . '&sort_field=type&sort=down&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_up_name = $url . '&sort_field=name&sort=up&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_down_name = $url . '&sort_field=name&sort=down&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_up_status = $url . '&sort_field=status&sort=up&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_down_status = $url . '&sort_field=status&sort=down&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_up_last = $url . '&sort_field=last_contact&sort=up&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
$url_down_last = $url . '&sort_field=last_contact&sort=down&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . ' &status_text_monitor=' . $status_text_monitor . '&status_module_group= ' . $status_module_group ;
2019-01-30 16:18:44 +01:00
$table = new stdClass ();
$table -> width = '100%' ;
2019-05-28 16:20:24 +02:00
$table -> styleTable = 'border: 0;border-radius: 0;' ;
2019-03-27 17:03:55 +01:00
$table -> cellpadding = 0 ;
$table -> cellspacing = 0 ;
$table -> class = 'info_table' ;
2019-01-30 16:18:44 +01:00
$table -> head = [];
$table -> data = [];
$isFunctionPolicies = enterprise_include_once ( 'include/functions_policies.php' );
if ( $agent_w ) {
$table -> head [ 0 ] = " <span title=' " . __ ( 'Force execution' ) . " '> " . __ ( 'F.' ) . '</span>' ;
}
if ( $isFunctionPolicies !== ENTERPRISE_NOT_HOOK ) {
$table -> head [ 1 ] = " <span title=' " . __ ( 'Policy' ) . " '> " . __ ( 'P.' ) . '</span>' ;
}
2019-04-05 13:18:38 +02:00
$table -> head [ 2 ] = __ ( 'Type' ) . ui_get_sorting_arrows ( $url_up_type , $url_down_type , $selectTypeUp , $selectTypeDown );
$table -> head [ 3 ] = __ ( 'Module name' ) . ui_get_sorting_arrows ( $url_up_name , $url_down_name , $selectNameUp , $selectNameDown );
2019-01-30 16:18:44 +01:00
$table -> head [ 4 ] = __ ( 'Description' );
2019-04-05 13:18:38 +02:00
$table -> head [ 5 ] = __ ( 'Status' ) . ui_get_sorting_arrows ( $url_up_status , $url_down_status , $selectStatusUp , $selectStatusDown );
2019-01-30 16:18:44 +01:00
$table -> head [ 6 ] = __ ( 'Thresholds' );
$table -> head [ 7 ] = __ ( 'Data' );
$table -> head [ 8 ] = __ ( 'Graph' );
2019-04-05 13:18:38 +02:00
$table -> head [ 9 ] = __ ( 'Last contact' ) . ui_get_sorting_arrows ( $url_up_last , $url_down_last , $selectLastContactUp , $selectLastContactDown );
2019-06-03 14:30:23 +02:00
$table -> align = [];
2019-06-03 19:13:29 +02:00
$table -> align [ 0 ] = 'center' ;
2019-06-03 14:30:23 +02:00
$table -> align [ 1 ] = 'left' ;
$table -> align [ 2 ] = 'left' ;
$table -> align [ 3 ] = 'left' ;
$table -> align [ 4 ] = 'left' ;
$table -> align [ 5 ] = 'left' ;
$table -> align [ 6 ] = 'center' ;
$table -> align [ 7 ] = 'left' ;
$table -> align [ 8 ] = 'center' ;
$table -> align [ 9 ] = 'right' ;
2020-06-26 13:29:17 +02:00
$table -> headstyle [ 2 ] = 'min-width: 65px' ;
$table -> headstyle [ 3 ] = 'min-width: 80px' ;
$table -> size [ 3 ] = '25%' ;
2019-06-03 14:30:23 +02:00
$table -> style [ 3 ] = 'max-width: 28em;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;' ;
2020-06-26 13:29:17 +02:00
$table -> size [ 4 ] = '25%' ;
$table -> headstyle [ 5 ] = 'min-width: 65px' ;
$table -> headstyle [ 6 ] = 'min-width: 80px; text-align: center;' ;
$table -> headstyle [ 7 ] = 'min-width: 80px;' ;
$table -> headstyle [ 8 ] = 'min-width: 70px; text-align: center;' ;
$table -> headstyle [ 9 ] = 'min-width: 100px; text-align: right;' ;
2019-05-29 12:06:05 +02:00
2019-01-30 16:18:44 +01:00
$last_modulegroup = 0 ;
$rowIndex = 0 ;
$id_type_web_content_string = db_get_value (
'id_tipo' ,
'ttipo_modulo' ,
'nombre' ,
'web_content_string'
);
$show_context_help_first_time = false ;
$hierachy_mode = get_parameter ( 'hierachy_mode' , false );
if ( $hierachy_mode == 'true' ) {
$modules_hierachy = [];
$modules_hierachy = get_hierachy_modules_tree ( $modules );
$modules_dt = get_dt_from_modules_tree ( $modules_hierachy );
$modules = $modules_dt ;
}
foreach ( $modules as $module ) {
if ( $hierachy_mode !== 'true' ) {
// The code add the row of 1 cell with title of group for to be more organice the list.
if ( $module [ 'id_module_group' ] != $last_modulegroup ) {
$table -> colspan [ $rowIndex ][ 0 ] = count ( $table -> head );
$table -> rowclass [ $rowIndex ] = 'datos4' ;
array_push ( $table -> data , [ '<b>' . $module [ 'name' ] . '</b>' ]);
$rowIndex ++ ;
$last_modulegroup = $module [ 'id_module_group' ];
}
2019-06-03 14:30:23 +02:00
// End of title of group.
2019-01-30 16:18:44 +01:00
}
$data = [];
if (( $module [ 'id_modulo' ] != 1 ) && ( $module [ 'id_tipo_modulo' ] != 100 )) {
if ( $agent_w ) {
if ( $module [ 'flag' ] == 0 ) {
2021-03-11 15:40:23 +01:00
$data [ 0 ] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $id_agente . '&id_agente_modulo=' . $module [ 'id_agente_modulo' ] . '&flag=1&refr=60">' . html_print_image ( 'images/target.png' , true , [ 'border' => '0' , 'title' => __ ( 'Force' ), 'class' => 'invert_filter' ]) . '</a>' ;
2019-01-30 16:18:44 +01:00
} else {
2021-06-10 10:19:11 +02:00
$data [ 0 ] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $id_agente . '&id_agente_modulo=' . $module [ 'id_agente_modulo' ] . '&refr=60">' . html_print_image ( 'images/refresh.png' , true , [ 'border' => '0' , 'title' => __ ( 'Refresh' ), 'class' => 'invert_filter' ]) . '</a>' ;
2019-01-30 16:18:44 +01:00
}
}
} else {
if ( $agent_w ) {
$data [ 0 ] = '' ;
}
}
if ( $isFunctionPolicies !== ENTERPRISE_NOT_HOOK ) {
if ( $module [ 'id_policy_module' ] != 0 ) {
$linked = policies_is_module_linked ( $module [ 'id_agente_modulo' ]);
$id_policy = db_get_value_sql ( 'SELECT id_policy FROM tpolicy_modules WHERE id = ' . $module [ 'id_policy_module' ]);
if ( $id_policy != '' ) {
$name_policy = db_get_value_sql ( 'SELECT name FROM tpolicies WHERE id = ' . $id_policy );
} else {
$name_policy = __ ( 'Unknown' );
}
$policyInfo = policies_info_module_policy ( $module [ 'id_policy_module' ]);
$adopt = false ;
if ( policies_is_module_adopt ( $module [ 'id_agente_modulo' ])) {
$adopt = true ;
}
if ( $linked ) {
if ( $adopt ) {
$img = 'images/policies_brick.png' ;
$title = '(' . __ ( 'Adopted' ) . ') ' . $name_policy ;
} else {
2021-03-11 15:40:23 +01:00
$img = 'images/policies_mc.png' ;
2019-01-30 16:18:44 +01:00
$title = $name_policy ;
}
} else {
if ( $adopt ) {
$img = 'images/policies_not_brick.png' ;
$title = '(' . __ ( 'Unlinked' ) . ') (' . __ ( 'Adopted' ) . ') ' . $name_policy ;
} else {
$img = 'images/unlinkpolicy.png' ;
$title = '(' . __ ( 'Unlinked' ) . ') ' . $name_policy ;
}
}
$data [ 1 ] = '<a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&id=' . $id_policy . '">' . html_print_image ( $img , true , [ 'title' => $title ]) . '</a>' ;
} else {
$data [ 1 ] = '' ;
}
}
$data [ 2 ] = servers_show_type ( $module [ 'id_modulo' ]) . ' ' ;
2020-05-21 19:28:24 +02:00
if ( check_acl ( $config [ 'id_user' ], $id_grupo , 'AW' )
&& $cluster_view === false
) {
2019-04-05 13:18:38 +02:00
$data [ 2 ] .= '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente=' . $id_agente . '&tab=module&id_agent_module=' . $module [ 'id_agente_modulo' ] . '&edit_module=' . $module [ 'id_modulo' ] . '">' . html_print_image ( 'images/config.png' , true , [ 'alt' => '0' , 'border' => '' , 'title' => __ ( 'Edit' ), 'class' => 'action_button_img' ]) . '</a>' ;
2019-01-30 16:18:44 +01:00
}
$data [ 3 ] = '' ;
if ( isset ( $module [ 'deep' ]) && ( $module [ 'deep' ] != 0 )) {
$data [ 3 ] .= str_repeat ( ' ' , $module [ 'deep' ]);
$data [ 3 ] .= html_print_image ( 'images/icono_escuadra.png' , true , [ 'style' => 'padding-bottom: inherit;' ]) . ' ' ;
}
if ( $module [ 'quiet' ]) {
$data [ 3 ] .= html_print_image (
'images/dot_blue.png' ,
true ,
[
'border' => '0' ,
'title' => __ ( 'Quiet' ),
'alt' => '' ,
]
) . ' ' ;
}
$data [ 3 ] .= ui_print_truncate_text ( $module [ 'nombre' ], 'module_medium' );
if ( ! empty ( $module [ 'extended_info' ])) {
if ( $module [ 'extended_info' ] != '' ) {
$data [ 3 ] .= ui_print_help_tip ( $module [ 'extended_info' ], true , '/images/default_list.png' );
}
}
2019-05-28 12:13:29 +02:00
// Adds tag context information.
2019-01-30 16:18:44 +01:00
if ( tags_get_modules_tag_count ( $module [ 'id_agente_modulo' ]) > 0 ) {
2021-06-10 10:19:11 +02:00
$data [ 3 ] .= ' <a class="tag_details" href="ajax.php?page=operation/agentes/estado_monitores&get_tag_tooltip=1&id_agente_modulo=' . $module [ 'id_agente_modulo' ] . '">' . html_print_image ( 'images/tag_red.png' , true , [ 'id' => 'tag-details-' . $module [ 'id_agente_modulo' ], 'class' => 'img_help invert_filter' ]) . '</a> ' ;
2019-01-30 16:18:44 +01:00
}
2019-05-28 12:13:29 +02:00
// Adds relations context information.
2019-01-30 16:18:44 +01:00
if ( modules_relation_exists ( $module [ 'id_agente_modulo' ])) {
$data [ 3 ] .= ' <a class="relations_details" href="ajax.php?page=operation/agentes/estado_monitores&get_relations_tooltip=1&id_agente_modulo=' . $module [ 'id_agente_modulo' ] . '">' . html_print_image ( 'images/link2.png' , true , [ 'id' => 'relations-details-' . $module [ 'id_agente_modulo' ], 'class' => 'img_help' ]) . '</a> ' ;
}
2020-04-02 14:30:02 +02:00
$data [ 4 ] = ui_print_string_substr ( $module [ 'descripcion' ], 60 , true , 8 );
2019-01-30 16:18:44 +01:00
if ( $module [ 'datos' ] != strip_tags ( $module [ 'datos' ])) {
$module_value = io_safe_input ( $module [ 'datos' ]);
} else {
$module_value = io_safe_output ( $module [ 'datos' ]);
}
modules_get_status (
$module [ 'id_agente_modulo' ],
$module [ 'estado' ],
$module_value ,
$status ,
$title
);
2020-03-23 12:47:58 +01:00
$last_status_change_text = 'Time elapsed since last status change: ' ;
2020-03-25 16:21:51 +01:00
$last_status_change_text .= ! empty ( $module [ 'last_status_change' ]) ? human_time_comparation ( $module [ 'last_status_change' ]) : __ ( 'N/A' );
2020-03-23 12:47:58 +01:00
$data [ 5 ] = ui_print_status_image ( $status , htmlspecialchars ( $title ), true , false , false , false , $last_status_change_text );
2019-01-30 16:18:44 +01:00
if ( ! $show_context_help_first_time ) {
$show_context_help_first_time = true ;
if ( $module [ 'estado' ] == AGENT_MODULE_STATUS_UNKNOWN ) {
$data [ 5 ] .= clippy_context_help ( 'module_unknow' );
}
}
2020-05-06 17:35:05 +02:00
$salida = modules_get_agentmodule_data_for_humans ( $module );
2019-01-30 16:18:44 +01:00
if ( $module [ 'id_tipo_modulo' ] != 25 ) {
2019-10-17 11:50:50 +02:00
$data [ 6 ] = ui_print_module_warn_value ( $module [ 'max_warning' ], $module [ 'min_warning' ], $module [ 'str_warning' ], $module [ 'max_critical' ], $module [ 'min_critical' ], $module [ 'str_critical' ], $module [ 'warning_inverse' ], $module [ 'critical_inverse' ]);
2019-01-30 16:18:44 +01:00
} else {
$data [ 6 ] = '' ;
}
$data [ 7 ] = $salida ;
$graph_type = return_graphtype ( $module [ 'id_tipo_modulo' ]);
$data [ 8 ] = ' ' ;
if ( $module [ 'history_data' ] == 1 ) {
$nombre_tipo_modulo = modules_get_moduletype_name ( $module [ 'id_tipo_modulo' ]);
$handle = 'stat' . $nombre_tipo_modulo . '_' . $module [ 'id_agente_modulo' ];
$url = 'include/procesos.php?agente=' . $module [ 'id_agente_modulo' ];
$win_handle = dechex ( crc32 ( $module [ 'id_agente_modulo' ] . $module [ 'nombre' ]));
// Try to display the SNMP module realtime graph
$rt_button = get_module_realtime_link_graph ( $module );
if ( ! empty ( $rt_button )) {
$data [ 8 ] = $rt_button . ' ' ;
}
// Show events for boolean modules by default.
if ( $graph_type == 'boolean' ) {
$draw_events = 1 ;
} else {
$draw_events = 0 ;
}
2020-10-01 15:29:54 +02:00
$link = " winopeng_var(' " . 'operation/agentes/stat_win.php?' . " type= $graph_type & " . 'period=' . SECONDS_1DAY . '&id=' . $module [ 'id_agente_modulo' ] . '&refresh=' . SECONDS_10MINUTES . '&' . " draw_events= $draw_events ', 'day_ " . $win_handle . " ', 800, 480) " ;
2019-01-30 16:18:44 +01:00
if ( ! is_snapshot_data ( $module [ 'datos' ])) {
2021-03-11 15:40:23 +01:00
$data [ 8 ] .= '<a href="javascript:' . $link . '">' . html_print_image (
'images/chart.png' ,
true ,
[
'border' => '0' ,
'alt' => '' ,
'class' => 'invert_filter' ,
]
) . '</a> ' ;
2019-01-30 16:18:44 +01:00
}
$server_name = '' ;
2019-08-26 12:26:43 +02:00
$modules_get_agentmodule_name = modules_get_agentmodule_name ( $module [ 'id_agente_modulo' ]);
// Escape the double quotes that may have the name of the module.
$modules_get_agentmodule_name = str_replace ( '"' , '\"' , $modules_get_agentmodule_name );
2021-03-11 15:40:23 +01:00
$data [ 8 ] .= " <a href='javascript: " . 'show_module_detail_dialog(' . $module [ 'id_agente_modulo' ] . ', ' . $id_agente . ', "' . $server_name . '", ' . ( 0 ) . ', ' . SECONDS_1DAY . ', " ' . $modules_get_agentmodule_name . " \" )'> " . html_print_image (
'images/binary.png' ,
true ,
[
'border' => '0' ,
'alt' => '' ,
'class' => 'invert_filter' ,
]
) . '</a>' ;
2019-01-30 16:18:44 +01:00
}
if ( $module [ 'estado' ] == 3 ) {
$data [ 9 ] = '<span class="redb">' ;
} else {
$data [ 9 ] = '<span>' ;
}
$data [ 9 ] .= ui_print_timestamp ( $module [ 'utimestamp' ], true , [ 'style' => 'font-size: 7pt' ]);
$data [ 9 ] .= '</span>' ;
array_push ( $table -> data , $data );
$rowIndex ++ ;
}
2020-06-08 11:24:46 +02:00
ui_require_javascript_file ( 'pandora.js' );
2019-01-30 16:18:44 +01:00
?>
< script type = " text/javascript " >
/* <![CDATA[ */
$ ( " a.tag_details " ) . cluetip ({
arrows : true ,
attribute : 'href' ,
cluetipClass : 'default'
})
. click ( function () {
return false ;
});
$ ( " a.relations_details " ) . cluetip ({
width : 500 ,
arrows : true ,
attribute : 'href' ,
cluetipClass : 'default'
})
. click ( function () {
return false ;
});
/* ]]> */
</ script >
< ? php
if ( empty ( $table -> data )) {
if ( $filter_monitors ) {
ui_print_info_message ([ 'no_close' => true , 'message' => __ ( 'Any monitors aren\'t with this filter.' ) ]);
} else {
ui_print_info_message ([ 'no_close' => true , 'message' => __ ( 'This agent doesn\'t have any active monitors.' ) ]);
}
} else {
2019-06-03 14:30:23 +02:00
$url = 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $id_agente . '&refr=&filter_monitors=1&status_filter_monitor=' . $status_filter_monitor . '&status_text_monitor=' . $status_text_monitor . '&status_module_group=' . $status_module_group ;
2019-01-30 16:18:44 +01:00
if ( $paginate_module ) {
ui_pagination (
$count_modules ,
false ,
0 ,
0 ,
false ,
'offset' ,
true ,
'' ,
'pagination_list_modules(offset_param)' ,
[
'count' => '' ,
'offset' => 'offset_param' ,
]
);
}
html_print_table ( $table );
if ( $paginate_module ) {
ui_pagination (
$count_modules ,
false ,
0 ,
0 ,
false ,
'offset' ,
true ,
2019-03-27 17:03:55 +01:00
'pagination-bottom' ,
2019-01-30 16:18:44 +01:00
'pagination_list_modules(offset_param)' ,
[
'count' => '' ,
'offset' => 'offset_param' ,
]
);
}
}
unset ( $table );
unset ( $table_data );
}
if ( $get_type ) {
$id_module = ( int ) get_parameter ( 'id_module' );
$module = modules_get_agentmodule ( $id_module );
$graph_type = return_graphtype ( $module [ 'id_tipo_modulo' ]);
echo $graph_type ;
return ;
}
2020-12-09 14:05:40 +01:00
if ( $get_graph_module === true ) {
global $config ;
$output = '' ;
$graph_data = get_parameter ( 'graph_data' , '' );
$params = json_decode ( base64_decode ( $graph_data ), true );
$server_id = ( int ) get_parameter ( 'server_id' , 0 );
include_once $config [ 'homedir' ] . '/include/functions_graph.php' ;
// Metaconsole connection to the node.
if ( is_metaconsole () === true && empty ( $server_id ) === false ) {
$server = metaconsole_get_connection_by_id ( $server_id );
metaconsole_connect ( $server );
}
$output .= grafico_modulo_sparse ( $params );
echo $output ;
if ( is_metaconsole () === true && empty ( $server_id ) === false ) {
metaconsole_restore_db ();
}
return ;
}
if ( $get_graph_module_interfaces === true ) {
global $config ;
include_once $config [ 'homedir' ] . '/include/functions_graph.php' ;
$output = '' ;
$graph_data = get_parameter ( 'graph_data' , '' );
$params = json_decode ( base64_decode ( $graph_data ), true );
$modules = get_parameter ( 'modules' , '' );
$modules = json_decode ( base64_decode ( $modules ), true );
$graph_data_combined = get_parameter ( 'graph_data_combined' , '' );
$params_combined = json_decode (
base64_decode ( $graph_data_combined ),
true
);
$output .= graphic_combined_module (
$modules ,
$params ,
$params_combined
);
echo $output ;
return ;
}
2016-10-06 08:58:53 +02:00
}