$id_plugin)); $preload = io_safe_output($description); $preload = str_replace ("\n", "
", $preload); echo $preload; return; } // Load global vars global $config; require_once ($config['homedir'] . "/include/functions_filemanager.php"); check_login (); if (! check_acl ($config['id_user'], 0, "LM")) { db_pandora_audit("ACL Violation", "Trying to access Plugin Management"); require ("general/noaccess.php"); return; } enterprise_include_once ('meta/include/functions_components_meta.php'); $view = get_parameter ("view", ""); $create = get_parameter ("create", ""); $filemanager = (bool)get_parameter("filemanager", false); $plugin_command = get_parameter('plugin_command', ''); $tab = get_parameter('tab', ''); if ($view != "") { $form_id = $view; $plugin = db_get_row ("tplugin", "id", $form_id); $form_name = $plugin["name"]; $form_description = $plugin["description"]; $form_max_timeout = $plugin ["max_timeout"]; $form_max_retries = $plugin ["max_retries"]; if (empty($plugin_command)) $form_execute = $plugin ["execute"]; else $form_execute = $plugin_command; $form_plugin_type = $plugin ["plugin_type"]; $macros = $plugin ["macros"]; $parameters = $plugin ["parameters"]; } if ($create != "") { $form_id = 0; $form_name = ""; $form_description = ""; $form_max_timeout = 15; $form_max_retries = 1; $form_execute = $plugin_command; $form_plugin_type = 0; $form_parameters = ""; $macros = ""; $parameters = ""; } //END LOAD VALUES // ===================================================================== // INIT FILEMANAGER // ===================================================================== if ($filemanager) { $id_plugin = (int)get_parameter('id_plugin', 0); /* Add custom directories here */ $fallback_directory = "attachment/plugin"; $directory = (string) get_parameter ('directory', $fallback_directory); // A miminal security check to avoid directory traversal if (preg_match ("/\.\./", $directory)) $directory = $fallback_directory; if (preg_match ("/^\//", $directory)) $directory = $fallback_directory; if (preg_match ("/^manager/", $directory)) $directory = $fallback_directory; $banned_directories['include'] = true; $banned_directories['godmode'] = true; $banned_directories['operation'] = true; $banned_directories['reporting'] = true; $banned_directories['general'] = true; $banned_directories[ENTERPRISE_DIR] = true; if (isset ($banned_directories[$directory])) $directory = $fallback_directory; $real_directory = realpath ($config['homedir'] . '/' . $directory); echo '

' . __('Index of %s', $directory) . '

'; $chunck_url = '&view=' . $id_plugin; if ($id_plugin == 0) { $chunck_url = '&create=1'; } filemanager_file_explorer($real_directory, $directory, 'index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin=' . $id_plugin, $fallback_directory, false, false, 'index.php?sec=gservers&sec2=godmode/servers/plugin' . $chunck_url . '&plugin_command=[FILE_FULLPATH]&id_plugin=' . $id_plugin, true, 0775); return; } // ===================================================================== // END FILEMANAGER // ===================================================================== // SHOW THE FORM // ===================================================================== $sec = 'gservers'; if (($create != "") OR ($view != "")) { if (defined('METACONSOLE')) { components_meta_print_header(); $sec = 'advanced'; } else { if ($create != "") ui_print_page_header (__('Plugin creation'), "images/gm_servers.png", false, "plugin_definition", true); else { ui_print_page_header (__('Plugin update'), "images/gm_servers.png", false, "plugin_definition", true); } } enterprise_hook('open_meta_frame'); if ($create == "") { $plugin_id = get_parameter ("view",""); echo "
"; } else { echo ""; } $table->width = '98%'; $table->id = 'table-form'; $table->class = 'databox_color'; $table->style = array (); $table->style[0] = 'font-weight: bold'; $table->style[2] = 'font-weight: bold'; $table->data = array (); $data = array(); $data[0] = __('Name'); $data[1] = ''; $table->colspan['plugin_name'][1] = 3; $table->data['plugin_name'] = $data; $data = array(); $data[0] = __('Plugin type'); $fields[0]= __("Standard"); $fields[1]= __("Nagios"); $data[1] = html_print_select ($fields, "form_plugin_type", $form_plugin_type, '', '', 0, true); $table->data['plugin_type'] = $data; $table->colspan['plugin_type'][1] = 3; $data[0] = __('Max. timeout').ui_print_help_tip (__('This value only will be applied if is minor than the server general configuration plugin timeout').'.

'.__('If you set a 0 seconds timeout, the server plugin timeout will be used'), true); $data[1] = html_print_extended_select_for_time ('form_max_timeout', $form_max_timeout, '', '', '0', false, true); $data[2] = __('Max. retries'); $data[3] = ''; $table->data['plugin_timeout'] = $data; $data = array(); $data[0] = __('Description'); $data[1] = ''; $table->colspan['plugin_desc'][1] = 3; $table->data['plugin_desc'] = $data; echo '
'; echo '
'; echo '
'.__('General').''; html_print_table($table); echo '
'; $table->data = array(); $plugin_id = get_parameter ("view", 0); $locked = true; // If we have plugin id (update mode) and this plugin used by any module or component // The command configuration will be locked if ($plugin_id > 0) { $modules_using_plugin = db_get_value_filter('count(*)','tagente_modulo', array('delete_pending' => 0, 'id_plugin' => $plugin_id)); $components_using_plugin = db_get_value_filter('count(*)','tnetwork_component', array('id_plugin' => $plugin_id)); if(($components_using_plugin + $modules_using_plugin) == 0) { $locked = false; } } else { $locked = false; } $disabled = ''; if ($locked) { $disabled = 'readonly="readonly"'; } $data = array(); $data[0] = __('Plugin command'); $data[1] = ''; if ($locked) { $data[1] .= html_print_image('images/lock.png', true, array('class' => 'command_advanced_conf')); } $data[1] .= ' '; $data[1] .= html_print_image('images/file.png', true); $data[1] .= ''; $table->data['plugin_command'] = $data; $data = array(); $data[0] = __('Plug-in parameters').ui_print_help_icon ('plugin_parameters', true); $data[1] = ''; if ($locked) { $data[1] .= html_print_image('images/lock.png', true, array('class' => 'command_advanced_conf')); } $table->data['plugin_parameters'] = $data; $data = array(); $data[0] = __('Command preview'); $data[1] = '
'; $table->data['plugin_preview'] = $data; echo '
'.__('Command').''; html_print_table($table); echo '
'; $data = array(); $table->data = array (); $macros = json_decode($macros,true); // The next row number is plugin_9 $next_name_number = 9; $i = 1; while (1) { // Always print at least one macro if((!isset($macros[$i]) || $macros[$i]['desc'] == '') && $i > 1) { break; } $macro_desc_name = 'field'.$i.'_desc'; $macro_desc_value = ''; $macro_help_name = 'field'.$i.'_help'; $macro_help_value = ''; $macro_value_name = 'field'.$i.'_value'; $macro_value_value = ''; $macro_name_name = 'field'.$i.'_macro'; $macro_name = '_field'.$i.'_'; if(isset($macros[$i]['desc'])) { $macro_desc_value = $macros[$i]['desc']; } if(isset($macros[$i]['help'])) { $macro_help_value = $macros[$i]['help']; } if(isset($macros[$i]['value'])) { $macro_value_value = $macros[$i]['value']; } $datam = array (); $datam[0] = __('Description')." ($macro_name)"; $datam[0] .= html_print_input_hidden($macro_name_name, $macro_name, true); $datam[1] = html_print_input_text_extended ($macro_desc_name, $macro_desc_value, 'text-'.$macro_desc_name, '', 30, 255, $locked, '', "class='command_advanced_conf'", true); if($locked) { $datam[1] .= html_print_image('images/lock.png', true, array('class' => 'command_advanced_conf')); } $datam[2] = __('Default value')." ($macro_name)"; $datam[3] = html_print_input_text_extended ($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, $locked, '', "class='command_component command_advanced_conf'", true); if($locked) { $datam[3] .= html_print_image('images/lock.png', true, array('class' => 'command_advanced_conf')); } $table->data['plugin_'.$next_name_number] = $datam; $next_name_number++; $table->colspan['plugin_'.$next_name_number][1] = 3; $datam = array (); $datam[0] = __('Help')." ($macro_name)


"; $tadisabled = $locked === true ? ' disabled' : ''; $datam[1] = html_print_textarea ($macro_help_name, 6, 100, $macro_help_value, 'class="command_advanced_conf" style="width: 97%;"' . $tadisabled, true); if($locked) { $datam[1] .= html_print_image('images/lock.png', true, array('class' => 'command_advanced_conf')); } $datam[1] .= "


"; $table->data['plugin_'.$next_name_number] = $datam; $next_name_number++; $i++; } if (!$locked) { $datam = array (); $datam[0] = ''.__('Add macro').' '.html_print_image('images/add.png',true).''; $datam[0] .= ''; $datam[0] .= ''; $delete_macro_style = ''; if($i <= 2) { $delete_macro_style = 'display:none;'; } $datam[2] = ''; $table->colspan['plugin_action'][0] = 2; $table->rowstyle['plugin_action'] = 'text-align:center'; $table->colspan['plugin_action'][2] = 2; $table->data['plugin_action'] = $datam; } echo '
'.__('Parameters macros').ui_print_help_icon ('macros', true).''; html_print_table($table); echo '
'; echo ''; echo '
'; if ($create != "") { echo ""; } else { echo ""; } echo '
'; echo '
'; enterprise_hook('close_meta_frame'); } else { if(defined('METACONSOLE')) { components_meta_print_header(); $sec = 'advanced'; } else { ui_print_page_header (__('Plugins registered in Pandora FMS'), "images/gm_servers.png", false, "", true); } enterprise_hook('open_meta_frame'); // Update plugin if (isset($_GET["update_plugin"])) { // if modified any parameter $plugin_id = get_parameter ("update_plugin", 0); $plugin_name = get_parameter ("form_name", ""); $plugin_description = get_parameter ("form_description", ""); $plugin_max_timeout = get_parameter ("form_max_timeout", ""); $plugin_max_retries = get_parameter ("form_max_retries", ""); $plugin_execute = get_parameter ("form_execute", ""); $plugin_plugin_type = get_parameter ("form_plugin_type", "0"); $parameters = get_parameter ("form_parameters", ""); // Get macros $i = 1; $macros = array(); while (1) { $macro = (string)get_parameter ('field'.$i.'_macro'); if($macro == '') { break; } $desc = (string)get_parameter ('field'.$i.'_desc'); $help = (string)get_parameter ('field'.$i.'_help'); $value = (string)get_parameter ('field'.$i.'_value'); $macros[$i]['macro'] = $macro; $macros[$i]['desc'] = $desc; $macros[$i]['help'] = $help; $macros[$i]['value'] = $value; $i++; } $macros = io_json_mb_encode($macros); $values = array( 'name' => $plugin_name, 'description' => $plugin_description, 'max_timeout' => $plugin_max_timeout, 'max_retries' => $plugin_max_retries, 'execute' => $plugin_execute, 'plugin_type' => $plugin_plugin_type, 'parameters' => $parameters, 'macros' => $macros); $result = false; if ($values['name'] != '' && $values['execute'] != '') $result = db_process_sql_update('tplugin', $values, array('id' => $plugin_id)); if (! $result) { ui_print_error_message(__('Problem updating plugin')); } else { ui_print_success_message(__('Plugin updated successfully')); } } // Create plugin if (isset($_GET["create_plugin"])) { $plugin_name = get_parameter ("form_name", ""); $plugin_description = get_parameter ("form_description", ""); $plugin_max_timeout = get_parameter ("form_max_timeout", ""); $plugin_max_retries = get_parameter ("form_max_retries", ""); $plugin_execute = get_parameter ("form_execute", ""); $plugin_plugin_type = get_parameter ("form_plugin_type", "0"); $plugin_parameters = get_parameter ("form_parameters", "0"); // Get macros $i = 1; $macros = array(); while (1) { $macro = (string)get_parameter ('field'.$i.'_macro'); if($macro == '') { break; } $desc = (string)get_parameter ('field'.$i.'_desc'); $help = (string)get_parameter ('field'.$i.'_help'); $value = (string)get_parameter ('field'.$i.'_value'); $macros[$i]['macro'] = $macro; $macros[$i]['desc'] = $desc; $macros[$i]['help'] = $help; $macros[$i]['value'] = $value; $i++; } $macros = io_json_mb_encode($macros); $values = array( 'name' => $plugin_name, 'description' => $plugin_description, 'max_timeout' => $plugin_max_timeout, 'max_retries' => $plugin_max_retries, 'execute' => $plugin_execute, 'plugin_type' => $plugin_plugin_type, 'parameters' => $plugin_parameters, 'macros' => $macros); $result = false; if ($values['name'] != '' && $values['execute'] != '') $result = db_process_sql_insert('tplugin', $values); if (! $result) { ui_print_error_message(__('Problem creating plugin')); } else { ui_print_success_message(__('Plugin created successfully')); } } if (isset($_GET["kill_plugin"])) { // if delete alert $plugin_id = get_parameter ("kill_plugin", 0); $result = db_process_sql_delete('tplugin', array('id' => $plugin_id)); if (! $result) { ui_print_error_message(__('Problem deleting plugin')); } else { ui_print_success_message(__('Plugin deleted successfully')); } if ($plugin_id != 0) { // Delete all the modules with this plugin $plugin_modules = db_get_all_rows_filter('tagente_modulo', array('id_plugin' => $plugin_id)); foreach($plugin_modules as $pm) { modules_delete_agent_module ($pm['id_agente_modulo']); } } } // If not edition or insert, then list available plugins $rows = db_get_all_rows_sql('SELECT * FROM tplugin ORDER BY name'); if ($rows !== false) { echo ''; echo ""; echo ""; echo ""; echo ""; $color = 0; foreach ($rows as $row) { if ($color == 1) { $tdcolor = "datos"; $color = 0; } else { $tdcolor = "datos2"; $color = 1; } echo ""; echo ""; echo ""; } echo "
" . __('Name') . "" . __('Type') . "" . __('Command') . "" . '' . __('Op.') . '' . "
"; echo ""; echo $row["name"]; echo ""; if ($row["plugin_type"] == 0) echo __('Standard'); else echo __('Nagios'); echo ""; echo $row["execute"]; echo ""; echo "" . html_print_image('images/config.png', true, array("title" => __("Edit"))) . "  "; echo "" . html_print_image("images/cross.png", true, array("border" => '0')) . ""; echo "
"; } else { echo '
'. __('There are no plugins in the system') . '
'; echo "
"; } echo ""; echo "
"; echo "
"; echo ""; echo "
"; enterprise_hook('close_meta_frame'); } ui_require_javascript_file('pandora_modules'); ?>