====== Desarrollo de extensiones de consola ======
{{indexmenu_n>7}}
===== Desarrollo de extensiones de consola =====
Las extensiones son una manera de desarrollar una nueva funcionalidad para su Pandora FMS Console como //plugins//. En este capítulo se explica cómo desarrollar una extensión.
===== Tipos de Extensiones =====
Una extensión puede ser alguno (o varios) de los siguientes tipos:
* **Pestaña agente**: Extensiones que aparecen en la cabecera de pestañas de la vista de operación y/o edición del agente.
* **Visibles**: Extensiones que aparecen en el Menú de Pandora FMS.
* **Invisibles**: Extensiones que se cargan y ejecutan en el ''index.php'' del Menú de Pandora FMS pero que no aparecen en el Menú de PFMS.
===== Directorio de Extensiones =====
El directorio de extensiones es un subdirectorio dentro de la instalación local de la Consola web de Pandora FMS que tiene el nombre de ''extensions''. Este directorio contiene lo siguiente para cada extensión:
**Fichero principal de la extensión**
Este fichero tiene el código que se ha de cargar en la Consola web de Pandora FMS.
**Subdirectorio de extensión**
Es opcional y puede contener el fichero de imagen del icono ( 18 por 18 pixeles ) que se muestra al lado del nombre de la extensión en el menú, así como otros ficheros como traducciones, módulos e imágenes.
===== Estructura de la extensión =====
" . ___("This table show in columns the modules group and for rows agents group. The cell show all modules") . " " . ___("The colours meaning:") .
"
===== API para Extensiones =====
extensions_add_operation_menu_option ('
Esta función añade el enlace a la extensión con el nombre dado en el menú **Operaciones**. El tercer parámetro es opcional y este es el campo opcional para que la imagen de icono (18 por 18 pixeles) aparezca al lado del enlace.
Si este último parámetro no está definido, se utilizará el icono de un enchufe ( {{:wiki:extensions.png}}).
==== extensions_add_godmode_menu_option ====
extensions_add_godmode_menu_option ('
Esta función añade el enlace a la extensión con el nombre dado en el menu **Godmode** si el usuario tiene el nivel de ACL requerido tal y como indica el segundo parámetro. El cuarto parámetro es opcional y es el campo relativo para que a la imagen del icono ( 18 por 18 pixelse) aparezca al lado del enlace.
Si este último parámetro no está definido, se utilizará el icono de un enchufe ( {{:wiki:extensions.png}}).
==== extensions_add_main_function ====
extensions_add_main_function ('
Fija la función //callback// que devolverá cuando el usuario haga clic en el enlace de la extensión del menú operación.
==== extensions_add_godmode_function ====
extensions_add_godmode_function ('
Añade la función de extensión para llamar una vez que el usuario vaya a la extensión en el godmode de la Consola web de Pandora FMS en lugar de cargar la función principal.
==== extensions_add_login_function ====
extensions_add_login_function ('
Añade la función de extensión para llamar una vez que el usuario inicie sesión correctamente en la Consola web de Pandora FMS.
==== extensions_add_godmode_tab_agent ====
extensions_add_godmode_tab_agent('
Añade una pestaña más a la vista de edición del agente para que cuando se seleccione se ejecute el código de la función del nombre que se le pasa.
==== extensions_add_opemode_tab_agent ====
extensions_add_opemode_tab_agent('
Añade una pestaña más a la vista de operación del agente que hace que cuando se selecciona se ejecute el código de la función del nombre que se le pasa.
==== extensions_add_translation_string_function ====
extensions_add_translation_string_function('
Añade la función de //callback// que será llamada desde la función estándar de traducción de extensiones.
==== Father IDs en el menú ====
Lista de strings IDs disponibles para usar en extensión API. Si utiliza un valor nulo o no incluye parámetro en la función ''call'', entonces la extensión aparece únicamente en el submenú de extensión
=== Operación ===
* ''estado'': Vista de monitorización.
* ''network'': Vista de redes.
* ''reporting'': Informes y visualización de datos.
* ''gismaps'': Vista GIS.
* ''eventos'': Vista de eventos.
* ''workspace'': Espacio de trabajo del usuario.
=== Administration ===
* ''gagente'': Gestión de la monitorización.
* ''gmassive'': Operaciones masivas.
* ''gmodules'': Gestión de módulos.
* ''galertas'': Gestión de alertas.
* ''gusuarios'': Gestión de usuarios.
* ''godgismaps'': Gestión GIS.
* ''gserver'': Gestión de servidores.
* ''glog'': //Logs// del sistema.
* ''gsetup'': Configuración.
* ''gdbman'': Mantenimiento BBDD.
* ''gpolicies'': Gestión de políticas
===== Ejemplo =====
{{ :wiki:pfms-combined-table-agent-module-group.png }}
La extensión muestra una tabla donde las columnas son grupos de módulos y las filas grupos de agentes. Cada celda tiene un color con los siguientes significados:
* **Verde**: cuando todos los módulos del grupo estan ''OK''.
* **Amarillo**: cuando existe al menos un monitor en alerta.
* **Rojo**: cuando al menos un monitor falla.
Y esta extensión cuelga del menú Operación en Agentes.
==== Código fuente ====
array(
"sentence" => "translated sentence"
),
/*
... for other language's definitions.
*/
);
$args = func_get_args();
$string = array_shift($args);
$user_language = get_user_language ();
if(isset($translates[$user_language][$string])){
return vsprintf($translates[$user_language][$string], $args);
}
else{
return false;
}
}
/**
* Translate the array texts using gettext
*/
function translate(&$item, $key) {
$item = ___($item);
}
/**
* The main function of module groups and the enter point to
* execute the code.
*/
function mainModuleGroups() {
global $config; //the useful global var of Pandora Console, it has many data can you use
//The big query
$sql = "select COUNT(id_agente) AS count, estado
FROM tagente_estado
WHERE utimestamp != 0 AND id_agente IN
(SELECT id_agente FROM tagente WHERE id_grupo = %d AND disabled IS FALSE)
AND id_agente_modulo IN
(SELECT id_agente_modulo
FROM tagente_modulo
WHERE id_module_group = %d AND disabled IS FALSE AND delete_pending IS FALSE)
GROUP BY estado";
echo "
" . ___("Combine table of agent group and module group") . "
";
echo "" .
'
" .
"
extensions_add_operation_menu_option("Modules groups", 'estado', 'module_groups/icon_menu.png');
Donde:
* **'Modules groups**' es el nombre que aparece en el submenú de agentes.
* **'estado**' es el elemento que cuelga de la extensión.
* **'module_groups/icon_menu.png**' es el icono de la imagen que aparece en el submenú, el compo está relacionado con el directorio de extensión que tenga.
* Define la función principal de esta extensión. \\ Y aparece como ''extensions_add_main_function('mainModuleGroups');'' donde:
* **'mainModuleGroups**' es el nombre de la función principal de la extensión.
El orden para nombrar las funciones es indiferente.
==== Organización del Directorio ====
La extensión tiene esta estructura de directorio:
* ''module_groups''
* ''icon_menu.png''
* ''module_groups.php''
Y la extension del directorio está en ''/var/www/pandora_console''.
Únicamente deberá copiar todos los ficheros de extensiones a la extension del directorio en su [[:es:documentation:pandorafms:command_center:03_installation|instalación de Pandora FMS Console]]. **Debe instalar los permisos para que la consola de Pandora FMS pueda leer los ficheros y los subdirectorios de extensión**. La consola de Pandora FMS busca nuevas extensiones y las añade al sistema cuando las encuentra.
==== Subdirectorio ====
En este caso, el ejemplo tiene un subdirectorio y generalmente cualquier extensión debe tener un subdirectorio. El subdirectorio tiene el mismo nombre que el nombre de la extension y el fichero principal. El subdirectorio del ejemplo tiene sólo un fichero de imagen de icono (''icon_menu.png''). Este icono aparece en el Menú de Pandora FMS.
[[:es:documentation:start|Volver al Índice de Documentación Pandora FMS]]