Merge branch 'ent-9662-second-round' of brutus.artica.es:artica/pandorafms into ent-9662-second-round
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.769-230309
|
||||
Version: 7.0NG.769-230310
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.769-230309"
|
||||
pandora_version="7.0NG.769-230310"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1023,7 +1023,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.769';
|
||||
use constant AGENT_BUILD => '230309';
|
||||
use constant AGENT_BUILD => '230310';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.769"
|
||||
PI_BUILD="230309"
|
||||
PI_BUILD="230310"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{230309}
|
||||
{230310}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.769 Build 230309")
|
||||
#define PANDORA_VERSION ("7.0NG.769 Build 230310")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.769(Build 230309))"
|
||||
VALUE "ProductVersion", "(7.0NG.769(Build 230310))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.769-230309
|
||||
Version: 7.0NG.769-230310
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.769-230309"
|
||||
pandora_version="7.0NG.769-230310"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -87,4 +87,72 @@ CREATE INDEX idx_disabled ON talert_template_modules (disabled);
|
|||
|
||||
INSERT INTO `treport_custom_sql` (`name`, `sql`) VALUES ('Agent safe mode not enable', 'select alias from tagente where safe_mode_module = 0');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `twelcome_tip` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`id_lang` VARCHAR(20) NULL,
|
||||
`id_profile` INT NOT NULL,
|
||||
`title` VARCHAR(255) NOT NULL,
|
||||
`text` TEXT NOT NULL,
|
||||
`url` VARCHAR(255) NULL,
|
||||
`enable` TINYINT NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `twelcome_tip_file` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`twelcome_tip_file` INT NOT NULL,
|
||||
`filename` VARCHAR(255) NOT NULL,
|
||||
`path` VARCHAR(255) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
CONSTRAINT `twelcome_tip_file`
|
||||
FOREIGN KEY (`twelcome_tip_file`)
|
||||
REFERENCES `twelcome_tip` (`id`)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
INSERT INTO `twelcome_tip` VALUES
|
||||
(1,'es',0,'¿Sabías que puedes monitorizar webs?','De manera sencilla a través de chequeos HTTP estándar o transaccional mediante transacciones centralizadas WUX, o descentralizadas con el plugin UX de agente.','https://pandorafms.com/manual/es/documentation/03_monitoring/06_web_monitoring','1'),
|
||||
(2,'es',0,'Monitorización remota de dispositivos SNMP','Los dispositivos de red como switches, AP, routers y firewalls se pueden monitorizar remotamente usando el protocolo SNMP. Basta con saber su IP, la comunidad SNMP y lanzar un wizard SNMP desde la consola.','https://pandorafms.com/manual/es/documentation/03_monitoring/03_remote_monitoring#monitorizacion_snmp','1'),
|
||||
(3,'es',0,'Monitorizar rutas desde una IP a otra','Existe un plugin especial que sirve para monitorizar visualmente las rutas desde una IP a otra de manera visual y dinámica, según va cambiando con el tiempo.','https://pandorafms.com/manual/es/documentation/03_monitoring/03_remote_monitoring#monitorizacion_de_rutas','1'),
|
||||
(4,'es',0,'¿Tu red pierde paquetes?','Se puede medir la pérdida de paquetes en tu red usando un agente y un plugin libre llamado “Packet Loss”. Esto es especialmente útil en redes Wifi o redes compartidas con muchos usuarios. Escribimos un artículo en nuestro blog hablando de ello, echale un vistazo','https://pandorafms.com/blog/es/perdida-de-paquetes/','1'),
|
||||
(5,'es',0,'Usar Telegram con Pandora FMS','Perfecto para recibir alertas con gráficas empotradas y personalizar así la recepción de avisos de manera individual o en un canal común con mas personas. ','https://pandorafms.com/library/telegram-bot-cli/','1'),
|
||||
(6,'es',0,'Monitorizar JMX (Tomcat, Websphere, Weblogic, Jboss, Apache Kafka, Jetty, GlassFish…)','Existe un plugin Enterprise que sirve para monitorizar cualquier tecnología JMX. Se puede usar de manera local (como plugin local) o de manera remota con el plugin server.','https://pandorafms.com/library/jmx-monitoring/','1'),
|
||||
(7,'es',0,'¿Sabes que cada usuario puede tener su propia Zona Horaria?','Se puede establecer zonas horarias diferentes para cada usuario, de manera que interprete los datos teniendo en cuenta la diferencia horaria. Pandora FMS también puede tener servidores y agentes en diferentes zonas horarias. ¡Por todo el mundo!','','1'),
|
||||
(8,'es',0,'Paradas planificadas','Se puede definir, a nivel de agente y a nivel de módulo, períodos en los cuales se ignoren las alertas y/o los datos recogidos. Es perfecto para planificar paradas de servicio o desconexión de los sistemas monitorizados. También afecta a los informes SLA, evitando que se tengan en cuenta esos intervalos de tiempo.    ','https://pandorafms.com/manual/es/documentation/04_using/11_managing_and_administration#paradas_de_servicio_planificadas','1'),
|
||||
(9,'es',0,'Personalizar los emails de alerta ','¿Sabías que se pueden personalizar los mails de alertas de Pandora? Solo tienes que editar el código HTML por defecto de las acciones de alerta de tipo email.  ','https://pandorafms.com/manual/en/documentation/04_using/01_alerts#editing_an_action','1'),
|
||||
(10,'es',0,'Usando iconos personalizados en consolas visuales ','Gracias a los iconos personalizados se pueden crear vistas muy personalizadas, como la de la imagen, que representa racks con los tipos de servidores en el orden que están colocados dentro del rack. Perfecto para que un técnico sepa exactamente qué máquina esta fallando. Más visual no puede ser, de ahi el nombre.  ','https://pandorafms.com/manual/start?id=es/documentation/04_using/05_data_presentation_visual_maps','1'),
|
||||
(11,'es',0,'Consolas visuales: mapas de calor ','La consola permite integrar en un fondo personalizado una serie de datos, que en función de su valor se representen con unos colores u otros, en tiempo real. Las aplicaciones son infinitas, solo depende de tu imaginación.   ','https://pandorafms.com/manual/es/documentation/04_using/05_data_presentation_visual_maps#mapa_de_calor_o_nube_de_color','1'),
|
||||
(12,'es',0,'Auditoría interna de la consola ','La consola registra todas las actividades relevantes de cada usuario conectado a la consola. Esto incluye la aplicación de configuraciones, validaciones de eventos y alertas, conexión y desconexión y cientos de otras operaciones. La seguridad en Pandora FMS ha sido siempre una de las características del diseño de su arquitectura.  ','https://pandorafms.com/manual/es/documentation/04_using/11_managing_and_administration#log_de_auditoria','1'),
|
||||
(13,'es',0,'Sistema de provisión automática de agentes ','El sistema de autoprovisión de agentes, permite que un agente recién ingresado en el sistema aplique automáticamente cambios en su configuración (como moverlo de grupo, asignarle ciertos valores en campos personalizados) y por supuesto aplicarle determinadas politicas de monitorización. Es una de las funcionalidades más potentes, orientadas a gestionar parques de sistemas muy extensos.  ','https://pandorafms.com/manual/start?id=es/documentation/02_installation/05_configuration_agents#configuracion_automatica_de_agentes','1'),
|
||||
(14,'es',0,'Modo oscuro ','¿Sabes que existe un modo oscuro en Pandora FMS? Un administrador lo puede activar a nivel global desde las opciones de configuración visuales o cualquier usuario a nivel individual, en las opciones de usuario. ','','1'),
|
||||
(15,'es',0,'Google Sheet ','¿Sabes que se puede coger el valor de una celda de una hoja de cálculo de Google Sheet?, utilizamos la API para pedir el dato a través de un plugin remoto. Es perfecto para construir cuadros de mando de negocio, obtener alertas en tiempo real y crear tus propios informes a medida.  ','https://pandorafms.com/library/google-sheets-plugin/','1'),
|
||||
(16,'es',0,'Tablas de ARP','¿Sabes que existe un módulo de inventario para sacar las tablas ARP de tus servidores windows? Es fácil de instalar y puede darte información muy detallada de tus equipos.','https://pandorafms.com/library/arp-table-windows-local/','1'),
|
||||
(17,'es',0,'Enlaces de red en la consola visual ','Existe un elemento de consola visual llamado “Network link” que permite mostrar visualmente la unión de dos interfaces de red, su estado y el tráfico de subida/bajada, de una manera muy visual.  ','https://pandorafms.com/manual/es/documentation/04_using/05_data_presentation_visual_maps#enlace_de_red','1'),
|
||||
(18,'es',0,'¿Conoces los informes de disponibilidad? ','Son muy útiles ya que te dicen el tiempo (%) que un chequeo ha estado en diferentes estados a lo largo de un lapso de tiempo, por ejemplo, una semana. Ofrece datos crudos completos de lo que se ha hecho con el detalle suficiente para convencer a un proveedor o un cliente.  ','','1'),
|
||||
(19,'es',0,'Gráficas de disponibilidad ','Parecidos a los informes de disponibilidad, pero mucho mas visuales, ofrecen el detalle de estado de un monitor a lo largo del tiempo. Se pueden agrupar con otro módulo para ofrecer datos finales teniendo en cuenta la alta disponibilidad de un servicio. Son perfectos para su uso en informes a proveedores y/o clientes.  ','https://pandorafms.com/manual/es/documentation/04_using/08_data_presentation_reports#grafico_de_disponibilidad','1'),
|
||||
(20,'es',0,'Zoom en gráficas de datos ','¿Sabes que Pandora FMS permite hacer zoom en una parte de la gráfica. Con eso ampliarás la información de la gráfica. Si estás viendo una gráfica de un mes y amplías, podrás ver los datos de ese intervalo. Si utilizas una gráfica con datos de resolución completa (los llamamos gráficas TIP) podrás ver el detalle de cada dato, aunque tu gráfica tenga miles de muestras.  ','','1'),
|
||||
(21,'es',0,'Gráficas de resolución completa ','Pandora FMS y otras herramientas cuando tienen que mostrar una gráfica obtienen los datos de la fuente de datos y luego “simplifican” la gráfica, ya que si la serie de datos tiene 10,000 elementos y la gráfica solo tiene 300 pixeles de ancho no pueden caber todos, asi que se “simplifican” esos 10,000 puntos en solo 300.   Sin embargo al simplificar se pierde “detalle” en la gráfica, y por supuesto no podemos “hacer zoom”. Las gráficas de Pandora FMS permiten mostrar y usar todos los datos en una gráfica, que llamamos “TIP” que muestra todos los puntos superpuestos y además permite que al hacer zoom no se pierda resolución.   ','','1'),
|
||||
(22,'es',0,'Política de contraseñas','La consola de Pandora FMS tiene un sistema de gestión de política de credenciales, para reforzar la seguridad local (además de permitir la autenticación externa contra un LDAP, Active Directory o SAML). A través de este sistema podemos forzar cambios de password cada X días, guardar un histórico de passwords usadas o evitar el uso de ciertas contraseñas entre otras acciones.  ','https://pandorafms.com/manual/es/documentation/04_using/12_console_setup?s%5B%5D%3Dcontrase%25C3%25B1as#password_policy','1'),
|
||||
(23,'es',0,'Autenticación de doble factor ','Es posible activar (y forzar su uso a todos los usuarios) un sistema de doble autenticación (usando Google Auth) para que cualquier usuario se autentique además de con una contraseña, con un sistema de token de un solo uso, dando al sistema mucha más seguridad.  ','https://pandorafms.com/manual/en/documentation/04_using/12_console_setup?s%5B%5D%3Dgoogle%26s%5B%5D%3Dauth#authentication','1');
|
||||
|
||||
INSERT INTO `twelcome_tip_file` (`twelcome_tip_file`, `filename`, `path`) VALUES
|
||||
(1, 'monitorizar_web.png', 'images/tips/'),
|
||||
(2, 'monitorizar_snmp.png', 'images/tips/'),
|
||||
(3, 'monitorizar_desde_ip.png', 'images/tips/'),
|
||||
(4, 'tu_red_pierde_paquetes.png', 'images/tips/'),
|
||||
(5, 'telegram_con_pandora.png', 'images/tips/'),
|
||||
(6, 'monitorizar_con_jmx.png', 'images/tips/'),
|
||||
(7, 'usuario_zona_horaria.png', 'images/tips/'),
|
||||
(8, 'paradas_planificadas.png', 'images/tips/'),
|
||||
(9, 'personalizar_los_emails.png', 'images/tips/'),
|
||||
(10, 'iconos_personalizados.png', 'images/tips/'),
|
||||
(11, 'mapa_de_calor.png', 'images/tips/'),
|
||||
(12, 'auditoria.png', 'images/tips/'),
|
||||
(15, 'google_sheets.png', 'images/tips/'),
|
||||
(17, 'enlaces_consola_visual.png', 'images/tips/'),
|
||||
(18, 'informe_disponibiliad.png', 'images/tips/'),
|
||||
(19, 'graficas_disponibilidad.png', 'images/tips/'),
|
||||
(20, 'zoom_en_graficas.png', 'images/tips/'),
|
||||
(22, 'politica_de_pass.png', 'images/tips/');
|
||||
|
||||
COMMIT;
|
||||
|
|
|
@ -31,6 +31,7 @@ global $config;
|
|||
|
||||
require_once $config['homedir'].'/include/functions_register.php';
|
||||
require_once $config['homedir'].'/include/class/WelcomeWindow.class.php';
|
||||
require_once $config['homedir'].'/include/class/TipsWindow.class.php';
|
||||
|
||||
|
||||
if ((bool) is_ajax() === true) {
|
||||
|
@ -109,6 +110,16 @@ try {
|
|||
$welcome = false;
|
||||
}
|
||||
|
||||
try {
|
||||
if (isset($_SESSION['showed_tips_window']) === false) {
|
||||
$tips_window = new TipsWindow();
|
||||
if ($tips_window !== null) {
|
||||
$tips_window->run();
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
$double_auth_enabled = (bool) db_get_value('id', 'tuser_double_auth', 'id_user', $config['id_user']);
|
||||
|
||||
if (isset($config['2FA_all_users']) === false) {
|
||||
|
|
|
@ -174,7 +174,7 @@ foreach ($fields as $field) {
|
|||
$data[1] = $field['name'];
|
||||
|
||||
$data[2] = html_print_image(
|
||||
((bool) $field['display_on_front'] === true) ? 'images/validate.svg' : 'images/icono_stop.png',
|
||||
((bool) $field['display_on_front'] === true) ? 'images/validate.svg' : 'images/fail@svg.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
);
|
||||
|
|
|
@ -383,6 +383,9 @@ if ($access_console_node === true) {
|
|||
$sub2['godmode/setup/setup§ion=external_tools']['text'] = __('External Tools');
|
||||
$sub2['godmode/setup/setup§ion=external_tools']['refr'] = 0;
|
||||
|
||||
$sub2['godmode/setup/setup§ion=welcome_tips']['text'] = __('Welcome Tips');
|
||||
$sub2['godmode/setup/setup§ion=welcome_tips']['refr'] = 0;
|
||||
|
||||
if ((bool) $config['activate_gis'] === true) {
|
||||
$sub2['godmode/setup/setup§ion=gis']['text'] = __('Map conections GIS');
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ switch ($activeTab) {
|
|||
$background_color = (string) get_parameter('background_color');
|
||||
$width = (int) get_parameter('width');
|
||||
$height = (int) get_parameter('height');
|
||||
$visualConsoleName = io_safe_input((string) get_parameter('name'));
|
||||
$visualConsoleName = (string) get_parameter('name');
|
||||
$is_favourite = (int) get_parameter('is_favourite_sent');
|
||||
$auto_adjust = (int) get_parameter('auto_adjust_sent');
|
||||
|
||||
|
|
|
@ -224,6 +224,11 @@ $buttons['external_tools'] = [
|
|||
'text' => '<a href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup§ion=external_tools').'">'.html_print_image('images/nettool.png', true, ['title' => __('External Tools'), 'class' => 'invert_filter']).'</a>',
|
||||
];
|
||||
|
||||
$buttons['welcome_tips'] = [
|
||||
'active' => false,
|
||||
'text' => '<a href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup§ion=welcome_tips').'">'.html_print_image('images/inventory.png', true, ['title' => __('Welcome tips'), 'class' => 'invert_filter']).'</a>',
|
||||
];
|
||||
|
||||
if ($config['activate_gis']) {
|
||||
$buttons['gis'] = [
|
||||
'active' => false,
|
||||
|
@ -312,6 +317,20 @@ switch ($section) {
|
|||
$help_header = '';
|
||||
break;
|
||||
|
||||
case 'welcome_tips':
|
||||
$view = get_parameter('view', '');
|
||||
$title = __('Welcome tips');
|
||||
if ($view === 'create') {
|
||||
$title = __('Create tip');
|
||||
} else if ($view === 'edit') {
|
||||
$title = __('Edit tip');
|
||||
}
|
||||
|
||||
$buttons['welcome_tips']['active'] = true;
|
||||
$subpage = ' » '.$title;
|
||||
$help_header = '';
|
||||
break;
|
||||
|
||||
case 'enterprise':
|
||||
$buttons['enterprise']['active'] = true;
|
||||
$subpage = ' » '.__('Enterprise');
|
||||
|
@ -409,6 +428,10 @@ switch ($section) {
|
|||
include_once $config['homedir'].'/godmode/setup/setup_external_tools.php';
|
||||
break;
|
||||
|
||||
case 'welcome_tips':
|
||||
include_once $config['homedir'].'/godmode/setup/welcome_tips.php';
|
||||
break;
|
||||
|
||||
default:
|
||||
enterprise_hook('setup_enterprise_select_tab', [$section]);
|
||||
break;
|
||||
|
|
|
@ -0,0 +1,161 @@
|
|||
<?php
|
||||
/**
|
||||
* Controller View tips in setup
|
||||
*
|
||||
* @category Console Class
|
||||
* @package Pandora FMS
|
||||
* @subpackage Dashboards
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
require_once $config['homedir'].'/include/class/TipsWindow.class.php';
|
||||
$view = get_parameter('view', '');
|
||||
$action = get_parameter('action', '');
|
||||
try {
|
||||
$tipsWindow = new TipsWindow();
|
||||
} catch (Exception $e) {
|
||||
echo '[TipsWindow]'.$e->getMessage();
|
||||
return;
|
||||
}
|
||||
|
||||
if ($view === 'create' || $view === 'edit') {
|
||||
// IF exists actions
|
||||
if ($action === 'create' || $action === 'edit') {
|
||||
$files = $_FILES;
|
||||
$id_lang = get_parameter('id_lang', '');
|
||||
$id_profile = get_parameter('id_profile', '');
|
||||
$title = get_parameter('title', '');
|
||||
$text = get_parameter('text', '');
|
||||
$url = get_parameter('url', '');
|
||||
$enable = get_parameter_switch('enable', '');
|
||||
$errors = [];
|
||||
|
||||
if (count($files) > 0) {
|
||||
$e = $tipsWindow->validateImages($files);
|
||||
if ($e !== false) {
|
||||
$errors = $e;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($id_lang) === true) {
|
||||
$errors[] = __('Language is empty');
|
||||
}
|
||||
|
||||
if (empty($title) === true) {
|
||||
$errors[] = __('Title is empty');
|
||||
}
|
||||
|
||||
if (empty($text) === true) {
|
||||
$errors[] = __('Text is empty');
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
case 'create':
|
||||
if (count($errors) === 0) {
|
||||
if (count($files) > 0) {
|
||||
$uploadImages = $tipsWindow->uploadImages($files);
|
||||
}
|
||||
|
||||
$response = $tipsWindow->createTip($id_lang, $id_profile, $title, $text, $url, $enable, $uploadImages);
|
||||
|
||||
if ($response === 0) {
|
||||
$errors[] = __('Error in insert tip');
|
||||
}
|
||||
}
|
||||
|
||||
$tipsWindow->viewCreate($errors);
|
||||
return;
|
||||
|
||||
case 'edit':
|
||||
$idTip = get_parameter('idTip', '');
|
||||
$imagesToDelete = get_parameter('images_to_delete', '');
|
||||
if (empty($idTip) === false) {
|
||||
if (count($errors) === 0) {
|
||||
if (empty($imagesToDelete) === false) {
|
||||
$imagesToDelete = json_decode(io_safe_output($imagesToDelete), true);
|
||||
$tipsWindow->deleteImagesFromTip($idTip, $imagesToDelete);
|
||||
}
|
||||
|
||||
if (count($files) > 0) {
|
||||
$uploadImages = $tipsWindow->uploadImages($files);
|
||||
}
|
||||
|
||||
$response = $tipsWindow->updateTip($idTip, $id_profile, $id_lang, $title, $text, $url, $enable, $uploadImages);
|
||||
|
||||
if ($response === 0) {
|
||||
$errors[] = __('Error in update tip');
|
||||
}
|
||||
}
|
||||
|
||||
$tipsWindow->viewEdit($idTip, $errors);
|
||||
}
|
||||
return;
|
||||
|
||||
default:
|
||||
$tipsWindow->draw();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// If not exists actions
|
||||
switch ($view) {
|
||||
case 'create':
|
||||
$tipsWindow->viewCreate();
|
||||
return;
|
||||
|
||||
case 'edit':
|
||||
$idTip = get_parameter('idTip', '');
|
||||
if (empty($idTip) === false) {
|
||||
$tipsWindow->viewEdit($idTip);
|
||||
}
|
||||
return;
|
||||
|
||||
default:
|
||||
$tipsWindow->draw();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ($action === 'delete') {
|
||||
$idTip = get_parameter('idTip', '');
|
||||
$errors = [];
|
||||
if (empty($idTip) === true) {
|
||||
$errors[] = __('Tip required');
|
||||
}
|
||||
|
||||
if (count($errors) === 0) {
|
||||
$response = $tipsWindow->deleteTip($idTip);
|
||||
|
||||
if ($response === 0) {
|
||||
$errors[] = __('Error in delete tip');
|
||||
}
|
||||
}
|
||||
|
||||
$tipsWindow->draw($errors);
|
||||
return;
|
||||
}
|
||||
|
||||
$tipsWindow->draw();
|
|
@ -653,6 +653,7 @@ if ($update_user) {
|
|||
$values['timezone'] = (string) get_parameter('timezone');
|
||||
$values['default_event_filter'] = (int) get_parameter('default_event_filter');
|
||||
$values['default_custom_view'] = (int) get_parameter('default_custom_view');
|
||||
$values['show_tips_startup'] = (int) get_parameter_switch('show_tips_startup');
|
||||
// API Token information.
|
||||
$apiTokenRenewed = (bool) get_parameter('renewAPIToken');
|
||||
$values['api_token'] = ($apiTokenRenewed === true) ? api_token_generate() : users_get_API_token($values['id_user']);
|
||||
|
|
|
@ -372,6 +372,8 @@ $userManagementTable->data['captions_loginErrorUser'][1] .= ui_print_input_place
|
|||
__('The user with local authentication enabled will always use local authentication.'),
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['show_tips_startup'][0] = html_print_checkbox_switch('show_tips_startup', 1, ($user_info['show_tips_startup'] === null) ? true : $user_info['show_tips_startup'], true);
|
||||
$userManagementTable->data['show_tips_startup'][1] = '<span>'.__('Show usage tips at startup').'</span>';
|
||||
|
||||
// Session time input.
|
||||
$userManagementTable->rowclass['captions_userSessionTime'] = 'field_half_width';
|
||||
|
|
After Width: | Height: | Size: 179 B |
After Width: | Height: | Size: 194 B |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 40 KiB |
|
@ -1279,14 +1279,14 @@ if (check_login()) {
|
|||
$linkCaption = __('Refresh');
|
||||
}
|
||||
|
||||
$moduleActionButtons[] = html_print_button(
|
||||
$linkCaption,
|
||||
'additional_action_for_'.$idAgenteModulo,
|
||||
false,
|
||||
'window.location.assign("index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&id_agente_modulo='.$module['id_agente_modulo'].'&refr=60'.$addedLinkParams.'")',
|
||||
$moduleActionButtons[] = html_print_anchor(
|
||||
[
|
||||
'mode' => 'link',
|
||||
'style' => 'justify-content: flex-end;',
|
||||
'href' => 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&id_agente_modulo='.$module['id_agente_modulo'].'&refr=60'.$addedLinkParams.'"',
|
||||
'content' => html_print_image(
|
||||
'images/go-back@svg.svg',
|
||||
true,
|
||||
[ 'class' => 'main_menu_icon' ]
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -1296,14 +1296,14 @@ if (check_login()) {
|
|||
if ((bool) check_acl($config['id_user'], $id_grupo, 'AW') === true
|
||||
&& $cluster_view === false
|
||||
) {
|
||||
$moduleActionButtons[] = html_print_button(
|
||||
__('Edit'),
|
||||
'edit_module_'.$idAgenteModulo,
|
||||
false,
|
||||
'window.location.assign("index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&id_agent_module='.$module['id_agente_modulo'].'&edit_module='.$module['id_modulo'].'")',
|
||||
$moduleActionButtons[] = html_print_anchor(
|
||||
[
|
||||
'mode' => 'link',
|
||||
'style' => 'justify-content: flex-end;',
|
||||
'href' => 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&id_agent_module='.$module['id_agente_modulo'].'&edit_module='.$module['id_modulo'].'"',
|
||||
'content' => html_print_image(
|
||||
'images/edit.svg',
|
||||
true,
|
||||
[ 'class' => 'main_menu_icon' ]
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
/**
|
||||
* Tips pandora
|
||||
*
|
||||
* @category Ajax library.
|
||||
* @package Pandora FMS
|
||||
* @subpackage Modules.
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/include/class/TipsWindow.class.php';
|
||||
if (is_ajax() === false) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Control call flow.
|
||||
try {
|
||||
// User access and validation is being processed on class constructor.
|
||||
$actions = new TipsWindow();
|
||||
} catch (Exception $e) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Ajax controller.
|
||||
$method = get_parameter('method', '');
|
||||
|
||||
if (method_exists($actions, $method) === true) {
|
||||
if ($actions->ajaxMethod($method) === true) {
|
||||
$actions->{$method}();
|
||||
} else {
|
||||
$actions->error('Unavailable method.');
|
||||
}
|
||||
} else {
|
||||
$actions->error('Method not found. ['.$method.']');
|
||||
}
|
||||
|
||||
|
||||
// Stop any execution.
|
||||
exit;
|
|
@ -20,7 +20,7 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC230309';
|
||||
$build_version = 'PC230310';
|
||||
$pandora_version = 'v7.0NG.769';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -0,0 +1,354 @@
|
|||
/* globals $, idTips, totalTips, url, page, uniqId */
|
||||
$(document).ready(function() {
|
||||
$("#button-button_add_image").on("click", function() {
|
||||
var numberImages = $("#inputs_images").children().length;
|
||||
var div_image = document.createElement("div");
|
||||
$(div_image).attr("class", "action_image");
|
||||
$(div_image).append(
|
||||
`<input type="file" accept="image/png,image/jpeg,image/gif" name="file_${numberImages +
|
||||
1}" onchange="checkImage(this)"/>`
|
||||
);
|
||||
$(div_image).append(
|
||||
`<input type="image" src="images/delete.svg" onclick="removeInputImage('file_${numberImages +
|
||||
1}');" class="remove-image" value="-"/>`
|
||||
);
|
||||
$("#inputs_images").append(div_image);
|
||||
});
|
||||
|
||||
$("#image-delete_image_tip1").on("click", function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
$("#button-preview_button").on("click", function(e) {
|
||||
e.preventDefault();
|
||||
previewTip();
|
||||
});
|
||||
});
|
||||
|
||||
function show_tips_startup(e) {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
data: {
|
||||
page: page,
|
||||
method: "setShowTipsAtStartup",
|
||||
show_tips_startup: e.checked ? "1" : "0"
|
||||
},
|
||||
success: function({ success }) {
|
||||
if (!success) {
|
||||
$("#checkbox_tips_startup").prop("checked", true);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function checkImage(e) {
|
||||
var maxWidth = 464;
|
||||
var maxHeight = 260;
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.readAsDataURL(e.files[0]);
|
||||
reader.onload = function(e) {
|
||||
var img = new Image();
|
||||
img.src = e.target.result;
|
||||
img.onload = function() {
|
||||
if (this.width !== maxWidth || this.height !== maxHeight) {
|
||||
$("#notices_images").removeClass("invisible");
|
||||
} else {
|
||||
$("#notices_images").addClass("invisible");
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
function deleteImage(e, id, path) {
|
||||
var imagesToDelete = JSON.parse($("#hidden-images_to_delete").val());
|
||||
imagesToDelete[id] = path;
|
||||
$("#hidden-images_to_delete").val(JSON.stringify(imagesToDelete));
|
||||
$(e)
|
||||
.parent()
|
||||
.remove();
|
||||
}
|
||||
function activeCarousel() {
|
||||
if ($(".carousel .images img").length > 1) {
|
||||
$(".carousel .images").bxSlider({ controls: true });
|
||||
}
|
||||
}
|
||||
function removeInputImage(name) {
|
||||
$(`input[name=${name}]`)
|
||||
.parent()
|
||||
.remove();
|
||||
if ($(".action_image").length === 0) {
|
||||
$("#notices_images").addClass("invisible");
|
||||
}
|
||||
}
|
||||
function render({ title, text, url, files }) {
|
||||
$("#title_tip").html(title);
|
||||
$("#text_tip").html(text);
|
||||
if (url) {
|
||||
$("#url_tip").removeClass("invisible");
|
||||
$("#url_tip").attr("href", url);
|
||||
} else {
|
||||
$("#url_tip").addClass("invisible");
|
||||
}
|
||||
|
||||
$(".carousel").empty();
|
||||
$(".carousel").append("<div class='images'></div>");
|
||||
if (files) {
|
||||
files.forEach(file => {
|
||||
$(".carousel .images").append(
|
||||
`<img src="${file.path + file.filename}" />`
|
||||
);
|
||||
});
|
||||
$(".carousel").removeClass("invisible");
|
||||
} else {
|
||||
$(".carousel").addClass("invisible");
|
||||
}
|
||||
var limitRound = totalTips > 28 ? 28 : totalTips;
|
||||
$(".count-round-tip").each(function(index) {
|
||||
if ($(this).hasClass("active")) {
|
||||
$(this).removeClass("active");
|
||||
if (index >= limitRound - 1) {
|
||||
$($(".count-round-tip")[0]).addClass("active");
|
||||
} else {
|
||||
$($(".count-round-tip")[index + 1]).addClass("active");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
activeCarousel();
|
||||
}
|
||||
|
||||
function close_dialog() {
|
||||
if ($("#tips_window_modal").length > 0) {
|
||||
$("#tips_window_modal").dialog("close");
|
||||
$("#tips_window_modal").remove();
|
||||
}
|
||||
|
||||
if ($("#tips_window_modal_preview").length > 0) {
|
||||
$("#tips_window_modal_preview").dialog("close");
|
||||
$("#tips_window_modal_preview").empty();
|
||||
}
|
||||
}
|
||||
|
||||
function render_counter() {
|
||||
$(".counter-tips img:eq(0)").after(
|
||||
"<span class='count-round-tip active'></span>"
|
||||
);
|
||||
if (totalTips > 1) {
|
||||
for (let i = 1; i <= totalTips - 1; i++) {
|
||||
$(".count-round-tip:eq(0)").after(
|
||||
"<span class='count-round-tip'></span>"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function next_tip() {
|
||||
if (idTips.length >= totalTips) {
|
||||
idTips = [];
|
||||
}
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
data: {
|
||||
page: page,
|
||||
method: "getRandomTip",
|
||||
exclude: JSON.stringify(idTips)
|
||||
},
|
||||
success: function({ success, data }) {
|
||||
if (success) {
|
||||
idTips.push(parseInt(data.id));
|
||||
render(data);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function load_tips_modal(settings) {
|
||||
var data = new FormData();
|
||||
if (settings.extradata) {
|
||||
Object.keys(settings.extradata).forEach(key => {
|
||||
data.append(key, settings.extradata[key]);
|
||||
});
|
||||
}
|
||||
data.append("page", settings.onshow.page);
|
||||
data.append("method", settings.onshow.method);
|
||||
if (settings.onshow.extradata != undefined) {
|
||||
data.append("extradata", JSON.stringify(settings.onshow.extradata));
|
||||
}
|
||||
|
||||
if (settings.target == undefined) {
|
||||
var uniq = uniqId();
|
||||
var div = document.createElement("div");
|
||||
div.id = "div-modal-" + uniq;
|
||||
div.style.display = "none";
|
||||
|
||||
if (document.getElementById("main") == null) {
|
||||
// MC env.
|
||||
document.getElementById("page").append(div);
|
||||
} else {
|
||||
document.getElementById("main").append(div);
|
||||
}
|
||||
|
||||
var id_modal_target = "#div-modal-" + uniq;
|
||||
|
||||
settings.target = $(id_modal_target);
|
||||
}
|
||||
|
||||
var width = 630;
|
||||
if (settings.onshow.width) {
|
||||
width = settings.onshow.width;
|
||||
}
|
||||
|
||||
if (settings.beforeClose == undefined) {
|
||||
settings.beforeClose = function() {};
|
||||
}
|
||||
|
||||
settings.target.html("Loading modal...");
|
||||
settings.target
|
||||
.dialog({
|
||||
title: "Loading",
|
||||
close: false,
|
||||
width: 200,
|
||||
buttons: []
|
||||
})
|
||||
.show();
|
||||
|
||||
$.ajax({
|
||||
method: "post",
|
||||
url: settings.url,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
data: data,
|
||||
success: function(data) {
|
||||
if (settings.onshow.parser) {
|
||||
data = settings.onshow.parser(data);
|
||||
} else {
|
||||
data = (function(d) {
|
||||
try {
|
||||
d = JSON.parse(d);
|
||||
} catch (e) {
|
||||
// Not JSON
|
||||
return d;
|
||||
}
|
||||
if (d.error) return d.error;
|
||||
|
||||
if (d.result) return d.result;
|
||||
})(data);
|
||||
}
|
||||
settings.target.html(data);
|
||||
if (settings.onload != undefined) {
|
||||
settings.onload(data);
|
||||
}
|
||||
settings.target.dialog({
|
||||
resizable: false,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
header: false,
|
||||
dialogClass: "dialog_tips",
|
||||
title: "",
|
||||
width: width,
|
||||
minHeight:
|
||||
settings.onshow.minHeight != undefined
|
||||
? settings.onshow.minHeight
|
||||
: "auto",
|
||||
maxHeight:
|
||||
settings.onshow.maxHeight != undefined
|
||||
? settings.onshow.maxHeight
|
||||
: "auto",
|
||||
position: {
|
||||
my: "top+20%",
|
||||
at: "top",
|
||||
of: window,
|
||||
collision: "fit"
|
||||
},
|
||||
closeOnEscape: true,
|
||||
close: function() {
|
||||
$(this).dialog("destroy");
|
||||
|
||||
if (id_modal_target != undefined) {
|
||||
$(id_modal_target).remove();
|
||||
}
|
||||
if ($("#tips_window_modal").length > 0) {
|
||||
$("#tips_window_modal").remove();
|
||||
}
|
||||
|
||||
if ($("#tips_window_modal_preview").length > 0) {
|
||||
$("#tips_window_modal_preview").empty();
|
||||
}
|
||||
|
||||
if (settings.cleanup != undefined) {
|
||||
settings.cleanup();
|
||||
}
|
||||
},
|
||||
beforeClose: settings.beforeClose()
|
||||
});
|
||||
$(".dialog_tips .ui-dialog-titlebar").empty();
|
||||
$(".dialog_tips .ui-dialog-titlebar").append($(".tips_header").html());
|
||||
$(".tips_header").remove();
|
||||
$(".dialog_tips .ui-dialog-titlebar").addClass("tips_header");
|
||||
$(".dialog_tips .ui-dialog-titlebar").removeClass("ui-helper-clearfix");
|
||||
render_counter();
|
||||
activeCarousel();
|
||||
},
|
||||
error: function(data) {
|
||||
console.error(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function previewTip() {
|
||||
var extradata = {
|
||||
title: $("input[name=title]").val(),
|
||||
text: $("textarea[name=text]").val(),
|
||||
url: $("input[name=url]").val(),
|
||||
files: []
|
||||
};
|
||||
|
||||
//images in server
|
||||
if ($(".image_tip img").length > 0) {
|
||||
$(".image_tip img").each(function(index) {
|
||||
extradata["files"].push($(".image_tip img")[index].src);
|
||||
});
|
||||
}
|
||||
|
||||
//Images in client
|
||||
var totalInputsFiles = $("input[type=file]").length;
|
||||
if (totalInputsFiles > 0) {
|
||||
extradata["totalFiles64"] = totalInputsFiles;
|
||||
$("input[type=file]").each(function(index) {
|
||||
var reader = new FileReader();
|
||||
if (this.files.length > 0) {
|
||||
reader.readAsDataURL(this.files[0]);
|
||||
reader.onload = function(e) {
|
||||
var img = new Image();
|
||||
img.src = e.target.result;
|
||||
img.onload = function() {
|
||||
extradata[`file64_${index}`] = this.currentSrc;
|
||||
if (totalInputsFiles - 1 === index) {
|
||||
load_tips_modal({
|
||||
target: $("#tips_window_modal_preview"),
|
||||
url: url,
|
||||
onshow: {
|
||||
page: page,
|
||||
method: "renderPreview"
|
||||
},
|
||||
extradata //Receive json
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
});
|
||||
} else {
|
||||
load_tips_modal({
|
||||
target: $("#tips_window_modal_preview"),
|
||||
url: url,
|
||||
onshow: {
|
||||
page: page,
|
||||
method: "renderPreview"
|
||||
},
|
||||
extradata //Receive json
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,172 @@
|
|||
/** VARIABLES
|
||||
===================================*/
|
||||
/** RESET AND LAYOUT
|
||||
===================================*/
|
||||
.bx-wrapper {
|
||||
position: relative;
|
||||
margin-bottom: 60px;
|
||||
padding: 0;
|
||||
*zoom: 1;
|
||||
-ms-touch-action: pan-y;
|
||||
touch-action: pan-y;
|
||||
}
|
||||
.bx-wrapper img {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
.bxslider {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
ul.bxslider {
|
||||
list-style: none;
|
||||
}
|
||||
.bx-viewport {
|
||||
/*fix other elements on the page moving (on Chrome)*/
|
||||
-webkit-transform: translatez(0);
|
||||
}
|
||||
/** THEME
|
||||
===================================*/
|
||||
.bx-wrapper {
|
||||
-moz-box-shadow: 0 0 5px transparent;
|
||||
-webkit-box-shadow: 0 0 5px transparent;
|
||||
box-shadow: 0 0 5px transparent;
|
||||
border: 5px solid transparent;
|
||||
background: transparent;
|
||||
}
|
||||
.bx-wrapper .bx-pager,
|
||||
.bx-wrapper .bx-controls-auto {
|
||||
position: absolute;
|
||||
bottom: -30px;
|
||||
width: 100%;
|
||||
}
|
||||
/* LOADER */
|
||||
.bx-wrapper .bx-loading {
|
||||
min-height: 50px;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2000;
|
||||
}
|
||||
/* PAGER */
|
||||
.bx-wrapper .bx-pager {
|
||||
text-align: center;
|
||||
font-size: 0.85em;
|
||||
font-family: Arial;
|
||||
font-weight: bold;
|
||||
color: #666;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.bx-wrapper .bx-pager.bx-default-pager a {
|
||||
background: #666;
|
||||
text-indent: -9999px;
|
||||
display: block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 0 5px;
|
||||
outline: 0;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.bx-wrapper .bx-pager.bx-default-pager a:hover,
|
||||
.bx-wrapper .bx-pager.bx-default-pager a.active,
|
||||
.bx-wrapper .bx-pager.bx-default-pager a:focus {
|
||||
background: #000;
|
||||
}
|
||||
.bx-wrapper .bx-pager-item,
|
||||
.bx-wrapper .bx-controls-auto .bx-controls-auto-item {
|
||||
display: inline-block;
|
||||
vertical-align: bottom;
|
||||
*zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
.bx-wrapper .bx-pager-item {
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
/* DIRECTION CONTROLS (NEXT / PREV) */
|
||||
.bx-wrapper .bx-prev {
|
||||
left: 10px;
|
||||
}
|
||||
.bx-wrapper .bx-prev:hover,
|
||||
.bx-wrapper .bx-prev:focus {
|
||||
background-position: 0 0;
|
||||
}
|
||||
.bx-wrapper .bx-next {
|
||||
right: 10px;
|
||||
}
|
||||
.bx-wrapper .bx-next:hover,
|
||||
.bx-wrapper .bx-next:focus {
|
||||
background-position: -43px 0;
|
||||
}
|
||||
.bx-wrapper .bx-controls-direction a {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -16px;
|
||||
outline: 0;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
text-indent: -9999px;
|
||||
z-index: 9999;
|
||||
}
|
||||
.bx-wrapper .bx-controls-direction a.disabled {
|
||||
display: none;
|
||||
}
|
||||
/* AUTO CONTROLS (START / STOP) */
|
||||
.bx-wrapper .bx-controls-auto {
|
||||
text-align: center;
|
||||
}
|
||||
.bx-wrapper .bx-controls-auto .bx-start {
|
||||
display: block;
|
||||
text-indent: -9999px;
|
||||
width: 10px;
|
||||
height: 11px;
|
||||
outline: 0;
|
||||
margin: 0 3px;
|
||||
}
|
||||
.bx-wrapper .bx-controls-auto .bx-start:hover,
|
||||
.bx-wrapper .bx-controls-auto .bx-start.active,
|
||||
.bx-wrapper .bx-controls-auto .bx-start:focus {
|
||||
background-position: -86px 0;
|
||||
}
|
||||
.bx-wrapper .bx-controls-auto .bx-stop {
|
||||
display: block;
|
||||
text-indent: -9999px;
|
||||
width: 9px;
|
||||
height: 11px;
|
||||
outline: 0;
|
||||
margin: 0 3px;
|
||||
}
|
||||
.bx-wrapper .bx-controls-auto .bx-stop:hover,
|
||||
.bx-wrapper .bx-controls-auto .bx-stop.active,
|
||||
.bx-wrapper .bx-controls-auto .bx-stop:focus {
|
||||
background-position: -86px -33px;
|
||||
}
|
||||
/* PAGER WITH AUTO-CONTROLS HYBRID LAYOUT */
|
||||
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-pager {
|
||||
text-align: left;
|
||||
width: 80%;
|
||||
}
|
||||
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-controls-auto {
|
||||
right: 0;
|
||||
width: 35px;
|
||||
}
|
||||
/* IMAGE CAPTIONS */
|
||||
.bx-wrapper .bx-caption {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: #666;
|
||||
background: rgba(80, 80, 80, 0.75);
|
||||
width: 100%;
|
||||
}
|
||||
.bx-wrapper .bx-caption span {
|
||||
color: #fff;
|
||||
font-family: Arial;
|
||||
display: block;
|
||||
font-size: 0.85em;
|
||||
padding: 10px;
|
||||
}
|
|
@ -2163,6 +2163,7 @@ button.filter,
|
|||
button.cancel,
|
||||
button.default,
|
||||
button.deploy,
|
||||
button.preview,
|
||||
input.deploy,
|
||||
input.next,
|
||||
input.upd,
|
||||
|
@ -2183,7 +2184,8 @@ input.filter,
|
|||
input.cancel,
|
||||
input.default,
|
||||
input.pdf,
|
||||
input.spinn {
|
||||
input.spinn,
|
||||
input.preview {
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
|
@ -10524,6 +10526,11 @@ button div.create_directory {
|
|||
contain;
|
||||
}
|
||||
|
||||
button div.preview {
|
||||
mask: url(../../images/eye.png) no-repeat center / contain;
|
||||
-webkit-mask: url(../../images/eye.png) no-repeat center / contain;
|
||||
}
|
||||
|
||||
button div.cog.rotation {
|
||||
animation: rotation 4s infinite linear;
|
||||
}
|
||||
|
|
|
@ -774,6 +774,11 @@ form ul.form_flex {
|
|||
filter: invert(100%);
|
||||
}
|
||||
|
||||
.info_table .invert_filter,
|
||||
.info_table .labels {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
||||
.graph_conteiner_inside,
|
||||
.container_table,
|
||||
.second_background,
|
||||
|
|
|
@ -0,0 +1,213 @@
|
|||
#tips_window {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.308);
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2001;
|
||||
}
|
||||
#tips_window_modal,
|
||||
#tips_window_modal_preview {
|
||||
padding: 0px;
|
||||
}
|
||||
.window {
|
||||
background-image: linear-gradient(180deg, #fffce8 0%, #ffffff 100%);
|
||||
width: 640px;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.ui-dialog .tips_header.ui-dialog-titlebar {
|
||||
display: flex;
|
||||
padding: 0px 20px;
|
||||
justify-content: space-between;
|
||||
height: fit-content;
|
||||
background-color: white;
|
||||
color: #161628;
|
||||
border-top-left-radius: 25px !important;
|
||||
border-top-right-radius: 25px !important;
|
||||
}
|
||||
.tips_header .title {
|
||||
font-size: 15px;
|
||||
}
|
||||
.description {
|
||||
padding: 0px 20px 20px 20px;
|
||||
text-align: center;
|
||||
}
|
||||
.actions {
|
||||
border-top: 1px solid #0000001a;
|
||||
text-align: right;
|
||||
padding: 20px;
|
||||
}
|
||||
.carousel {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
max-width: 464px;
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.carousel .prev_step {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
border: 0px;
|
||||
background: none;
|
||||
font-size: 50px;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
left: 0;
|
||||
}
|
||||
.carousel .next_step {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
right: 0;
|
||||
z-index: 1;
|
||||
border: 0px;
|
||||
background: none;
|
||||
font-size: 50px;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
}
|
||||
.carousel .images {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
font-size: 0px;
|
||||
height: 100%;
|
||||
}
|
||||
.carousel .images img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
max-height: 260px;
|
||||
}
|
||||
.dialog_tips .ui-dialog-buttonset {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
}
|
||||
#tips_window_modal .ui-dialog-buttonset button.submit-cancel-tips,
|
||||
#tips_window_modal_preview .ui-dialog-buttonset button.submit-cancel-tips {
|
||||
border-radius: 6px;
|
||||
color: #14524f;
|
||||
width: fit-content;
|
||||
font-size: 15px;
|
||||
border: 1px solid #14524f;
|
||||
height: 35px;
|
||||
margin: 0px;
|
||||
background-color: #ffffff;
|
||||
font-weight: 600;
|
||||
}
|
||||
#tips_window_modal .ui-dialog-buttonset button.submit-next-tips,
|
||||
#tips_window_modal_preview .ui-dialog-buttonset button.submit-next-tips {
|
||||
border-radius: 6px;
|
||||
color: #ffffff;
|
||||
width: fit-content;
|
||||
font-size: 15px;
|
||||
border: 1px solid #14524f;
|
||||
background-color: #14524f;
|
||||
height: 35px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.dialog_tips {
|
||||
border-radius: 10px !important;
|
||||
}
|
||||
.dialog_tips .ui-widget-header {
|
||||
margin: 0px !important;
|
||||
}
|
||||
.dialog_tips .tips_header {
|
||||
border-top-right-radius: 10px !important;
|
||||
border-top-left-radius: 10px !important;
|
||||
}
|
||||
#tips_window_modal .ui-dialog-buttonset button,
|
||||
#tips_window_modal_preview .ui-dialog-buttonset button {
|
||||
margin: 0px 20px !important;
|
||||
margin-top: 10px !important;
|
||||
min-width: fit-content;
|
||||
}
|
||||
.dialog_tips .ui-dialog-buttonset {
|
||||
border-bottom-right-radius: 10px !important;
|
||||
border-bottom-left-radius: 10px !important;
|
||||
border-top: 1px solid #c1ccdc;
|
||||
}
|
||||
#title_tip {
|
||||
font-size: 15px;
|
||||
color: #161628;
|
||||
}
|
||||
#text_tip {
|
||||
color: #161628;
|
||||
}
|
||||
#url_tip {
|
||||
font-size: 13px;
|
||||
color: #14524f;
|
||||
font-weight: 600;
|
||||
}
|
||||
#url_tip .arrow_tips {
|
||||
font-size: 20px;
|
||||
}
|
||||
span.count-round-tip {
|
||||
width: 6px !important;
|
||||
height: 6px !important;
|
||||
background: #dbdfe6;
|
||||
border-radius: 10px;
|
||||
margin: 0px 2px;
|
||||
}
|
||||
span.count-round-tip.active {
|
||||
background-color: #1d7874;
|
||||
}
|
||||
.counter-tips {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.arrow_counter {
|
||||
width: 7px;
|
||||
margin: 0px 5px;
|
||||
}
|
||||
.bx-viewport {
|
||||
height: 260px !important;
|
||||
}
|
||||
.action_image {
|
||||
margin: 10px 0px;
|
||||
}
|
||||
span.enable {
|
||||
display: block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
border-radius: 15px;
|
||||
background-color: #82b92e;
|
||||
margin: 0 auto;
|
||||
}
|
||||
span.disable {
|
||||
display: block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
border-radius: 15px;
|
||||
background-color: #e63c52;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.buttons_actions {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
}
|
||||
.image_tip {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
.image_tip img {
|
||||
max-width: 350px;
|
||||
}
|
||||
#notices_images {
|
||||
color: #e63c52;
|
||||
}
|
||||
.remove-image {
|
||||
max-width: 35px;
|
||||
padding-top: 18px;
|
||||
}
|
||||
.buttons_actions input {
|
||||
width: 32px;
|
||||
}
|
|
@ -131,7 +131,7 @@
|
|||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.769';
|
||||
$build = '230309';
|
||||
$build = '230310';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
|
|
@ -371,11 +371,12 @@ if ($agent_view_page === true) {
|
|||
[
|
||||
'id' => 'alerts_status_datatable',
|
||||
'class' => 'info_table',
|
||||
'style' => 'width: 100%',
|
||||
'style' => 'width: 99%',
|
||||
'columns' => $columns,
|
||||
'column_names' => $column_names,
|
||||
'no_sortable_columns' => $no_sortable_columns,
|
||||
'ajax_url' => 'include/ajax/alert_list.ajax',
|
||||
'dom_elements' => 'pfrti',
|
||||
'ajax_data' => [
|
||||
'get_agent_alerts_datatable' => 1,
|
||||
'id_agent' => $idAgent,
|
||||
|
@ -406,6 +407,7 @@ if ($agent_view_page === true) {
|
|||
],
|
||||
],
|
||||
'no_toggle' => true,
|
||||
'class' => 'flex',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
@ -545,7 +547,7 @@ function alerts_table_controls() {
|
|||
|
||||
$(document).ready ( function () {
|
||||
alerts_table_controls();
|
||||
$('#submit-alert_validate').on('click', function () {
|
||||
$('#button-alert_validate').on('click', function () {
|
||||
validateAlerts();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -542,7 +542,7 @@ function print_form_filter_monitors(
|
|||
|
||||
$form_text = '';
|
||||
$table = new stdClass();
|
||||
$table->class = 'filter_table';
|
||||
$table->class = 'filter-table-adv';
|
||||
$table->id = 'module_filter_agent_view';
|
||||
$table->styleTable = 'border-radius: 0;padding: 0;margin: 0 0 10px;';
|
||||
$table->width = '100%';
|
||||
|
|
|
@ -136,6 +136,8 @@ if (!$agents || !$searchAgents) {
|
|||
).'</a>';
|
||||
}
|
||||
|
||||
$table->cellclass[][9] = 'table_action_buttons';
|
||||
|
||||
array_push(
|
||||
$table->data,
|
||||
[
|
||||
|
|
|
@ -72,6 +72,7 @@ if (!$modules || !$searchModules) {
|
|||
'web_content_string'
|
||||
);
|
||||
|
||||
$i = 0;
|
||||
foreach ($modules as $module) {
|
||||
$module['datos'] = modules_get_last_value($module['id_agente_modulo']);
|
||||
$module['module_name'] = $module['nombre'];
|
||||
|
@ -162,6 +163,7 @@ if (!$modules || !$searchModules) {
|
|||
}
|
||||
|
||||
$graphCell = '';
|
||||
$table->cellclass[$i][5] = 'table_action_buttons';
|
||||
if ($module['history_data'] == 1) {
|
||||
$graph_type = return_graphtype($module['id_tipo_modulo']);
|
||||
|
||||
|
@ -204,6 +206,7 @@ if (!$modules || !$searchModules) {
|
|||
|
||||
$group_agent = agents_get_agent_group($module['id_agente']);
|
||||
|
||||
$table->cellclass[$i][8] = 'table_action_buttons';
|
||||
if (check_acl($config['id_user'], $group_agent, 'AW')) {
|
||||
$edit_module = 'aaa';
|
||||
|
||||
|
@ -229,6 +232,8 @@ if (!$modules || !$searchModules) {
|
|||
$edit_module,
|
||||
]
|
||||
);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
echo '<br />';
|
||||
|
|
|
@ -584,19 +584,6 @@ if ((bool) check_acl($config['id_user'], 0, 'ER') === true) {
|
|||
).'</div>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$autorefresh_list_out = [];
|
||||
if (is_metaconsole() === false || is_centralized() === true) {
|
||||
$autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail';
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -1309,6 +1309,7 @@ CREATE TABLE IF NOT EXISTS `tusuario` (
|
|||
`id_filter` INT UNSIGNED NULL DEFAULT NULL,
|
||||
`session_time` INT signed NOT NULL DEFAULT 0,
|
||||
`default_event_filter` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`show_tips_startup` TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||
`autorefresh_white_list` TEXT ,
|
||||
`time_autorefresh` INT UNSIGNED NOT NULL DEFAULT 30,
|
||||
`default_custom_view` INT UNSIGNED NULL DEFAULT 0,
|
||||
|
@ -4219,4 +4220,29 @@ CREATE TABLE IF NOT EXISTS `tsesion_filter` (
|
|||
`type` TEXT NULL,
|
||||
`user` TEXT NULL,
|
||||
PRIMARY KEY (`id_filter`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `twelcome_tip` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`id_lang` VARCHAR(20) NULL,
|
||||
`id_profile` INT NOT NULL,
|
||||
`title` VARCHAR(255) NOT NULL,
|
||||
`text` TEXT NOT NULL,
|
||||
`url` VARCHAR(255) NULL,
|
||||
`enable` TINYINT NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `twelcome_tip_file` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`twelcome_tip_file` INT NOT NULL,
|
||||
`filename` VARCHAR(255) NOT NULL,
|
||||
`path` VARCHAR(255) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
CONSTRAINT `twelcome_tip_file`
|
||||
FOREIGN KEY (`twelcome_tip_file`)
|
||||
REFERENCES `twelcome_tip` (`id`)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
|
|
@ -2519,3 +2519,50 @@ INSERT INTO `tncm_script` VALUES
|
|||
INSERT INTO `tncm_template_scripts`(`id_template`, `id_script`) VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6);
|
||||
|
||||
INSERT INTO `talert_calendar` VALUES (1, 'Default', 0, 'Default calendar');
|
||||
|
||||
INSERT INTO `twelcome_tip` VALUES
|
||||
(1,'es',0,'¿Sabías que puedes monitorizar webs?','De manera sencilla a través de chequeos HTTP estándar o transaccional mediante transacciones centralizadas WUX, o descentralizadas con el plugin UX de agente.','https://pandorafms.com/manual/es/documentation/03_monitoring/06_web_monitoring','1'),
|
||||
(2,'es',0,'Monitorización remota de dispositivos SNMP','Los dispositivos de red como switches, AP, routers y firewalls se pueden monitorizar remotamente usando el protocolo SNMP. Basta con saber su IP, la comunidad SNMP y lanzar un wizard SNMP desde la consola.','https://pandorafms.com/manual/es/documentation/03_monitoring/03_remote_monitoring#monitorizacion_snmp','1'),
|
||||
(3,'es',0,'Monitorizar rutas desde una IP a otra','Existe un plugin especial que sirve para monitorizar visualmente las rutas desde una IP a otra de manera visual y dinámica, según va cambiando con el tiempo.','https://pandorafms.com/manual/es/documentation/03_monitoring/03_remote_monitoring#monitorizacion_de_rutas','1'),
|
||||
(4,'es',0,'¿Tu red pierde paquetes?','Se puede medir la pérdida de paquetes en tu red usando un agente y un plugin libre llamado “Packet Loss”. Esto es especialmente útil en redes Wifi o redes compartidas con muchos usuarios. Escribimos un artículo en nuestro blog hablando de ello, echale un vistazo','https://pandorafms.com/blog/es/perdida-de-paquetes/','1'),
|
||||
(5,'es',0,'Usar Telegram con Pandora FMS','Perfecto para recibir alertas con gráficas empotradas y personalizar así la recepción de avisos de manera individual o en un canal común con mas personas. ','https://pandorafms.com/library/telegram-bot-cli/','1'),
|
||||
(6,'es',0,'Monitorizar JMX (Tomcat, Websphere, Weblogic, Jboss, Apache Kafka, Jetty, GlassFish…)','Existe un plugin Enterprise que sirve para monitorizar cualquier tecnología JMX. Se puede usar de manera local (como plugin local) o de manera remota con el plugin server.','https://pandorafms.com/library/jmx-monitoring/','1'),
|
||||
(7,'es',0,'¿Sabes que cada usuario puede tener su propia Zona Horaria?','Se puede establecer zonas horarias diferentes para cada usuario, de manera que interprete los datos teniendo en cuenta la diferencia horaria. Pandora FMS también puede tener servidores y agentes en diferentes zonas horarias. ¡Por todo el mundo!','','1'),
|
||||
(8,'es',0,'Paradas planificadas','Se puede definir, a nivel de agente y a nivel de módulo, períodos en los cuales se ignoren las alertas y/o los datos recogidos. Es perfecto para planificar paradas de servicio o desconexión de los sistemas monitorizados. También afecta a los informes SLA, evitando que se tengan en cuenta esos intervalos de tiempo.    ','https://pandorafms.com/manual/es/documentation/04_using/11_managing_and_administration#paradas_de_servicio_planificadas','1'),
|
||||
(9,'es',0,'Personalizar los emails de alerta ','¿Sabías que se pueden personalizar los mails de alertas de Pandora? Solo tienes que editar el código HTML por defecto de las acciones de alerta de tipo email.  ','https://pandorafms.com/manual/en/documentation/04_using/01_alerts#editing_an_action','1'),
|
||||
(10,'es',0,'Usando iconos personalizados en consolas visuales ','Gracias a los iconos personalizados se pueden crear vistas muy personalizadas, como la de la imagen, que representa racks con los tipos de servidores en el orden que están colocados dentro del rack. Perfecto para que un técnico sepa exactamente qué máquina esta fallando. Más visual no puede ser, de ahi el nombre.  ','https://pandorafms.com/manual/start?id=es/documentation/04_using/05_data_presentation_visual_maps','1'),
|
||||
(11,'es',0,'Consolas visuales: mapas de calor ','La consola permite integrar en un fondo personalizado una serie de datos, que en función de su valor se representen con unos colores u otros, en tiempo real. Las aplicaciones son infinitas, solo depende de tu imaginación.   ','https://pandorafms.com/manual/es/documentation/04_using/05_data_presentation_visual_maps#mapa_de_calor_o_nube_de_color','1'),
|
||||
(12,'es',0,'Auditoría interna de la consola ','La consola registra todas las actividades relevantes de cada usuario conectado a la consola. Esto incluye la aplicación de configuraciones, validaciones de eventos y alertas, conexión y desconexión y cientos de otras operaciones. La seguridad en Pandora FMS ha sido siempre una de las características del diseño de su arquitectura.  ','https://pandorafms.com/manual/es/documentation/04_using/11_managing_and_administration#log_de_auditoria','1'),
|
||||
(13,'es',0,'Sistema de provisión automática de agentes ','El sistema de autoprovisión de agentes, permite que un agente recién ingresado en el sistema aplique automáticamente cambios en su configuración (como moverlo de grupo, asignarle ciertos valores en campos personalizados) y por supuesto aplicarle determinadas politicas de monitorización. Es una de las funcionalidades más potentes, orientadas a gestionar parques de sistemas muy extensos.  ','https://pandorafms.com/manual/start?id=es/documentation/02_installation/05_configuration_agents#configuracion_automatica_de_agentes','1'),
|
||||
(14,'es',0,'Modo oscuro ','¿Sabes que existe un modo oscuro en Pandora FMS? Un administrador lo puede activar a nivel global desde las opciones de configuración visuales o cualquier usuario a nivel individual, en las opciones de usuario. ','','1'),
|
||||
(15,'es',0,'Google Sheet ','¿Sabes que se puede coger el valor de una celda de una hoja de cálculo de Google Sheet?, utilizamos la API para pedir el dato a través de un plugin remoto. Es perfecto para construir cuadros de mando de negocio, obtener alertas en tiempo real y crear tus propios informes a medida.  ','https://pandorafms.com/library/google-sheets-plugin/','1'),
|
||||
(16,'es',0,'Tablas de ARP','¿Sabes que existe un módulo de inventario para sacar las tablas ARP de tus servidores windows? Es fácil de instalar y puede darte información muy detallada de tus equipos.','https://pandorafms.com/library/arp-table-windows-local/','1'),
|
||||
(17,'es',0,'Enlaces de red en la consola visual ','Existe un elemento de consola visual llamado “Network link” que permite mostrar visualmente la unión de dos interfaces de red, su estado y el tráfico de subida/bajada, de una manera muy visual.  ','https://pandorafms.com/manual/es/documentation/04_using/05_data_presentation_visual_maps#enlace_de_red','1'),
|
||||
(18,'es',0,'¿Conoces los informes de disponibilidad? ','Son muy útiles ya que te dicen el tiempo (%) que un chequeo ha estado en diferentes estados a lo largo de un lapso de tiempo, por ejemplo, una semana. Ofrece datos crudos completos de lo que se ha hecho con el detalle suficiente para convencer a un proveedor o un cliente.  ','','1'),
|
||||
(19,'es',0,'Gráficas de disponibilidad ','Parecidos a los informes de disponibilidad, pero mucho mas visuales, ofrecen el detalle de estado de un monitor a lo largo del tiempo. Se pueden agrupar con otro módulo para ofrecer datos finales teniendo en cuenta la alta disponibilidad de un servicio. Son perfectos para su uso en informes a proveedores y/o clientes.  ','https://pandorafms.com/manual/es/documentation/04_using/08_data_presentation_reports#grafico_de_disponibilidad','1'),
|
||||
(20,'es',0,'Zoom en gráficas de datos ','¿Sabes que Pandora FMS permite hacer zoom en una parte de la gráfica. Con eso ampliarás la información de la gráfica. Si estás viendo una gráfica de un mes y amplías, podrás ver los datos de ese intervalo. Si utilizas una gráfica con datos de resolución completa (los llamamos gráficas TIP) podrás ver el detalle de cada dato, aunque tu gráfica tenga miles de muestras.  ','','1'),
|
||||
(21,'es',0,'Gráficas de resolución completa ','Pandora FMS y otras herramientas cuando tienen que mostrar una gráfica obtienen los datos de la fuente de datos y luego “simplifican” la gráfica, ya que si la serie de datos tiene 10,000 elementos y la gráfica solo tiene 300 pixeles de ancho no pueden caber todos, asi que se “simplifican” esos 10,000 puntos en solo 300.   Sin embargo al simplificar se pierde “detalle” en la gráfica, y por supuesto no podemos “hacer zoom”. Las gráficas de Pandora FMS permiten mostrar y usar todos los datos en una gráfica, que llamamos “TIP” que muestra todos los puntos superpuestos y además permite que al hacer zoom no se pierda resolución.   ','','1'),
|
||||
(22,'es',0,'Política de contraseñas','La consola de Pandora FMS tiene un sistema de gestión de política de credenciales, para reforzar la seguridad local (además de permitir la autenticación externa contra un LDAP, Active Directory o SAML). A través de este sistema podemos forzar cambios de password cada X días, guardar un histórico de passwords usadas o evitar el uso de ciertas contraseñas entre otras acciones.  ','https://pandorafms.com/manual/es/documentation/04_using/12_console_setup?s%5B%5D%3Dcontrase%25C3%25B1as#password_policy','1'),
|
||||
(23,'es',0,'Autenticación de doble factor ','Es posible activar (y forzar su uso a todos los usuarios) un sistema de doble autenticación (usando Google Auth) para que cualquier usuario se autentique además de con una contraseña, con un sistema de token de un solo uso, dando al sistema mucha más seguridad.  ','https://pandorafms.com/manual/en/documentation/04_using/12_console_setup?s%5B%5D%3Dgoogle%26s%5B%5D%3Dauth#authentication','1');
|
||||
|
||||
INSERT INTO `twelcome_tip_file` (`twelcome_tip_file`, `filename`, `path`) VALUES
|
||||
(1, 'monitorizar_web.png', 'images/tips/'),
|
||||
(2, 'monitorizar_snmp.png', 'images/tips/'),
|
||||
(3, 'monitorizar_desde_ip.png', 'images/tips/'),
|
||||
(4, 'tu_red_pierde_paquetes.png', 'images/tips/'),
|
||||
(5, 'telegram_con_pandora.png', 'images/tips/'),
|
||||
(6, 'monitorizar_con_jmx.png', 'images/tips/'),
|
||||
(7, 'usuario_zona_horaria.png', 'images/tips/'),
|
||||
(8, 'paradas_planificadas.png', 'images/tips/'),
|
||||
(9, 'personalizar_los_emails.png', 'images/tips/'),
|
||||
(10, 'iconos_personalizados.png', 'images/tips/'),
|
||||
(11, 'mapa_de_calor.png', 'images/tips/'),
|
||||
(12, 'auditoria.png', 'images/tips/'),
|
||||
(15, 'google_sheets.png', 'images/tips/'),
|
||||
(17, 'enlaces_consola_visual.png', 'images/tips/'),
|
||||
(18, 'informe_disponibiliad.png', 'images/tips/'),
|
||||
(19, 'graficas_disponibilidad.png', 'images/tips/'),
|
||||
(20, 'zoom_en_graficas.png', 'images/tips/'),
|
||||
(22, 'politica_de_pass.png', 'images/tips/');
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
<?php
|
||||
/**
|
||||
* Dashboards View tips in modal
|
||||
*
|
||||
* @category Console Class
|
||||
* @package Pandora FMS
|
||||
* @subpackage Dashboards
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
$output = '';
|
||||
$output .= '<script>var idTips = ['.$id.'];</script>';
|
||||
$output .= '<div class="window">';
|
||||
$output .= '<div class="tips_header">';
|
||||
$output .= '<p class="title">'.__('Hello! These are the tips of the day.').'</p>';
|
||||
$output .= '<p>'.html_print_checkbox(
|
||||
'show_tips_startup',
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
'show_tips_startup(this)',
|
||||
false,
|
||||
'',
|
||||
($preview === true) ? '' : 'checkbox_tips_startup'
|
||||
).__('Show usage tips at startup').'</p>';
|
||||
$output .= '</div>';
|
||||
$output .= '<div class="carousel '.((empty($files) === true && empty($files64) === true) ? 'invisible' : '').'">';
|
||||
$output .= '<div class="images">';
|
||||
|
||||
if ($files !== false) {
|
||||
if ($preview === true) {
|
||||
foreach ($files as $key => $file) {
|
||||
$output .= html_print_image($file, true);
|
||||
}
|
||||
} else {
|
||||
foreach ($files as $key => $file) {
|
||||
$output .= html_print_image($file['path'].$file['filename'], true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($files64 !== false) {
|
||||
foreach ($files64 as $key => $file) {
|
||||
$output .= '<img src="'.$file.'" />';
|
||||
}
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<div class="description">';
|
||||
$output .= '<h2 id="title_tip">'.$title.'</h2>';
|
||||
$output .= '<p id="text_tip">';
|
||||
$output .= $text;
|
||||
$output .= '</p>';
|
||||
|
||||
if (empty($url) === false && $url !== '') {
|
||||
$output .= '<a href="'.$url.'" target="_blank" id="url_tip">'.__('See more info').'<span class="arrow_tips">→</span></a>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<div class="ui-dialog-buttonset">';
|
||||
// TODO Delete this buttons and use html_print_button when merge new design
|
||||
$output .= html_print_button(
|
||||
__('Maybe later'),
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
[
|
||||
'onclick' => 'close_dialog()',
|
||||
'class' => 'secondary mini',
|
||||
],
|
||||
true
|
||||
);
|
||||
$output .= '<div class="counter-tips">';
|
||||
$output .= html_print_image('images/arrow-left-grey.png', true, ['class' => 'arrow_counter']);
|
||||
$output .= html_print_image('images/arrow-right-grey.png', true, ['class' => 'arrow_counter']);
|
||||
$output .= '</div>';
|
||||
if ($preview === true) {
|
||||
$output .= html_print_button(
|
||||
__('Ok'),
|
||||
'next_tip',
|
||||
false,
|
||||
'',
|
||||
[
|
||||
'onclick' => 'close_dialog()',
|
||||
'class' => 'mini',
|
||||
],
|
||||
true
|
||||
);
|
||||
} else {
|
||||
$output .= html_print_button(
|
||||
__('Ok'),
|
||||
'next_tip',
|
||||
false,
|
||||
'',
|
||||
[
|
||||
'onclick' => 'next_tip()',
|
||||
'class' => 'mini',
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
echo $output;
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 7.0NG.769-230309
|
||||
Version: 7.0NG.769-230310
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.769-230309"
|
||||
pandora_version="7.0NG.769-230310"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.769";
|
||||
my $pandora_build = "230309";
|
||||
my $pandora_build = "230310";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
|
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.769";
|
||||
my $pandora_build = "230309";
|
||||
my $pandora_build = "230310";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.769
|
||||
%define release 230309
|
||||
%define release 230310
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.769"
|
||||
PI_BUILD="230309"
|
||||
PI_BUILD="230310"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
|
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
|||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.769 Build 230309";
|
||||
my $version = "7.0NG.769 Build 230310";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
|
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.769 Build 230309";
|
||||
my $version = "7.0NG.769 Build 230310";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
|