diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index d80a0ea499..08fa93c4f6 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-agent-unix
-Version: 7.0NG.750-201124
+Version: 7.0NG.750-201125
Architecture: all
Priority: optional
Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 2c40973230..45037afa3b 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-pandora_version="7.0NG.750-201124"
+pandora_version="7.0NG.750-201125"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index be315e6621..c83ca82522 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -55,7 +55,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.750';
-use constant AGENT_BUILD => '201124';
+use constant AGENT_BUILD => '201125';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index f848fe74dd..7464cc8de0 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.750
-%define release 201124
+%define release 201125
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index b01471c55e..72fe736185 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.750
-%define release 201124
+%define release 201125
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 0d552d3bc2..ab3d9c8b44 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.750"
-PI_BUILD="201124"
+PI_BUILD="201125"
OS_NAME=`uname -s`
FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 39b9472342..de69ad1390 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
-{201124}
+{201125}
ViewReadme
{Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 3ff011b739..337d9c5ebb 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.750(Build 201124)")
+#define PANDORA_VERSION ("7.0NG.750(Build 201125)")
string pandora_path;
string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index dca5628c73..bacba32ca6 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
- VALUE "ProductVersion", "(7.0NG.750(Build 201124))"
+ VALUE "ProductVersion", "(7.0NG.750(Build 201125))"
VALUE "FileVersion", "1.0.0.0"
END
END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 684a4bd24a..c60cf9e85f 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-console
-Version: 7.0NG.750-201124
+Version: 7.0NG.750-201125
Architecture: all
Priority: optional
Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 6b020ff9d8..ec0d439a44 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-pandora_version="7.0NG.750-201124"
+pandora_version="7.0NG.750-201125"
package_pear=0
package_pandora=1
diff --git a/pandora_console/extensions/agents_alerts.php b/pandora_console/extensions/agents_alerts.php
index 4fd7be94ae..53ebe3d2e2 100755
--- a/pandora_console/extensions/agents_alerts.php
+++ b/pandora_console/extensions/agents_alerts.php
@@ -1,651 +1,95 @@
'ANY(SELECT id_agente FROM tagente WHERE id_grupo = '.$group];
-
- db_process_sql_update('tagente_modulo', ['flag' => 1], $where);
- } else {
- db_pandora_audit('ACL Violation', 'Trying to set flag for groups');
- include 'general/noaccess.php';
+ global $ajaxPage;
+ // This page.
+ $thisOwnPage = 'index.php?sec=view&sec2=extensions/agents_alerts';
+ // Ajax variables.
+ $ajaxPage = 'extensions/agents_alerts';
+ $pageName = '[AgentsAlerts]';
+ // Control call flow.
+ try {
+ // User access and validation is being processed on class constructor.
+ $obj = new AgentsAlerts($ajaxPage);
+ } catch (Exception $e) {
+ if (is_ajax() === true) {
+ echo json_encode(['error' => $pageName.$e->getMessage() ]);
exit;
- }
- }
-
- if ($config['realtimestats'] == 0) {
- $updated_info = __('Last update').' : '.ui_print_timestamp(db_get_sql('SELECT min(utimestamp) FROM tgroup_stat'), true);
- } else {
- // $updated_info = __("Updated at realtime");
- $updated_info = '';
- }
-
- $updated_time = $updated_info;
- $create_alert = (int) get_parameter('create_alert', 0);
-
- if ($create_alert) {
- $template2 = get_parameter('template');
- $module_action_threshold = get_parameter('module_action_threshold');
-
- $id_alert = alerts_create_alert_agent_module($create_alert, $template2);
-
- if ($id_alert !== false) {
- $action_select = get_parameter('action_select', 0);
-
- if ($action_select != 0) {
- $values = [];
- $values['fires_min'] = 0;
- $values['fires_max'] = 0;
- $values['module_action_threshold'] = (int) get_parameter('module_action_threshold');
-
- alerts_add_alert_agent_module_action($id_alert, $action_select, $values);
- }
- }
- }
-
- $refr = (int) get_parameter('refr', 30);
- // By default 30 seconds
- $show_modules = (bool) get_parameter('show_modules', 0);
- $group_id = get_parameter('group_id', 0);
- $offset = get_parameter('offset', 0);
- $hor_offset = get_parameter('hor_offset', 0);
- $block = 20;
-
- $groups = users_get_groups();
-
- $filter_groups .= ''.__('Group').'';
- $filter_groups .= '
';
- $filter_groups .= html_print_select_groups(false, 'AR', true, 'group_id', $group_id, false, '', '', true, false, true, '', false, 'margin-right: 10px; margin-top: 5px;');
- $filter_groups .= '
';
-
- $check = ''.__('Show modules without alerts').'';
- $check .= html_print_checkbox('slides_ids[]', $d['id'], $show_modules, true, false, '', true);
-
- $comborefr = '';
-
- if ($config['pure'] == 0) {
- $fullscreen['text'] = ''.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode')]).'';
- } else {
- $fullscreen['text'] = ''.html_print_image('images/normal_screen.png', true, ['title' => __('Back to normal mode')]).'';
- $config['refr'] = $refr;
- }
-
- $onheader = [
- 'updated_time' => $updated_time,
- 'fullscreen' => $fullscreen,
- 'combo_groups' => $filter_groups,
- ];
-
- if ($config['pure'] == 1) {
- $onheader['combo_refr'] = $comborefr;
- }
-
- // Header.
- ui_print_page_header(
- __('Agents/Alerts'),
- 'images/op_alerts.png',
- false,
- '',
- false,
- $updated_time
- );
-
- // Old style table, we need a lot of special formatting,don't use table function
- // Prepare old-style table
- echo '';
- echo '';
- echo ''.$filter_groups.' | ';
- echo ''.$check.' | ';
- if ($config['pure'] == 1) {
- echo ''.$comborefr.' | ';
- }
-
- echo ' '.__('Full screen').''.$fullscreen['text'].' | ';
- echo '
';
- echo '
';
-
- if ($show_modules) {
- if ($group_id > 0) {
- $grupo = " AND tagente.id_grupo = $group_id";
} else {
- $grupo = '';
+ echo $pageName.$e->getMessage();
}
- $offset_modules = get_parameter('offset', 0);
- $sql_count = "SELECT COUNT(tagente_modulo.nombre) FROM tagente_modulo
- INNER JOIN tagente ON tagente.id_agente = tagente_modulo.id_agente
- WHERE id_agente_modulo NOT IN (SELECT id_agent_module FROM talert_template_modules)
- $grupo";
- $count_agent_module = db_get_all_rows_sql($sql_count);
-
- $sql = "SELECT tagente.alias, tagente_modulo.nombre,
- tagente_modulo.id_agente_modulo FROM tagente_modulo
- INNER JOIN tagente ON tagente.id_agente = tagente_modulo.id_agente
- WHERE id_agente_modulo NOT IN (SELECT id_agent_module FROM talert_template_modules)
- $grupo LIMIT 20 OFFSET $offset_modules";
- $agent_modules = db_get_all_rows_sql($sql);
-
- ui_pagination(
- $count_agent_module[0]['COUNT(tagente_modulo.nombre)'],
- ui_get_url_refresh(),
- 0,
- 0,
- false,
- 'offset',
- true,
- '',
- '',
- false,
- 'alerts_modules'
- );
-
- $table->width = '100%';
- $table->class = 'databox data';
- $table->id = 'table_agent_module';
- $table->data = [];
-
- $table->head[0] = __('Agents');
- $table->head[1] = __('Modules');
- $table->head[2] = __('Actions');
-
- $table->style[0] = 'width: 25%;';
- $table->style[1] = 'width: 33%;';
- $table->style[2] = 'width: 33%;';
-
- foreach ($agent_modules as $agent_module) {
- $data[0] = io_safe_output($agent_module['alias']);
- $data[1] = io_safe_output($agent_module['nombre']);
- $uniqid = $agent_module['id_agente_modulo'];
- $data[2] = "".html_print_image('images/add_mc.png', true).'';
- array_push($table->data, $data);
-
- $table2->width = '100%';
- $table2->id = 'table_add_alert';
- $table2->class = 'databox filters';
- $table2->data = [];
- // $data[0] =
- $table2->data[0][0] = __('Actions');
-
- $groups_user = users_get_groups($config['id_user']);
- if (!empty($groups_user)) {
- $groups = implode(',', array_keys($groups_user));
- $sql = "SELECT id, name FROM talert_actions WHERE id_group IN ($groups)";
- $actions = db_get_all_rows_sql($sql);
- }
-
- $table2->data[0][1] = html_print_select(
- index_array($actions, 'id', 'name'),
- 'action_select',
- '',
- '',
- __('Default action'),
- '0',
- true,
- '',
- true,
- '',
- false,
- 'width: 250px;'
- );
- $table2->data[0][1] .= '
';
- $table2->data[0][1] .= __('Number of alerts match from').' ';
- $table2->data[0][1] .= html_print_input_text('fires_min', '', '', 4, 10, true);
- $table2->data[0][1] .= ' '.__('to').' ';
- $table2->data[0][1] .= html_print_input_text('fires_max', '', '', 4, 10, true);
- $table2->data[0][1] .= ui_print_help_icon(
- 'alert-matches',
- true,
- ui_get_full_url(false, false, false, false)
- );
- $table2->data[0][1] .= '';
- if (check_acl($config['id_user'], 0, 'LM')) {
- $table2->data[0][1] .= '';
- $table2->data[0][1] .= html_print_image('images/add.png', true);
- $table2->data[0][1] .= ''.__('Create Action').'';
- $table2->data[0][1] .= '';
- }
-
- $table2->data[1][0] = __('Template');
- $own_info = get_user_info($config['id_user']);
- if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
- $templates = alerts_get_alert_templates(false, ['id', 'name']);
- } else {
- $usr_groups = users_get_groups($config['id_user'], 'LW', true);
- $filter_groups = '';
- $filter_groups = implode(',', array_keys($usr_groups));
- $templates = alerts_get_alert_templates(['id_group IN ('.$filter_groups.')'], ['id', 'name']);
- }
-
- $table2->data[1][1] = html_print_select(
- index_array($templates, 'id', 'name'),
- 'template',
- '',
- '',
- __('Select'),
- 0,
- true,
- false,
- true,
- '',
- false,
- 'width: 250px;'
- );
- $table2->data[1][1] .= ' '.html_print_image('images/zoom.png', true, ['class' => 'img_help']).'';
- if (check_acl($config['id_user'], 0, 'LM')) {
- $table2->data[1][1] .= '';
- $table2->data[1][1] .= html_print_image('images/add.png', true);
- $table2->data[1][1] .= ''.__('Create Template').'';
- $table2->data[1][1] .= '';
- }
-
- $table2->data[2][0] = __('Threshold');
- $table2->data[2][1] = html_print_input_text('module_action_threshold', '0', '', 5, 7, true);
- $table2->data[2][1] .= ' '.__('seconds');
-
- $content2 = '';
-
- $module_name = ui_print_truncate_text(io_safe_output($agent_module['nombre']), 40, false, true, false, '…', false);
- echo ''.$content2.'
';
- }
-
- html_print_table($table);
- } else {
- $filter = [
- 'offset' => (int) $offset,
- 'limit' => (int) $config['block_size'],
- ];
- $filter_count = [];
-
- if ($group_id > 0) {
- $filter['id_grupo'] = $group_id;
- $filter_count['id_grupo'] = $group_id;
- }
-
- // Get the id of all agents with alerts
- $sql = 'SELECT DISTINCT(id_agente)
- FROM tagente_modulo
- WHERE id_agente_modulo IN
- (SELECT id_agent_module
- FROM talert_template_modules)';
- $agents_with_alerts_raw = db_get_all_rows_sql($sql);
-
- if ($agents_with_alerts_raw === false) {
- $agents_with_alerts_raw = [];
- }
-
- $agents_with_alerts = [];
- foreach ($agents_with_alerts_raw as $awar) {
- $agents_with_alerts[] = $awar['id_agente'];
- }
-
- $filter['id_agente'] = $agents_with_alerts;
- $filter_count['id_agente'] = $agents_with_alerts;
-
- $agents = agents_get_agents($filter);
-
- $nagents = count(agents_get_agents($filter_count));
-
- if ($agents == false) {
- ui_print_info_message(['no_close' => true, 'message' => __('There are no agents with alerts') ]);
- return;
- }
-
- $all_alerts = agents_get_alerts_simple();
-
- if ($config['pure'] == 1) {
- $block = count($all_alerts);
- }
-
- $templates = [];
- $agent_alerts = [];
- foreach ($all_alerts as $alert) {
- $templates[$alert['id_alert_template']] = '';
- $agent_alerts[$alert['agent_name']][$alert['id_alert_template']][] = $alert;
- }
-
- // Prepare pagination
- ui_pagination(
- $nagents,
- false,
- 0,
- 0,
- false,
- 'offset',
- true,
- '',
- '',
- [
- 'count' => '',
- 'offset' => 'offset_param',
- ],
- 'alerts_agents'
- );
-
- echo '';
- echo '';
- echo "".__('Agents').' / '.__('Alert templates').' | ';
-
- if ($hor_offset > 0) {
- $new_hor_offset = ($hor_offset - $block);
- echo "
- ".html_print_image('images/darrowleft.png', true, ['title' => __('Previous templates')]).' | ';
- }
-
- $templates_raw = [];
- if (!empty($templates)) {
- $sql = sprintf(
- 'SELECT id, name
- FROM talert_templates
- WHERE id IN (%s)',
- implode(',', array_keys($templates))
- );
-
- $templates_raw = db_get_all_rows_sql($sql);
- }
-
- if (empty($templates_raw)) {
- $templates_raw = [];
- }
-
- $alerts = [];
- $ntemplates = 0;
- foreach ($templates_raw as $temp) {
- if (isset($templates[$temp['id']]) && $templates[$temp['id']] == '') {
- $ntemplates++;
- if ($ntemplates <= $hor_offset || $ntemplates > ($hor_offset + $block)) {
- continue;
- }
-
- $templates[$temp['id']] = $temp['name'];
- }
- }
-
- foreach ($templates as $tid => $tname) {
- if ($tname == '') {
- continue;
- }
-
- echo ''.io_safe_output($tname).' | ';
- }
-
- echo '
';
- if (($hor_offset + $block) < $ntemplates) {
- $new_hor_offset = ($hor_offset + $block);
- echo "
- ".html_print_image('images/darrowright.png', true, ['title' => __('More templates')]).' | ';
- }
-
- foreach ($agents as $agent) {
- $alias = db_get_row('tagente', 'id_agente', $agent['id_agente']);
- echo '';
- // Name of the agent
- echo ''.$alias['alias'].' | ';
-
- // Alerts of the agent
- $anyfired = false;
- foreach ($templates as $tid => $tname) {
- if ($tname == '') {
- continue;
- }
-
- if (isset($agent_alerts[$agent['nombre']][$tid])) {
- foreach ($agent_alerts[$agent['nombre']][$tid] as $alert) {
- if ($alert['times_fired'] > 0) {
- $anyfired = true;
- }
- }
-
- $cellstyle = '';
- if ($anyfired) {
- $cellstyle = 'background:'.COL_ALERTFIRED.';';
- }
-
- echo ' ';
-
- $uniqid = uniqid();
- echo '';
-
- print_alerts_summary_modal_window($uniqid, $agent_alerts[$agent['nombre']][$tid]);
- } else {
- echo ' | ';
- }
-
- echo ' | ';
- }
-
- echo '
';
- }
-
- echo '
';
-
- ui_pagination(
- $nagents,
- false,
- 0,
- 0,
- false,
- 'offset',
- true,
- 'pagination-bottom',
- '',
- [
- 'count' => '',
- 'offset' => 'offset_param',
- ],
- 'alerts_agents'
- );
+ // Stop this execution, but continue 'globally'.
+ return;
}
+ // AJAX controller.
+ if (is_ajax() === true) {
+ $method = get_parameter('method');
+
+ if (method_exists($obj, $method) === true) {
+ $obj->{$method}();
+ } else {
+ $obj->error('Method not found. ['.$method.']');
+ }
+
+ // Stop any execution.
+ exit;
+ } else {
+ // Run.
+ $obj->run();
+ }
}
-
-
-// Print the modal window for the summary of each alerts group
-function print_alerts_summary_modal_window($id, $alerts)
-{
- $table->width = '98%';
- $table->class = 'info_table';
- $table->data = [];
-
- $table->head[0] = __('Module');
- $table->head[1] = __('Action');
- $table->head[2] = __('Last fired');
- $table->head[3] = __('Status');
-
- foreach ($alerts as $alert) {
- $data[0] = modules_get_agentmodule_name($alert['id_agent_module']);
-
- $actions = alerts_get_alert_agent_module_actions($alert['id']);
-
- $actionDefault = db_get_value_sql(
- '
- SELECT id_alert_action
- FROM talert_templates
- WHERE id = '.$alert['id_alert_template']
- );
-
- $actionText = '';
-
- if (!empty($actions)) {
- $actionText = '';
- foreach ($actions as $action) {
- $actionText .= '- '.$action['name'];
- if ($action['fires_min'] != $action['fires_max']) {
- $actionText .= ' ('.$action['fires_min'].' / '.$action['fires_max'].')';
- }
-
- $actionText .= '
';
- }
-
- $actionText .= '
';
- } else {
- if (!empty($actionDefault)) {
- $actionText = db_get_sql(
- "SELECT name
- FROM talert_actions
- WHERE id = $actionDefault"
- ).' ('.__('Default').')';
- }
- }
-
- $data[1] = $actionText;
- $data[2] = ui_print_timestamp($alert['last_fired'], true);
-
- $status = STATUS_ALERT_NOT_FIRED;
-
- if ($alert['times_fired'] > 0) {
- $status = STATUS_ALERT_FIRED;
- $title = __('Alert fired').' '.$alert['internal_counter'].' '.__('time(s)');
- } else if ($alert['disabled'] > 0) {
- $status = STATUS_ALERT_DISABLED;
- $title = __('Alert disabled');
- } else {
- $status = STATUS_ALERT_NOT_FIRED;
- $title = __('Alert not fired');
- }
-
- $data[3] = ui_print_status_image($status, $title, true);
-
- array_push($table->data, $data);
- }
-
- $content = html_print_table($table, true);
-
- $agent = modules_get_agentmodule_agent_alias($alerts[0]['id_agent_module']);
- $template = alerts_get_alert_template_name($alerts[0]['id_alert_template']);
-
- echo ''.$content.'
';
-}
-
-
-extensions_add_operation_menu_option(__('Agents/Alerts view'), 'estado', null, 'v1r1', 'view');
-extensions_add_main_function('mainAgentsAlerts');
-
-ui_require_jquery_file('pandora');
-
-?>
-
-
diff --git a/pandora_console/extensions/agents_modules.php b/pandora_console/extensions/agents_modules.php
index 0a3cc2a382..eb699b7467 100644
--- a/pandora_console/extensions/agents_modules.php
+++ b/pandora_console/extensions/agents_modules.php
@@ -26,17 +26,6 @@ function agents_modules_load_js()
$ignored_params['refresh'] = '';
?>
-
-
+
+ ';
}
@@ -563,6 +568,11 @@ class HTML
if (!$direct) {
$output .= '';
}
+
+ // Raw content for attach at the end of the input.
+ if (isset($input['surround_end']) === true) {
+ $output .= $input['surround_end'];
+ }
} else {
$output .= self::printInput($input['arguments']);
// Allow dynamic content.
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index aaef860190..52c30c5ecb 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
/**
* Pandora build version and version
*/
-$build_version = 'PC201124';
+$build_version = 'PC201125';
$pandora_version = 'v7.0NG.750';
// Do not overwrite default timezone set if defined.
diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php
index 2c71835165..bda3a759e0 100644
--- a/pandora_console/include/functions_html.php
+++ b/pandora_console/include/functions_html.php
@@ -2168,6 +2168,55 @@ function html_print_div($options, $return=false)
}
+/**
+ * Render an anchor html element.
+ *
+ * @param array $options Parameters
+ * - id: string
+ * - style: string
+ * - title: string
+ * - href: string.
+ * @param boolean $return Return or echo flag.
+ *
+ * @return string HTML code if return parameter is true.
+ */
+function html_print_anchor(
+ array $options,
+ bool $return=false
+) {
+ $output = '';
}
diff --git a/pandora_console/include/javascript/dynamic_service.js b/pandora_console/include/javascript/dynamic_service.js
new file mode 100644
index 0000000000..ef1af08a15
--- /dev/null
+++ b/pandora_console/include/javascript/dynamic_service.js
@@ -0,0 +1,71 @@
+function updateSmartValue(event) {
+ var eventType = event.type;
+ var inputElement = $("#" + event.target.id);
+ var inputValue = inputElement.val();
+ var valueType = event.target.id.split("-");
+
+ if (eventType === "focus") {
+ inputElement.val(parseInt(inputValue));
+ } else if (eventType === "blur") {
+ change_mode();
+ } else {
+ var keyPressed = event.keyCode;
+ if (
+ (keyPressed <= 48 && keyPressed >= 57) ||
+ (inputElement.val() < 0 || inputElement.val() > 100)
+ ) {
+ event.preventDefault();
+ } else {
+ $("#text-" + valueType[0]).val(inputElement.val());
+ }
+ }
+}
+
+function change_mode(alt) {
+ var modeStatus = $("#mode").val();
+ var serviceMode = $("#hidden-service_mode_smart").val();
+ if (modeStatus == serviceMode) {
+ $(".smart_thresholds").css("display", "inline-flex");
+
+ var crit = parseFloat($("#text-critical").val());
+ var warn = parseFloat($("#text-warning").val());
+
+ if (crit < warn) {
+ $("#text-critical").val($("#text-warning").val());
+ }
+
+ $("#critical-val-d").val($("#text-critical").val() + " %");
+ $("#warning-val-d").val($("#text-warning").val() + " %");
+
+ if (alt != 1) {
+ $("#text-critical")
+ .prop("type", "range")
+ .prop("step", "0.01")
+ .prop("min", "0")
+ .prop("max", "100")
+ .on("input", function() {
+ change_mode(1);
+ });
+
+ $("#text-warning")
+ .prop("type", "range")
+ .prop("step", "0.01")
+ .prop("min", "0")
+ .prop("max", "100")
+ .on("input", function() {
+ change_mode(1);
+ });
+ }
+ } else {
+ $(".smart_thresholds").css("display", "none");
+
+ $("#text-critical")
+ .prop("type", "number")
+ .on("input", function() {})
+ .show();
+ $("#text-warning")
+ .prop("type", "number")
+ .on("input", function() {})
+ .show();
+ }
+}
diff --git a/pandora_console/include/styles/agent_alerts.css b/pandora_console/include/styles/agent_alerts.css
new file mode 100644
index 0000000000..b3118ddd27
--- /dev/null
+++ b/pandora_console/include/styles/agent_alerts.css
@@ -0,0 +1,70 @@
+/* Specific CSS for Agent/Alerts view */
+
+.agents_modules_table .table {
+ width: 100%;
+ table-layout: fixed;
+}
+
+.agents_modules_table .next_previous_step {
+ width: 0.1%;
+}
+
+.agents_modules_table .header_table_principal_cell {
+ text-align: right !important;
+ padding-right: 13px;
+ width: 20%;
+}
+
+.agents_modules_table .header_table_caption_cell {
+ height: 200px;
+}
+
+.agents_modules_table .position_text_module {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+}
+
+/* .agents_modules_table .position_text_module div {
+ padding-left: 10px;
+ margin-top: 90px;
+} */
+
+#full_screen_refresh_box,
+#slc-refresh-rate,
+#img-full-screen {
+ float: right;
+}
+
+#full_screen_refresh_box > li > label {
+ width: 100px;
+ margin-left: 20px;
+}
+
+.full_screen_button {
+ color: transparent;
+ width: 20%;
+ border: 0;
+}
+
+.agent_alerts_header_pure {
+ position: absolute;
+}
+
+.agents_alerts_header form > ul > li {
+ display: inline-flex;
+}
+
+.agents_alerts_header form ul {
+ clear: both;
+ width: 100%;
+}
+
+.agents_alerts_header form > ul > li:nth-child(1n + 1) {
+ margin-left: 2em;
+}
+
+.pagination-bottom {
+ margin-top: 15px;
+}
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 922ed8c79a..24ea783b34 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -688,7 +688,7 @@ select:-internal-list-box {
float: right;
}
.invisible {
- display: none;
+ display: none !important;
}
div#page {
@@ -1710,6 +1710,20 @@ input.remove-item-img {
background-position: center;
}
+button.pure_full,
+input.pure_full {
+ background-image: url(../../images/full_screen.png);
+ background-repeat: no-repeat;
+ background-size: 21px 21px;
+}
+
+button.pure_normal,
+input.pure_normal {
+ background-image: url(../../images/normal_screen.png);
+ background-repeat: no-repeat;
+ background-size: 21px 21px;
+}
+
/* end of classes for event priorities */
div#main_pure {
background-color: #fefefe;
@@ -5798,6 +5812,13 @@ div#status_pie {
border-radius: 5px;
}
+.status_rounded_rectangles.text_inside {
+ color: #ffffff;
+ text-align: center;
+ font-weight: bold;
+ padding-top: 0.4em;
+}
+
.status_small_squares,
.status_balls {
width: 12px;
@@ -6039,3 +6060,12 @@ div.graph div.legend div,
div.graph div.legend table {
top: 25px !important;
}
+
+.rotate_text_module {
+ -ms-transform: rotate(270deg);
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ writing-mode: lr-tb;
+ white-space: nowrap;
+}
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 23a3ef747c..4977e126a8 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -129,7 +129,7 @@
[ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 0f4b208d1d..937c710e50 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.750
-%define release 201124
+%define release 201125
Summary: Pandora FMS Server
Name: %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index a64aa27d5d..3233924b62 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.750
-%define release 201124
+%define release 201125
Summary: Pandora FMS Server
Name: %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 317a7cbe28..edbd9d50d5 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
# **********************************************************************
PI_VERSION="7.0NG.750"
-PI_BUILD="201124"
+PI_BUILD="201125"
MODE=$1
if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 124c8f652f..bcac319542 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -35,7 +35,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB;
# version: define current version
-my $version = "7.0NG.750 PS201124";
+my $version = "7.0NG.750 PS201125";
# Pandora server configuration
my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 3486a07755..197136717e 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv;
# version: define current version
-my $version = "7.0NG.750 PS201124";
+my $version = "7.0NG.750 PS201125";
# save program name for logging
my $progname = basename($0);