<?php /** * Extension to manage a list of gateways and the node address where they should * point to. * * @category Extensions * @package Pandora FMS * @subpackage Community * @version 1.0.0 * @license See below * * ______ ___ _______ _______ ________ * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| * | __/| _ | | _ || _ | _| _ | | ___| |__ | * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| * * ============================================================================ * Copyright (c) 2005-2019 Artica Soluciones Tecnologicas * 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. * ============================================================================ */ // Load global vars. global $config; require_once 'include/config.php'; check_login(); if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user']) ) { db_pandora_audit('ACL Violation', 'Trying to access Setup Management'); include 'general/noaccess.php'; return; } $update_config = get_parameter('update_config', 0); if ($update_config == 1 && $config['history_db_enabled'] == 1) { if (! isset($config['history_db_connection']) || $config['history_db_connection'] === false ) { $config['history_db_connection'] = db_connect( $config['history_db_host'], $config['history_db_name'], $config['history_db_user'], io_output_password($config['history_db_pass']), $config['history_db_port'], false ); } if ($config['history_db_connection'] !== false) { $historical_days_purge = get_parameter('historical_days_purge', 0); $historical_days_compact = get_parameter('historical_days_compact', 0); $historical_step_compact = get_parameter('historical_step_compact', 0); $historical_event_purge = get_parameter('historical_event_purge', 0); $historical_string_purge = get_parameter('historical_string_purge', 0); $history_connect = @mysql_db_process_sql( 'SELECT 1 FROM tconfig', 'affected_rows', $config['history_db_connection'], false ); $config_history = false; if ($history_connect !== false) { $config_history = mysql_db_process_sql( 'SELECT * FROM tconfig', 'affected_rows', $config['history_db_connection'], false ); if (!$config_history) { $sql = "INSERT INTO tconfig (token, `value`) VALUES ('days_purge', ".$historical_days_purge."), ('days_compact', ".$historical_days_compact."), ('step_compact', ".$historical_step_compact."), ('event_purge', ".$historical_event_purge."), ('string_purge', ".$historical_string_purge."), ('history_db_enabled', 0)"; mysql_db_process_sql( $sql, 'insert_id', $config['history_db_connection'], false ); } else { $sql = 'UPDATE tconfig SET `value` = '.$historical_days_purge." WHERE token = 'days_purge'"; mysql_db_process_sql( $sql, 'update_id', $config['history_db_connection'], false ); $sql = 'UPDATE tconfig SET `value` = '.$historical_days_compact." WHERE token = 'days_compact'"; mysql_db_process_sql( $sql, 'update_id', $config['history_db_connection'], false ); $sql = 'UPDATE tconfig SET `value` = '.$historical_step_compact." WHERE token = 'step_compact'"; mysql_db_process_sql( $sql, 'update_id', $config['history_db_connection'], false ); $sql = 'UPDATE tconfig SET `value` = '.$historical_event_purge." WHERE token = 'event_purge'"; mysql_db_process_sql( $sql, 'update_id', $config['history_db_connection'], false ); $sql = 'UPDATE tconfig SET `value` = '.$historical_string_purge." WHERE token = 'string_purge'"; mysql_db_process_sql( $sql, 'update_id', $config['history_db_connection'], false ); $sql = "UPDATE tconfig SET `value` = 0 WHERE token = 'history_db_enabled'"; mysql_db_process_sql( $sql, 'update_id', $config['history_db_connection'], false ); } } } } $table_status = new StdClass(); $table_status->width = '100%'; $table_status->class = 'databox filters'; $table_status->style[0] = 'font-weight: bold'; $table_status->size[0] = '10%'; $table_status->data = []; $sql = "SELECT UNIX_TIMESTAMP(NOW()) - `value` AS updated_at FROM tconfig WHERE token = 'db_maintance'"; $time_pandora_db_active = db_get_sql($sql); if ($time_pandora_db_active < SECONDS_12HOURS) { $table_status->data[0][0] = html_print_image( 'images/dot_green.png', true ); } else { $table_status->data[0][0] = html_print_image( 'images/dot_red.png', true ); } $table_status->data[0][0] .= ' '.__('Pandora_db running in active database.'); $table_status->data[0][0] .= ' '.__('Executed:').' '; $table_status->data[0][0] .= human_time_description_raw( $time_pandora_db_active, true ); $table_status->data[0][0] .= ' '.__('ago').'.'; if ($config['history_db_enabled'] == 1) { if (! isset($config['history_db_connection']) || $config['history_db_connection'] === false ) { $config['history_db_connection'] = db_connect( $config['history_db_host'], $config['history_db_name'], $config['history_db_user'], io_output_password($config['history_db_pass']), $config['history_db_port'], false ); } $history_connect = @mysql_db_process_sql( 'SELECT 1 FROM tconfig', 'affected_rows', $config['history_db_connection'], false ); $time_pandora_db_history = false; if ($history_connect) { if ($config['history_db_connection']) { $time_pandora_db_history = mysql_db_process_sql( $sql, 'insert_id', $config['history_db_connection'], false ); } } if ($time_pandora_db_history !== false && $time_pandora_db_history[0]['updated_at'] < SECONDS_12HOURS ) { $table_status->data[1][0] = html_print_image( 'images/dot_green.png', true ); } else { $table_status->data[1][0] = html_print_image( 'images/dot_red.png', true ); } $table_status->data[1][0] .= ' '.__('Pandora_db running in historical database.'); $table_status->data[1][0] .= ' '.__('Executed:').' '; if ($time_pandora_db_history !== false) { $table_status->data[1][0] .= human_time_description_raw( $time_pandora_db_history[0]['updated_at'], true ).' '.__('ago').'.'; } else { $table_status->data[1][0] .= __('not executed'); } } $table = new StdClass(); $table->width = '100%'; $table->class = 'databox filters'; $table->data = []; $table->style[0] = 'font-weight: bold'; $table->size[0] = '70%'; $table->size[1] = '30%'; // enterprise_hook('enterprise_warnings_history_days'); $table->data[1][0] = __('Max. days before delete events'); $table->data[1][1] = html_print_input_text( 'event_purge', $config['event_purge'], '', 5, 5, true ); $table->data[2][0] = __('Max. days before delete traps'); $table->data[2][1] = html_print_input_text( 'trap_purge', $config['trap_purge'], '', 5, 5, true ); $table->data[3][0] = __('Max. days before delete audit events'); $table->data[3][1] = html_print_input_text( 'audit_purge', $config['audit_purge'], '', 5, 5, true ); $table->data[4][0] = __('Max. days before delete string data'); $table->data[4][1] = html_print_input_text( 'string_purge', $config['string_purge'], '', 5, 5, true ); $table->data[5][0] = __('Max. days before delete GIS data'); $table->data[5][1] = html_print_input_text( 'gis_purge', $config['gis_purge'], '', 5, 5, true ); $table->data[6][0] = __('Max. days before purge'); $table->data[6][1] = html_print_input_text( 'days_purge', $config['days_purge'], '', 5, 5, true ); $table->data[7][0] = __('Max. days before compact data'); $table->data[7][1] = html_print_input_text( 'days_compact', $config['days_compact'], '', 5, 5, true ); $table->data[8][0] = __('Max. days before delete unknown modules'); $table->data[8][1] = html_print_input_text( 'days_delete_unknown', $config['days_delete_unknown'], '', 5, 5, true ); $table->data[9][0] = __('Max. days before delete autodisabled agents'); $table->data[9][1] = html_print_input_text( 'days_autodisable_deletion', $config['days_autodisable_deletion'], '', 5, 5, true ); $table->data[10][0] = __('Retention period of past special days'); $table->data[10][1] = html_print_input_text( 'num_past_special_days', $config['num_past_special_days'], '', 5, 5, true ); $table->data[11][0] = __('Max. macro data fields'); $table->data[11][1] = html_print_input_text( 'max_macro_fields', $config['max_macro_fields'], '', 5, 5, true, false, false, 'onChange="change_macro_fields()"' ); if (enterprise_installed()) { $table->data[12][0] = __('Max. days before delete inventory data'); $table->data[12][1] = html_print_input_text( 'inventory_purge', $config['inventory_purge'], '', 5, 5, true ); } if ($config['history_db_enabled'] == 1) { if (! isset($config['history_db_connection']) || $config['history_db_connection'] === false ) { $config['history_db_connection'] = db_connect( $config['history_db_host'], $config['history_db_name'], $config['history_db_user'], io_output_password($config['history_db_pass']), $config['history_db_port'], false ); } $config_history = false; if ($config['history_db_connection']) { $history_connect = @mysql_db_process_sql( 'SELECT 1 FROM tconfig', 'affected_rows', $config['history_db_connection'], false ); if ($history_connect !== false) { $config_history_array = mysql_db_process_sql( 'SELECT * FROM tconfig', 'affected_rows', $config['history_db_connection'], false ); if (isset($config_history_array) && is_array($config_history_array)) { foreach ($config_history_array as $key => $value) { $config_history[$value['token']] = $value['value']; } } } else { echo ui_print_error_message( __('The tconfig table does not exist in the historical database') ); } } if ($config_history === false) { $config_history = []; $config_history['days_purge'] = 180; $config_history['days_compact'] = 120; $config_history['step_compact'] = 1; $config_history['event_purge'] = 180; $config_history['string_purge'] = 180; } $table_historical = new StdClass(); $table_historical->width = '100%'; $table_historical->class = 'databox filters'; $table_historical->data = []; $table_historical->style[0] = 'font-weight: bold'; $table_historical->size[0] = '70%'; $table_historical->size[1] = '30%'; enterprise_hook('enterprise_warnings_history_days'); $table_historical->data[0][0] = __('Max. days before purge'); $table_historical->data[0][1] = html_print_input_text( 'historical_days_purge', $config_history['days_purge'], '', 5, 5, true ); $table_historical->data[1][0] = __('Max. days before compact data'); $table_historical->data[1][1] = html_print_input_text( 'historical_days_compact', $config_history['days_compact'], '', 5, 5, true ); $table_historical->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)'); $table_historical->data[2][1] = html_print_input_text( 'historical_step_compact', $config_history['step_compact'], '', 5, 5, true ); $table_historical->data[3][0] = __('Max. days before delete events'); $table_historical->data[3][1] = html_print_input_text( 'historical_event_purge', $config_history['event_purge'], '', 5, 5, true ); $table_historical->data[4][0] = __('Max. days before delete string data'); $table_historical->data[4][1] = html_print_input_text( 'historical_string_purge', $config_history['string_purge'], '', 5, 5, true ); $table_historical->data[4][1] .= html_print_input_hidden( 'historical_history_db_enabled', 0, true ); } $table->data[] = [ __('Max. days before delete old messages'), html_print_input_text( 'delete_old_messages', $config['delete_old_messages'], '', 5, 5, true ), ]; $table->data[] = [ __('Max. days before delete old network matrix data'), html_print_input_text( 'delete_old_network_matrix', $config['delete_old_network_matrix'], '', 5, 5, true ), ]; $table_other = new stdClass(); $table_other->width = '100%'; $table_other->class = 'databox filters'; $table_other->data = []; $table_other->style[0] = 'font-weight: bold'; $table_other->size[0] = '70%'; $table_other->size[1] = '30%'; $table_other->data[1][0] = __('Item limit for realtime reports'); $table_other->data[1][1] = html_print_input_text( 'report_limit', $config['report_limit'], '', 5, 5, true ); $table_other->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)'); $table_other->data[2][1] = html_print_input_text( 'step_compact', $config['step_compact'], '', 5, 5, true ); $intervals = []; $intervals[SECONDS_1HOUR] = __('1 hour'); $intervals[SECONDS_12HOURS] = __('12 hours'); $intervals[SECONDS_1DAY] = __('Last day'); $intervals[SECONDS_2DAY] = __('2 days'); $intervals[SECONDS_10DAY] = __('10 days'); $intervals[SECONDS_1WEEK] = __('Last week'); $intervals[SECONDS_2WEEK] = __('2 weeks'); $intervals[SECONDS_1MONTH] = __('Last month'); $table_other->data[3][0] = __('Default hours for event view'); $table_other->data[3][1] = html_print_input_text( 'event_view_hr', $config['event_view_hr'], '', 5, 5, true ); $table_other->data[5][0] = __('Use realtime statistics'); $table_other->data[5][1] = html_print_checkbox_switch( 'realtimestats', 1, $config['realtimestats'], true ); $table_other->data[6][0] = __('Batch statistics period (secs)'); $table_other->data[6][1] = html_print_input_text( 'stats_interval', $config['stats_interval'], '', 5, 5, true ); $table_other->data[7][0] = __('Use agent access graph'); $table_other->data[7][1] = html_print_checkbox_switch('agentaccess', 1, $config['agentaccess'], true); $table_other->data[8][0] = __('Max. recommended number of files in attachment directory'); $table_other->data[8][1] = html_print_input_text( 'num_files_attachment', $config['num_files_attachment'], '', 5, 5, true ); $table_other->data[9][0] = __('Delete not init modules'); $table_other->data[9][1] = html_print_checkbox_switch('delete_notinit', 1, $config['delete_notinit'], true); $table_other->data[10][0] = __('Big Operation Step to purge old data'); $table_other->data[10][1] = html_print_input_text( 'big_operation_step_datos_purge', $config['big_operation_step_datos_purge'], '', 5, 5, true ); $table_other->data[11][0] = __('Small Operation Step to purge old data'); $table_other->data[11][1] = html_print_input_text( 'small_operation_step_datos_purge', $config['small_operation_step_datos_purge'], '', 5, 5, true ); $table_other->data[12][0] = __('Graph container - Max. Items'); $table_other->data[12][1] = html_print_input_text( 'max_graph_container', $config['max_graph_container'], '', 5, 5, true ); $table_other->data[13][0] = __('Events response max. execution'); $table_other->data[13][1] = html_print_input_text( 'max_execution_event_response', $config['max_execution_event_response'], '', 5, 5, true ); echo '<form id="form_setup" method="post">'; echo '<fieldset>'; echo '<legend>'.__('Database maintenance status').' '.ui_print_help_icon('database_maintenance_status_tab', true).'</legend>'; html_print_table($table_status); echo '</fieldset>'; echo '<fieldset>'; echo '<legend>'.__('Database maintenance options').' '.ui_print_help_icon('database_maintenance_options_tab', true).'</legend>'; html_print_table($table); echo '</fieldset>'; if ($config['history_db_enabled'] == 1) { echo '<fieldset>'; echo '<legend>'.__('Historical database maintenance options').' '.ui_print_help_icon('historical_database_maintenance_options_tab', true).'</legend>'; html_print_table($table_historical); echo '</fieldset>'; } echo '<fieldset>'; echo '<legend>'.__('Others').' '.ui_print_help_icon('others_database_maintenance_options_tab', true).'</legend>'; html_print_table($table_other); echo '</fieldset>'; echo '<div class="action-buttons" style="width: '.$table->width.'">'; html_print_input_hidden('update_config', 1); html_print_submit_button( __('Update'), 'update_button', false, 'class="sub upd"' ); echo '</div>'; echo '</form>'; ?> <script language="javascript" type="text/javascript"> function change_macro_fields() { var value = $("#text-max_macro_fields").val(); if (value <= 0) { $("#text-max_macro_fields").val(1); } else if (value > 20) { $("#text-max_macro_fields").val(20); } } </script>