From ad7c4c87604546d7d81df69480f7865c07a28e88 Mon Sep 17 00:00:00 2001 From: mdtrooper Date: Fri, 14 Jun 2013 12:14:22 +0000 Subject: [PATCH] 2013-06-14 Miguel de Dios * extensions/plugin_registration.php: fixed the url of module library and now show ever the form to upload more plugins. MERGED FROM THE BRANCH PANDORA_4.0 git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@8332 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 7 + .../extensions/plugin_registration.php | 290 ++++++------------ 2 files changed, 106 insertions(+), 191 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 45bf287241..1ea73a7206 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,10 @@ +2013-06-14 Miguel de Dios + + * extensions/plugin_registration.php: fixed the url of module + library and now show ever the form to upload more plugins. + + MERGED FROM THE BRANCH PANDORA_4.0 + 2013-06-13 Sergio Martin * include/functions_ui.php: Fix layout issue diff --git a/pandora_console/extensions/plugin_registration.php b/pandora_console/extensions/plugin_registration.php index a63ad426fc..bb1ec18d25 100644 --- a/pandora_console/extensions/plugin_registration.php +++ b/pandora_console/extensions/plugin_registration.php @@ -26,31 +26,19 @@ function pluginreg_extension_main () { ui_print_page_header (__('Plugin registration'), "images/extensions.png", false, "", true, "" ); echo "
"; - printf(__("This extension makes registration of server plugins more easy. Here you can upload a server plugin in Pandora FMS 3.x zipped format (.pspz). Please refer to documentation on how to obtain and use Pandora FMS Server Plugins.

You can get more plugins in our Public Resource Library") , "http://pandorafms.org/index.php?sec=community&sec2=repository&lng=en"); + printf(__("This extension makes registration of server plugins more easy. Here you can upload a server plugin in Pandora FMS 3.x zipped format (.pspz). Please refer to documentation on how to obtain and use Pandora FMS Server Plugins.

You can get more plugins in our Public Resource Library") , "http://pandorafms.com/Library/Library/"); echo "
"; echo "

"; - if (!isset ($_FILES['plugin_upload']['tmp_name'])) { - // Upload form - echo "
"; - echo ''; - echo "
"; - echo ""; - echo "
"; - - - echo ''; - echo "
"; - echo __("If you want to register manually the plugin, you can upload it using file manager."). " ". "". "".__("Use file manager to upload plugin executable file."). " ".__("Plugin files will be uploaded to console in '/attachment/plugin' directory."); - echo "
"; - - return; + $zip = null; + $upload = false; + if (isset($_FILES['plugin_upload'])) { + $config["plugin_store"] = $config["attachment_store"] . "/plugin"; + $zip = zip_open($_FILES['plugin_upload']['tmp_name']); + $upload = true; } - $config["plugin_store"] = $config["attachment_store"] . "/plugin"; - $zip = zip_open($_FILES['plugin_upload']['tmp_name']); - if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry, "r")) { @@ -72,182 +60,102 @@ function pluginreg_extension_main () { zip_close($zip); } - // Parse with sections - if (! $ini_array = parse_ini_file($config["attachment_store"] . "/plugin_definition.ini", true)) { - echo "

".__("Cannot load INI file")."

"; - return; - } - - // Get the version of the pspz - // Version 1: Until 4.0.x - // Version 2: From 5.0 - $version = isset($ini_array["plugin_definition"]["version"]) ? $ini_array["plugin_definition"]["version"] : 1; - - if (!isset($ini_array["plugin_definition"]["execution_postcommand"])) { - $ini_array["plugin_definition"]["execution_postcommand"] = ''; - } - - // From Pandora 5.0 the pspz are in different format (version 2) - // If pspz is a version 1, we convert it to 2 - if($version == 1) { - $ini_array["plugin_definition"] = pluginreg_convert_plugin_1_to_2($ini_array["plugin_definition"]); - } - - // Build plugin_exec - $exec_path = $config["plugin_store"] . "/" . $ini_array["plugin_definition"]["filename"]; - - $file_exec_path = $exec_path; - - if (isset($ini_array["plugin_definition"]["execution_command"]) && - ($ini_array["plugin_definition"]["execution_command"] != "")) { - $exec_path = $ini_array["plugin_definition"]["execution_command"] . " " . $config["plugin_store"] . "/" . $ini_array["plugin_definition"]["filename"]; - } - - if (!file_exists($file_exec_path)) { - echo "

".__("Plugin exec not found. Aborting!")."

"; - unlink ($config["attachment_store"] . "/plugin_definition.ini"); - return; - } - - // Verify if a plugin with the same name is already registered - $sql0 = "SELECT COUNT(*) FROM tplugin WHERE name = '" . io_safe_input ($ini_array["plugin_definition"]["name"]) . "'"; - $result = db_get_sql ($sql0); - - - if ($result> 0) { - echo "

".__("Plugin already registered. Aborting!")."

"; - unlink ($config["attachment_store"] . "/plugin_definition.ini"); - return; - } - - // Build macros - $macros = array(); - $n = 1; - while (1) { - if(!isset($ini_array["plugin_definition"]["macro_desc_field".$n."_"])) { - break; + if ($upload) { + // Parse with sections + if (! $ini_array = parse_ini_file($config["attachment_store"] . "/plugin_definition.ini", true)) { + echo "

".__("Cannot load INI file")."

"; + } + else { + $exec_path = $config["plugin_store"] . "/" . $ini_array["plugin_definition"]["filename"]; + + $file_exec_path = $exec_path; + + if (isset($ini_array["plugin_definition"]["execution_command"]) && ($ini_array["plugin_definition"]["execution_command"] != "")){ + $exec_path = $ini_array["plugin_definition"]["execution_command"] . " " . $config["plugin_store"] . "/" . $ini_array["plugin_definition"]["filename"]; + } + + if (isset($ini_array["plugin_definition"]["execution_postcommand"]) && ($ini_array["plugin_definition"]["execution_postcommand"] != "")){ + $exec_path = $exec_path . " " .$ini_array["plugin_definition"]["execution_postcommand"]; + } + + if (!file_exists($file_exec_path)) { + echo "

".__("Plugin exec not found. Aborting!")."

"; + unlink ($config["attachment_store"] . "/plugin_definition.ini"); + } + else { + // Verify if a plugin with the same name is already registered + + $sql0 = "SELECT COUNT(*) FROM tplugin WHERE name = '" . io_safe_input ($ini_array["plugin_definition"]["name"]) . "'"; + $result = db_get_sql ($sql0); + + + if ($result> 0) { + echo "

".__("Plugin already registered. Aborting!")."

"; + unlink ($config["attachment_store"] . "/plugin_definition.ini"); + } + else { + + $values = array( + 'name' => io_safe_input ($ini_array["plugin_definition"]["name"]), + 'description' => io_safe_input ($ini_array["plugin_definition"]["description"]), + 'max_timeout' => $ini_array["plugin_definition"]["timeout"], + 'execute' => io_safe_input ($exec_path), + 'net_dst_opt' => $ini_array["plugin_definition"]["ip_opt"], + 'net_port_opt' => $ini_array["plugin_definition"]["port_opt"], + 'user_opt' => $ini_array["plugin_definition"]["user_opt"], + 'pass_opt' => $ini_array["plugin_definition"]["pass_opt"], + 'plugin_type' => $ini_array["plugin_definition"]["plugin_type"]); + + $create_id = db_process_sql_insert('tplugin', $values); + + for ($ax=1; $ax <= $ini_array["plugin_definition"]["total_modules_provided"]; $ax++){ + $label = "module".$ax; + + $values = array( + 'name' => io_safe_input ($ini_array[$label]["name"]), + 'description' => io_safe_input ($ini_array[$label]["description"]), + 'id_group' => $ini_array[$label]["id_group"], + 'type' => $ini_array[$label]["type"], + 'max' => isset($ini_array[$label]["max"]) ? $ini_array[$label]["max"] : '', + 'min' => isset($ini_array[$label]["min"]) ? $ini_array[$label]["min"] : '', + 'module_interval' => isset($ini_array[$label]["module_interval"]) ? $ini_array[$label]["module_interval"] : '', + 'id_module_group' => $ini_array[$label]["id_module_group"], + 'id_modulo' => $ini_array[$label]["id_modulo"], + 'plugin_user' => io_safe_input ($ini_array[$label]["plugin_user"]), + 'plugin_pass' => io_safe_input ($ini_array[$label]["plugin_pass"]), + 'plugin_parameter' => io_safe_input ($ini_array[$label]["plugin_parameter"]), + 'max_timeout' => isset($ini_array[$label]["max_timeout"]) ? $ini_array[$label]["max_timeout"] : '', + 'history_data' => isset($ini_array[$label]["history_data"]) ? $ini_array[$label]["history_data"] : '', + 'min_warning' => isset($ini_array[$label]["min_warning"]) ? $ini_array[$label]["min_warning"] : '', + 'max_warning' => isset($ini_array[$label]["max_warning"]) ? $ini_array[$label]["max_warning"] : '', + 'str_warning' => isset($ini_array[$label]["str_warning"]) ? $ini_array[$label]["str_warning"] : '', + 'min_critical' => isset($ini_array[$label]["min_critical"]) ? $ini_array[$label]["min_critical"] : '', + 'max_critical' => isset($ini_array[$label]["max_critical"]) ? $ini_array[$label]["max_critical"] : '', + 'str_critical' => isset($ini_array[$label]["str_critical"]) ? $ini_array[$label]["str_critical"] : '', + 'min_ff_event' => isset($ini_array[$label]["min_ff_event"]) ? $ini_array[$label]["min_ff_event"] : '', + 'tcp_port' => isset($ini_array[$label]["tcp_port"]) ? $ini_array[$label]["tcp_port"] : '', + 'id_plugin' => $create_id); + + db_process_sql_insert('tnetwork_component', $values); + + echo "

".__("Module plugin registered"). " : ". $ini_array[$label]["name"] ."

"; + } + + echo "

".__("Plugin"). " ". $ini_array["plugin_definition"]["name"] . " ". __("Registered successfully")."

"; + unlink ($config["attachment_store"] . "/plugin_definition.ini"); + } + } } - - $macros[$n]['macro'] = "_field".$n."_"; - $macros[$n]['desc'] = $ini_array["plugin_definition"]["macro_desc_field".$n."_"]; - $macros[$n]['value'] = ""; - $macros[$n]['help'] = ""; - - $n++; } - if (empty($macros)) { - $macros = ''; - } - else { - $macros = json_encode($macros); - } + // Upload form + echo "
"; + echo ''; + echo "
"; + echo ""; + echo "
"; - $values = array( - 'name' => io_safe_input ($ini_array["plugin_definition"]["name"]), - 'description' => io_safe_input ($ini_array["plugin_definition"]["description"]), - 'max_timeout' => $ini_array["plugin_definition"]["timeout"], - 'max_retries' => isset($ini_array["plugin_definition"]["retries"]) ? $ini_array["plugin_definition"]["retries"] : 0, - 'execute' => io_safe_input ($exec_path), - 'parameters' => io_safe_input ($ini_array["plugin_definition"]["execution_postcommand"]), - 'macros' => $macros, - 'plugin_type' => $ini_array["plugin_definition"]["plugin_type"]); - - $create_id = db_process_sql_insert('tplugin', $values); - - for ($ax = 1; $ax <= $ini_array["plugin_definition"]["total_modules_provided"]; $ax++) { - $label = "module".$ax; - - $values = array( - 'name' => io_safe_input ($ini_array[$label]["name"]), - 'description' => io_safe_input ($ini_array[$label]["description"]), - 'id_group' => $ini_array[$label]["id_group"], - 'type' => $ini_array[$label]["type"], - 'max' => isset($ini_array[$label]["max"]) ? $ini_array[$label]["max"] : '', - 'min' => isset($ini_array[$label]["min"]) ? $ini_array[$label]["min"] : '', - 'module_interval' => isset($ini_array[$label]["module_interval"]) ? $ini_array[$label]["module_interval"] : '', - 'id_module_group' => $ini_array[$label]["id_module_group"], - 'id_modulo' => $ini_array[$label]["id_modulo"], - 'plugin_user' => io_safe_input ($ini_array[$label]["plugin_user"]), - 'plugin_pass' => io_safe_input ($ini_array[$label]["plugin_pass"]), - 'plugin_parameter' => io_safe_input ($ini_array[$label]["plugin_parameter"]), - 'max_timeout' => isset($ini_array[$label]["max_timeout"]) ? $ini_array[$label]["max_timeout"] : '', - 'history_data' => isset($ini_array[$label]["history_data"]) ? $ini_array[$label]["history_data"] : '', - 'min_warning' => isset($ini_array[$label]["min_warning"]) ? $ini_array[$label]["min_warning"] : '', - 'max_warning' => isset($ini_array[$label]["max_warning"]) ? $ini_array[$label]["max_warning"] : '', - 'str_warning' => isset($ini_array[$label]["str_warning"]) ? $ini_array[$label]["str_warning"] : '', - 'min_critical' => isset($ini_array[$label]["min_critical"]) ? $ini_array[$label]["min_critical"] : '', - 'max_critical' => isset($ini_array[$label]["max_critical"]) ? $ini_array[$label]["max_critical"] : '', - 'str_critical' => isset($ini_array[$label]["str_critical"]) ? $ini_array[$label]["str_critical"] : '', - 'min_ff_event' => isset($ini_array[$label]["min_ff_event"]) ? $ini_array[$label]["min_ff_event"] : '', - 'tcp_port' => isset($ini_array[$label]["tcp_port"]) ? $ini_array[$label]["tcp_port"] : '', - 'critical_inverse' => isset($ini_array[$label]["critical_inverse"]) ? $ini_array[$label]["critical_inverse"] : '', - 'warning_inverse' => isset($ini_array[$label]["warning_inverse"]) ? $ini_array[$label]["warning_inverse"] : '', - 'critical_instructions' => isset($ini_array[$label]["critical_instructions"]) ? $ini_array[$label]["critical_instructions"] : '', - 'warning_instructions' => isset($ini_array[$label]["warning_instructions"]) ? $ini_array[$label]["warning_instructions"] : '', - 'unknown_instructions' => isset($ini_array[$label]["unknown_instructions"]) ? $ini_array[$label]["unknown_instructions"] : '', - 'id_plugin' => $create_id); - - db_process_sql_insert('tnetwork_component', $values); - - ui_print_success_message(__("Module plugin registered"). " : ". $ini_array[$label]["name"]); - } - - ui_print_success_message(__("Plugin"). " ". $ini_array["plugin_definition"]["name"] . " ". __("Registered successfully")); - unlink ($config["attachment_store"] . "/plugin_definition.ini"); - -} - -function pluginreg_convert_plugin_1_to_2($plugin) { - $ip_desc = 'Target IP'; - $port_desc = 'Port'; - $user_desc = 'Username'; - $pass_desc = 'Password'; - $param_desc = 'Parameters'; - - $parameters = ''; - $n_field = 1; - $macro = "_field".$n_field."_"; - - if(!empty($plugin["ip_opt"])) { - $parameters.= $plugin["ip_opt"]." $macro "; - unset($plugin["ip_opt"]); - $plugin['macro_desc'.$macro] = $ip_desc; - $n_field ++; - $macro = "_field".$n_field."_"; - } - - if(!empty($plugin["port_opt"])) { - $parameters.= $plugin["port_opt"]." $macro "; - unset($plugin["port_opt"]); - $plugin['macro_desc'.$macro] = $port_desc; - $n_field ++; - $macro = "_field".$n_field."_"; - } - - if(!empty($plugin["user_opt"])) { - $parameters.= $plugin["user_opt"]." $macro "; - unset($plugin["user_opt"]); - $plugin['macro_desc'.$macro] = $user_desc; - $n_field ++; - $macro = "_field".$n_field."_"; - } - - if(!empty($plugin["pass_opt"])) { - $parameters.= $plugin["pass_opt"]." $macro "; - unset($plugin["pass_opt"]); - $plugin['macro_desc'.$macro] = $pass_desc; - $n_field ++; - $macro = "_field".$n_field."_"; - } - - // Always add a parameter to - $parameters.= " $macro "; - $plugin['macro_desc'.$macro] = $param_desc; - - $plugin["execution_postcommand"] .= " $parameters"; - - return $plugin; + return; } extensions_add_godmode_menu_option (__('Register plugin'), 'PM','gservers', null, "v1r1");