"; 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"); echo ""; echo "

"; if (!isset ($_FILES['plugin_upload']['tmp_name'])){ // Upload form echo "
"; echo ''; echo "
"; echo ""; echo "
"; return; } $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")) { if (zip_entry_name($zip_entry) == "plugin_definition.ini") { $basepath = $config["attachment_store"]; } else { $basepath = $config["plugin_store"]; } $filename = $basepath . "/". zip_entry_name($zip_entry); $fp = fopen($filename, 'w'); $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); fwrite($fp, $buf); fclose($fp); chmod ($filename, 0755); zip_entry_close($zip_entry); } } 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; } $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"); return; } // Verify if a plugin with the same name is already registered $sql0 = "SELECT COUNT(*) FROM tplugin WHERE name = '" . safe_input ($ini_array["plugin_definition"]["name"]) . "'"; $result = get_db_sql ($sql0); if ($result> 0) { echo "

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

"; unlink ($config["attachment_store"] . "/plugin_definition.ini"); return;; } $values = array( 'name' => safe_input ($ini_array["plugin_definition"]["name"]), 'description' => safe_input ($ini_array["plugin_definition"]["description"]), 'max_timeout' => $ini_array["plugin_definition"]["timeout"], 'execute' => 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 = process_sql_insert('tplugin', $values); $values = array( 'name' => safe_input ($ini_array["plugin_definition"]["name"]), 'description' => safe_input ($ini_array["plugin_definition"]["description"]), 'max_timeout' => $ini_array["plugin_definition"]["timeout"], 'execute' => 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 = process_sql_insert('tplugin', $values); for ($ax=1; $ax <= $ini_array["plugin_definition"]["total_modules_provided"]; $ax++){ $label = "module".$ax; $values = array( 'name' => safe_input ($ini_array[$label]["name"]), 'description' => safe_input ($ini_array[$label]["description"]), 'id_group' => $ini_array[$label]["id_group"], 'type' => $ini_array[$label]["type"], 'max' => $ini_array[$label]["max"], 'min' => $ini_array[$label]["min"], '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' => safe_input ($ini_array[$label]["plugin_user"]), 'plugin_pass' => safe_input ($ini_array[$label]["plugin_pass"]), 'plugin_parameter' => safe_input ($ini_array[$label]["plugin_parameter"]), 'max_timeout' => $ini_array[$label]["max_timeout"], 'history_data' => $ini_array[$label]["history_data"], 'min_warning' => $ini_array[$label]["min_warning"], 'min_critical' => $ini_array[$label]["min_critical"], 'min_ff_event' => $ini_array[$label]["min_ff_event"], 'tcp_port' => $ini_array[$label]["tcp_port"], 'id_plugin' => $create_id); 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"); } add_godmode_menu_option (__('Register plugin'), 'PM','gservers',''); add_extension_godmode_function('pluginreg_extension_main'); ?>