mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-09-25 19:09:08 +02:00
changed mr
This commit is contained in:
commit
cdddc07b86
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-agent-unix
|
package: pandorafms-agent-unix
|
||||||
Version: 7.0NG.766-221110
|
Version: 7.0NG.766-221123
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.766-221110"
|
pandora_version="7.0NG.766-221123"
|
||||||
|
|
||||||
echo "Test if you has the tools for to make the packages."
|
echo "Test if you has the tools for to make the packages."
|
||||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||||
|
@ -1015,7 +1015,7 @@ my $Sem = undef;
|
|||||||
my $ThreadSem = undef;
|
my $ThreadSem = undef;
|
||||||
|
|
||||||
use constant AGENT_VERSION => '7.0NG.766';
|
use constant AGENT_VERSION => '7.0NG.766';
|
||||||
use constant AGENT_BUILD => '221110';
|
use constant AGENT_BUILD => '221123';
|
||||||
|
|
||||||
# Agent log default file size maximum and instances
|
# Agent log default file size maximum and instances
|
||||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_agent_unix
|
%define name pandorafms_agent_unix
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_agent_unix
|
%define name pandorafms_agent_unix
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.766"
|
PI_VERSION="7.0NG.766"
|
||||||
PI_BUILD="221110"
|
PI_BUILD="221123"
|
||||||
OS_NAME=`uname -s`
|
OS_NAME=`uname -s`
|
||||||
|
|
||||||
FORCE=0
|
FORCE=0
|
||||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
Version
|
Version
|
||||||
{221110}
|
{221123}
|
||||||
|
|
||||||
ViewReadme
|
ViewReadme
|
||||||
{Yes}
|
{Yes}
|
||||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||||||
using namespace Pandora_Strutils;
|
using namespace Pandora_Strutils;
|
||||||
|
|
||||||
#define PATH_SIZE _MAX_PATH+1
|
#define PATH_SIZE _MAX_PATH+1
|
||||||
#define PANDORA_VERSION ("7.0NG.766 Build 221110")
|
#define PANDORA_VERSION ("7.0NG.766 Build 221123")
|
||||||
|
|
||||||
string pandora_path;
|
string pandora_path;
|
||||||
string pandora_dir;
|
string pandora_dir;
|
||||||
|
@ -11,7 +11,7 @@ BEGIN
|
|||||||
VALUE "LegalCopyright", "Artica ST"
|
VALUE "LegalCopyright", "Artica ST"
|
||||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||||
VALUE "ProductVersion", "(7.0NG.766(Build 221110))"
|
VALUE "ProductVersion", "(7.0NG.766(Build 221123))"
|
||||||
VALUE "FileVersion", "1.0.0.0"
|
VALUE "FileVersion", "1.0.0.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-console
|
package: pandorafms-console
|
||||||
Version: 7.0NG.766-221110
|
Version: 7.0NG.766-221123
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.766-221110"
|
pandora_version="7.0NG.766-221123"
|
||||||
|
|
||||||
package_pear=0
|
package_pear=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `tphase`;
|
ALTER TABLE `tevent_filter` MODIFY COLUMN `server_id` TEXT;
|
||||||
DROP TABLE IF EXISTS `ttransaction`;
|
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
6
pandora_console/extras/mr/60.sql
Normal file
6
pandora_console/extras/mr/60.sql
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `tphase`;
|
||||||
|
DROP TABLE IF EXISTS `ttransaction`;
|
||||||
|
|
||||||
|
COMMIT;
|
@ -19,15 +19,15 @@
|
|||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
if ($config['language'] == 'es') {
|
if ($config['language'] == 'es') {
|
||||||
$url_help = 'https://pandorafms.com/manual/es/documentation/07_technical_annexes/14_php_7';
|
$url_help = 'https://pandorafms.com/manual/es/documentation/07_technical_annexes/18_php_8';
|
||||||
} else {
|
} else {
|
||||||
$url_help = 'https://pandorafms.com/manual/en/documentation/07_technical_annexes/14_php_7';
|
$url_help = 'https://pandorafms.com/manual/en/documentation/07_technical_annexes/18_php_8';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints help dialog information
|
// Prints help dialog information
|
||||||
echo '<div id="login_help_dialog" title="PHP UPDATE REQUIRED" class="invisible">';
|
echo '<div id="login_help_dialog" title="PHP UPDATE REQUIRED" class="invisible">';
|
||||||
echo '<div class="login_help_dialog">';
|
echo '<div class="login_help_dialog">';
|
||||||
echo "<p><b class='font_10'>".__('For a correct operation of PandoraFMS, PHP must be updated to version 7.0 or higher.').'</b></p>';
|
echo "<p><b class='font_10'>".__('For a correct operation of PandoraFMS, PHP must be updated to version 8.0 or higher.').'</b></p>';
|
||||||
echo "<p class='font_10'><b>".__('Otherwise, functionalities will be lost.').'</b></p>';
|
echo "<p class='font_10'><b>".__('Otherwise, functionalities will be lost.').'</b></p>';
|
||||||
echo '<ul>';
|
echo '<ul>';
|
||||||
echo "<li class='pdd_5px'>".__('Report download in PDF format').'</li>';
|
echo "<li class='pdd_5px'>".__('Report download in PDF format').'</li>';
|
@ -309,7 +309,7 @@ $table_ip .= '<div class="label_select_child_right">'.html_print_input(
|
|||||||
'name' => 'fixed_ip',
|
'name' => 'fixed_ip',
|
||||||
'value' => $fixed_ip,
|
'value' => $fixed_ip,
|
||||||
]
|
]
|
||||||
).__('Fix IP address').ui_print_help_tip(__('Avoid automatic IP address update when agent IP changes.'), true).'</div>';
|
).__('Fix IP address').'<p style="margin-right: 15px">'.ui_print_help_tip(__('Avoid automatic IP address update when agent IP changes.'), true).'</p></div>';
|
||||||
|
|
||||||
$table_ip .= '</div></div>';
|
$table_ip .= '</div></div>';
|
||||||
|
|
||||||
|
@ -451,7 +451,7 @@ $simple_alerts = agents_get_alerts_simple(
|
|||||||
if (!$id_agente) {
|
if (!$id_agente) {
|
||||||
$url = 'index.php?sec='.$sec.'&sec2=godmode/alerts/alert_list&tab=list&pure='.$pure.'&offset='.$offset.$form_params;
|
$url = 'index.php?sec='.$sec.'&sec2=godmode/alerts/alert_list&tab=list&pure='.$pure.'&offset='.$offset.$form_params;
|
||||||
} else {
|
} else {
|
||||||
$url = 'index.php?sec='.$sec.'&sec2=godmode/agentes/configurar_agente&pure='.$pure.'&tab=alert&id_agente='.$id_agente.'&offset='.$offset.$form_params;
|
$url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&pure='.$pure.'&tab=alert&id_agente='.$id_agente.'&offset='.$offset.$form_params;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Urls to sort the table.
|
// Urls to sort the table.
|
||||||
|
@ -370,7 +370,7 @@ $table->data[5][1] = html_print_select(
|
|||||||
$table->data[6][0] = '<b>'.__('Free search').'</b>';
|
$table->data[6][0] = '<b>'.__('Free search').'</b>';
|
||||||
$table->data[6][1] = html_print_input_text(
|
$table->data[6][1] = html_print_input_text(
|
||||||
'search',
|
'search',
|
||||||
io_safe_output($search),
|
$search,
|
||||||
'',
|
'',
|
||||||
15,
|
15,
|
||||||
255,
|
255,
|
||||||
|
@ -229,6 +229,11 @@ if ($add_module === true) {
|
|||||||
// Safe output remove all entities.
|
// Safe output remove all entities.
|
||||||
io_safe_output_array($id_modules, '');
|
io_safe_output_array($id_modules, '');
|
||||||
|
|
||||||
|
$id_modules = array_map(function ($mod) {
|
||||||
|
return io_safe_input($mod);
|
||||||
|
},
|
||||||
|
$id_modules
|
||||||
|
);
|
||||||
|
|
||||||
$id_agent_modules = db_get_all_rows_sql(
|
$id_agent_modules = db_get_all_rows_sql(
|
||||||
'SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN ('.implode(',', $id_agents).") AND nombre IN ('".implode("','", $id_modules)."')"
|
'SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN ('.implode(',', $id_agents).") AND nombre IN ('".implode("','", $id_modules)."')"
|
||||||
|
@ -886,6 +886,7 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
|
|||||||
}
|
}
|
||||||
|
|
||||||
function submit_delete_multiple_items() {
|
function submit_delete_multiple_items() {
|
||||||
|
event.preventDefault();
|
||||||
delete_items = [];
|
delete_items = [];
|
||||||
jQuery.each($("input[name='multiple_delete_items']:checked"),
|
jQuery.each($("input[name='multiple_delete_items']:checked"),
|
||||||
function(i, item) {
|
function(i, item) {
|
||||||
@ -893,7 +894,22 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$("input[name='id_item_json']").val(JSON.stringify(delete_items));
|
$.ajax({
|
||||||
$("#form_multiple_delete").submit();
|
type: "POST",
|
||||||
|
url: "ajax.php",
|
||||||
|
data: {
|
||||||
|
page: "godmode/reporting/visual_console_builder",
|
||||||
|
action: "multiple_delete",
|
||||||
|
tab: "list_elements",
|
||||||
|
id_item_json: JSON.stringify(delete_items),
|
||||||
|
id_visual_console: "<?php echo (is_metaconsole() === true) ? $idVisualConsole : $visualConsole['id']; ?>",
|
||||||
|
},
|
||||||
|
dataType: "json",
|
||||||
|
complete: function (data) {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -45,7 +45,7 @@ require_once $config['homedir'].'/vendor/autoload.php';
|
|||||||
$php_version = phpversion();
|
$php_version = phpversion();
|
||||||
$php_version_array = explode('.', $php_version);
|
$php_version_array = explode('.', $php_version);
|
||||||
if ($php_version_array[0] < 7) {
|
if ($php_version_array[0] < 7) {
|
||||||
include_once 'general/php7_message.php';
|
include_once 'general/php_message.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
$tab = get_parameter('tab', 'online');
|
$tab = get_parameter('tab', 'online');
|
||||||
|
@ -130,6 +130,8 @@ if (! check_acl($config['id_user'], 0, 'UM')) {
|
|||||||
|
|
||||||
if (is_ajax()) {
|
if (is_ajax()) {
|
||||||
$delete_profile = (bool) get_parameter('delete_profile');
|
$delete_profile = (bool) get_parameter('delete_profile');
|
||||||
|
$get_user_profile = (bool) get_parameter('get_user_profile');
|
||||||
|
|
||||||
if ($delete_profile) {
|
if ($delete_profile) {
|
||||||
$id2 = (string) get_parameter('id_user');
|
$id2 = (string) get_parameter('id_user');
|
||||||
$id_up = (int) get_parameter('id_user_profile');
|
$id_up = (int) get_parameter('id_user_profile');
|
||||||
@ -211,6 +213,61 @@ if (is_ajax()) {
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($get_user_profile === true) {
|
||||||
|
$profile_id = (int) get_parameter('profile_id');
|
||||||
|
$group_id = (int) get_parameter('group_id', -1);
|
||||||
|
$user_id = (string) get_parameter('user_id', '');
|
||||||
|
$no_hierarchy = (int) get_parameter('no_hierarchy', -1);
|
||||||
|
$assigned_by = (string) get_parameter('assigned_by', '');
|
||||||
|
$id_policy = (int) get_parameter('id_policy', -1);
|
||||||
|
$tags = (string) get_parameter('id_policy', '');
|
||||||
|
|
||||||
|
$filter = [];
|
||||||
|
|
||||||
|
if ($group_id > -1) {
|
||||||
|
$filter['id_perfil'] = $profile_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($group_id > -1) {
|
||||||
|
$filter['id_grupo'] = $group_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user_id !== '') {
|
||||||
|
$filter['id_usuario'] = $user_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($no_hierarchy > -1) {
|
||||||
|
$filter['no_hierarchy'] = $no_hierarchy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($assigned_by !== '') {
|
||||||
|
$filter['assigned_by'] = $assigned_by;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($id_policy > -1) {
|
||||||
|
$filter['id_policy'] = $id_policy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tags !== '') {
|
||||||
|
$filter['tags'] = $tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
$profile = db_get_all_rows_filter(
|
||||||
|
'tusuario_perfil',
|
||||||
|
$filter
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($profile !== false && count($profile) > 0) {
|
||||||
|
echo json_encode($profile);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
echo json_encode('');
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -442,7 +499,7 @@ if ($create_user) {
|
|||||||
$password_new = '';
|
$password_new = '';
|
||||||
$password_confirm = '';
|
$password_confirm = '';
|
||||||
$new_user = true;
|
$new_user = true;
|
||||||
} else if (excludedPassword($password_new) === true) {
|
} else if (enterprise_hook('excludedPassword', [$password_new]) === true) {
|
||||||
$is_err = true;
|
$is_err = true;
|
||||||
ui_print_error_message(__('The password provided is not valid. Please set another one.'));
|
ui_print_error_message(__('The password provided is not valid. Please set another one.'));
|
||||||
$user_info = $values;
|
$user_info = $values;
|
||||||
@ -1717,13 +1774,14 @@ $(document).ready (function () {
|
|||||||
var is_err = '<?php echo $is_err; ?>';
|
var is_err = '<?php echo $is_err; ?>';
|
||||||
var data = [];
|
var data = [];
|
||||||
var aux = 0;
|
var aux = 0;
|
||||||
|
|
||||||
if(json_profile.val() != '') {
|
|
||||||
var data = JSON.parse(json_profile.val());
|
|
||||||
}
|
|
||||||
|
|
||||||
$('input:image[name="add"]').click(function (e) {
|
function addProfile(form) {
|
||||||
e.preventDefault();
|
try {
|
||||||
|
var data = JSON.parse(json_profile.val());
|
||||||
|
} catch {
|
||||||
|
var data = [];
|
||||||
|
}
|
||||||
|
|
||||||
var profile = $('#assign_profile').val();
|
var profile = $('#assign_profile').val();
|
||||||
var profile_text = $('#assign_profile option:selected').text();
|
var profile_text = $('#assign_profile option:selected').text();
|
||||||
var group = $('#assign_group').val();
|
var group = $('#assign_group').val();
|
||||||
@ -1739,14 +1797,26 @@ $(document).ready (function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (profile === '0' || group === '-1') {
|
if (profile === '0' || group === '-1') {
|
||||||
alert('<?php echo __('please select profile and group'); ?>');
|
alert('<?php echo __('Please select profile and group'); ?>');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id_user == '' || is_err == 1) {
|
if (id_user == '' || is_err == 1) {
|
||||||
let new_json = `{"profile":${profile},"group":${group},"tags":[${tags}],"hierarchy":${hierarchy}}`;
|
let new_json = `{"profile":${profile},"group":${group},"tags":[${tags}],"hierarchy":${hierarchy}}`;
|
||||||
data.push(new_json);
|
|
||||||
|
var profile_is_added = Object.entries(data).find(function(_data) {
|
||||||
|
return _data[1] === new_json;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (typeof profile_is_added === 'undefined') {
|
||||||
|
data.push(new_json);
|
||||||
|
} else {
|
||||||
|
alert('<?php echo __('This profile is already defined'); ?>');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
json_profile.val(JSON.stringify(data));
|
json_profile.val(JSON.stringify(data));
|
||||||
|
|
||||||
profile_text = `<a href="index.php?sec2=godmode/users/configure_profile&id=${profile}">${profile_text}</a>`;
|
profile_text = `<a href="index.php?sec2=godmode/users/configure_profile&id=${profile}">${profile_text}</a>`;
|
||||||
group_img = `<img id="img_group_${aux}" src="" data-title="${group_text}" data-use_title_for_force_title="1" class="bot forced_title" alt="${group_text}"/>`;
|
group_img = `<img id="img_group_${aux}" src="" data-title="${group_text}" data-use_title_for_force_title="1" class="bot forced_title" alt="${group_text}"/>`;
|
||||||
group_text = `<a href="index.php?sec=estado&sec2=operation/agentes/estado_agente&refr=60&group_id=${group}">${group_img}${group_text}</a>`;
|
group_text = `<a href="index.php?sec=estado&sec2=operation/agentes/estado_agente&refr=60&group_id=${group}">${group_img}${group_text}</a>`;
|
||||||
@ -1765,8 +1835,39 @@ $(document).ready (function () {
|
|||||||
aux++;
|
aux++;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.form.submit();
|
form.submit();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('input:image[name="add"]').click(function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (id_user.length === 0) {
|
||||||
|
addProfile(this.form);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var params = [];
|
||||||
|
params.push("get_user_profile=1");
|
||||||
|
params.push("profile_id=" + $('#assign_profile').val())
|
||||||
|
params.push("group_id=" + $('#assign_group').val());
|
||||||
|
params.push("user_id=" + id_user);
|
||||||
|
params.push("page=godmode/users/configure_user");
|
||||||
|
jQuery.ajax ({
|
||||||
|
data: params.join("&"),
|
||||||
|
type: 'POST',
|
||||||
|
dataType: "json",
|
||||||
|
async: false,
|
||||||
|
form: this.form,
|
||||||
|
url: action="<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||||
|
success: function (data) {
|
||||||
|
if (data.length > 0) {
|
||||||
|
alert('<?php echo __('This profile is already defined'); ?>');
|
||||||
|
} else {
|
||||||
|
addProfile(this.form);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$('input:image[name="del"]').click(function (e) {
|
$('input:image[name="del"]').click(function (e) {
|
||||||
@ -1841,9 +1942,8 @@ function delete_profile(event, btn) {
|
|||||||
|
|
||||||
var json = json_profile.val();
|
var json = json_profile.val();
|
||||||
var test = JSON.parse(json);
|
var test = JSON.parse(json);
|
||||||
delete test[position-1];
|
test.splice(position-1, 1);
|
||||||
json_profile.val(JSON.stringify(test));
|
json_profile.val(JSON.stringify(test));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_data_section () {
|
function show_data_section () {
|
||||||
|
@ -553,7 +553,7 @@ if ($load_filter_modal) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
echo '<div id="load-filter-select" class="load-filter-modal">';
|
echo '<div id="load-filter-select" class="load-filter-modal">';
|
||||||
echo '<form method="post" id="form_load_filter">';
|
echo '<form method="post" id="form_load_filter" action="index.php?sec=eventos&sec2=operation/events/events&pure=">';
|
||||||
|
|
||||||
$table = new StdClass;
|
$table = new StdClass;
|
||||||
$table->id = 'load_filter_form';
|
$table->id = 'load_filter_form';
|
||||||
@ -1580,7 +1580,7 @@ if ($get_extended_event) {
|
|||||||
$filter = get_parameter('filter', []);
|
$filter = get_parameter('filter', []);
|
||||||
$similar_ids = get_parameter('similar_ids', $event_id);
|
$similar_ids = get_parameter('similar_ids', $event_id);
|
||||||
$group_rep = $filter['group_rep'];
|
$group_rep = $filter['group_rep'];
|
||||||
$event_rep = $group_rep;
|
$event_rep = (empty($group_rep) === true) ? EVENT_GROUP_REP_EVENTS : $group_rep;
|
||||||
$timestamp_first = $event['timestamp_first'];
|
$timestamp_first = $event['timestamp_first'];
|
||||||
$timestamp_last = $event['timestamp_last'];
|
$timestamp_last = $event['timestamp_last'];
|
||||||
$server_id = $event['server_id'];
|
$server_id = $event['server_id'];
|
||||||
|
@ -759,7 +759,7 @@ function update_user_password(string $user, string $password_new)
|
|||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
if (excludedPassword($password_new) === true) {
|
if (enterprise_hook('excludedPassword', [$password_new]) === true) {
|
||||||
$config['auth_error'] = __('The password provided is not valid. Please, set another one.');
|
$config['auth_error'] = __('The password provided is not valid. Please, set another one.');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1594,17 +1594,21 @@ class ConsoleSupervisor
|
|||||||
$this->cleanNotifications('NOTIF.PHP.PHANTOMJS');
|
$this->cleanNotifications('NOTIF.PHP.PHANTOMJS');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($php_version_array[0] < 7) {
|
if ($php_version_array[0] < 8) {
|
||||||
$url = 'https://pandorafms.com/manual/en/documentation/07_technical_annexes/14_php_7';
|
$url = 'https://pandorafms.com/manual/en/documentation/07_technical_annexes/18_php_8';
|
||||||
if ($config['language'] == 'es') {
|
if ($config['language'] == 'es') {
|
||||||
$url = 'https://pandorafms.com/manual/es/documentation/07_technical_annexes/14_php_7';
|
$url = 'https://pandorafms.com/manual/es/documentation/07_technical_annexes/18_php_8';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($config['language'] == 'ja') {
|
||||||
|
$url = 'https://pandorafms.com/manual/ja/documentation/07_technical_annexes/18_php_8';
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->notify(
|
$this->notify(
|
||||||
[
|
[
|
||||||
'type' => 'NOTIF.PHP.VERSION',
|
'type' => 'NOTIF.PHP.VERSION',
|
||||||
'title' => __('PHP UPDATE REQUIRED'),
|
'title' => __('PHP UPDATE REQUIRED'),
|
||||||
'message' => __('For a correct operation of PandoraFMS, PHP must be updated to version 7.0 or higher.').'<br>'.__('Otherwise, functionalities will be lost.').'<br>'."<ol><li class='color_67'>".__('Report download in PDF format').'</li>'."<li class='color_67'>".__('Emails Sending').'</li><li class="color_67">'.__('Metaconsole Collections').'</li><li class="color_67">...</li></ol>',
|
'message' => __('For a correct operation of PandoraFMS, PHP must be updated to version 8.0 or higher.').'<br>'.__('Otherwise, functionalities will be lost.').'<br>'."<ol><li class='color_67'>".__('Report download in PDF format').'</li>'."<li class='color_67'>".__('Emails Sending').'</li><li class="color_67">'.__('Metaconsole Collections').'</li><li class="color_67">...</li></ol>',
|
||||||
'url' => $url,
|
'url' => $url,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
/**
|
/**
|
||||||
* Pandora build version and version
|
* Pandora build version and version
|
||||||
*/
|
*/
|
||||||
$build_version = 'PC221110';
|
$build_version = 'PC221123';
|
||||||
$pandora_version = 'v7.0NG.766';
|
$pandora_version = 'v7.0NG.766';
|
||||||
|
|
||||||
// Do not overwrite default timezone set if defined.
|
// Do not overwrite default timezone set if defined.
|
||||||
|
@ -1046,7 +1046,7 @@ function mysql_db_get_row_filter($table, $filter, $fields=false, $where_join='AN
|
|||||||
*
|
*
|
||||||
* @return mixed Array of the row or false in case of error.
|
* @return mixed Array of the row or false in case of error.
|
||||||
*/
|
*/
|
||||||
function mysql_db_get_all_rows_filter($table, $filter=[], $fields=false, $where_join='AND', $search_history_db=false, $returnSQL=false)
|
function mysql_db_get_all_rows_filter($table, $filter=[], $fields=false, $where_join='AND', $search_history_db=false, $returnSQL=false, $cache=true)
|
||||||
{
|
{
|
||||||
// TODO: Validate and clean fields
|
// TODO: Validate and clean fields
|
||||||
if (empty($fields)) {
|
if (empty($fields)) {
|
||||||
@ -1077,7 +1077,7 @@ function mysql_db_get_all_rows_filter($table, $filter=[], $fields=false, $where_
|
|||||||
if ($returnSQL) {
|
if ($returnSQL) {
|
||||||
return $sql;
|
return $sql;
|
||||||
} else {
|
} else {
|
||||||
return db_get_all_rows_sql($sql, $search_history_db);
|
return db_get_all_rows_sql($sql, $search_history_db, $cache);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4325,7 +4325,7 @@ function agents_get_starmap(int $id_agent, float $width=0, float $height=0)
|
|||||||
{
|
{
|
||||||
ui_require_css_file('heatmap');
|
ui_require_css_file('heatmap');
|
||||||
|
|
||||||
$all_modules = agents_get_modules($id_agent);
|
$all_modules = agents_get_modules($id_agent, 'id_agente_modulo', ['disabled' => 0]);
|
||||||
if (empty($all_modules)) {
|
if (empty($all_modules)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,7 @@ use PandoraFMS\Agent;
|
|||||||
use PandoraFMS\Module;
|
use PandoraFMS\Module;
|
||||||
use PandoraFMS\Enterprise\Cluster;
|
use PandoraFMS\Enterprise\Cluster;
|
||||||
use PandoraFMS\Enterprise\Metaconsole\Node;
|
use PandoraFMS\Enterprise\Metaconsole\Node;
|
||||||
|
use PandoraFMS\Event;
|
||||||
use PandoraFMS\SpecialDay;
|
use PandoraFMS\SpecialDay;
|
||||||
|
|
||||||
|
|
||||||
@ -11228,366 +11229,6 @@ function api_set_gis_agent($id_agent, $trash1, $other, $return_type, $user_in_db
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db)
|
|
||||||
{
|
|
||||||
global $config;
|
|
||||||
|
|
||||||
$table_events = 'tevento';
|
|
||||||
|
|
||||||
// By default.
|
|
||||||
$status = 3;
|
|
||||||
$search = '';
|
|
||||||
$event_type = '';
|
|
||||||
$severity = -1;
|
|
||||||
$id_agent = -1;
|
|
||||||
$id_agentmodule = -1;
|
|
||||||
$id_alert_am = -1;
|
|
||||||
$id_event = -1;
|
|
||||||
$id_user_ack = 0;
|
|
||||||
$event_view_hr = 0;
|
|
||||||
$tag = '';
|
|
||||||
$group_rep = EVENT_GROUP_REP_ALL;
|
|
||||||
$utimestamp_upper = 0;
|
|
||||||
$utimestamp_bottom = 0;
|
|
||||||
$id_alert_template = -1;
|
|
||||||
|
|
||||||
$use_agent_name = ($other['data'][16] === '1') ? true : false;
|
|
||||||
|
|
||||||
$filter = otherParameter2Filter($other, true, $use_agent_name);
|
|
||||||
|
|
||||||
if (isset($filter['criticity'])) {
|
|
||||||
$severity = $filter['criticity'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['id_agente'])) {
|
|
||||||
$id_agent = $filter['id_agente'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['id_agentmodule'])) {
|
|
||||||
$id_agentmodule = $filter['id_agentmodule'][0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['id_alert_am'])) {
|
|
||||||
$id_alert_am = $filter['id_alert_am'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['id_usuario'])) {
|
|
||||||
$id_user_ack = $filter['id_usuario'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['estado'])) {
|
|
||||||
$status = $filter['estado'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['evento'])) {
|
|
||||||
$search = $filter['evento'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['id_alert_template'])) {
|
|
||||||
$id_alert_template = $filter['id_alert_template'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$id_group = (int) $filter['id_group'];
|
|
||||||
|
|
||||||
$user_groups = users_get_groups($user_in_db, 'ER');
|
|
||||||
$user_id_groups = [];
|
|
||||||
if (!empty($user_groups)) {
|
|
||||||
$user_id_groups = array_keys($user_groups);
|
|
||||||
}
|
|
||||||
|
|
||||||
$is_admin = (bool) db_get_value(
|
|
||||||
'is_admin',
|
|
||||||
'tusuario',
|
|
||||||
'id_user',
|
|
||||||
$user_in_db
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isset($filter['id_group'])) {
|
|
||||||
// The admin can see all groups
|
|
||||||
if ($is_admin) {
|
|
||||||
if (($id_group !== -1) && ($id_group !== 0)) {
|
|
||||||
$id_groups = [$id_group];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (empty($id_group)) {
|
|
||||||
$id_groups = $user_id_groups;
|
|
||||||
} else {
|
|
||||||
if (in_array($id_group, $user_id_groups)) {
|
|
||||||
$id_groups = [$id_group];
|
|
||||||
} else {
|
|
||||||
$id_groups = [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!$is_admin) {
|
|
||||||
$id_groups = $user_id_groups;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['tag'])) {
|
|
||||||
$tag = $filter['tag'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['event_type'])) {
|
|
||||||
$event_type = $filter['event_type'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($filter['utimestamp']) {
|
|
||||||
if (isset($filter['utimestamp']['>'])) {
|
|
||||||
$utimestamp_upper = $filter['utimestamp']['>'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($filter['utimestamp']['<'])) {
|
|
||||||
$utimestamp_bottom = $filter['utimestamp']['<'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO MOVE THIS CODE AND THE CODE IN pandora_console/operation/events/events_list.php
|
|
||||||
// to a function.
|
|
||||||
$sql_post = '';
|
|
||||||
|
|
||||||
if (!empty($id_groups)) {
|
|
||||||
$sql_post = ' AND id_grupo IN ('.implode(',', $id_groups).')';
|
|
||||||
} else {
|
|
||||||
// The admin can see all groups
|
|
||||||
if (!$is_admin) {
|
|
||||||
$sql_post = ' AND 1=0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip system messages if user is not PM
|
|
||||||
if (!check_acl($user_in_db, 0, 'PM')) {
|
|
||||||
$sql_post .= ' AND id_grupo != 0';
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($status) {
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
$sql_post .= ' AND estado = '.$status;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
$sql_post .= ' AND (estado = 0 OR estado = 2)';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($search != '') {
|
|
||||||
$sql_post .= " AND evento LIKE '%".io_safe_input($search)."%'";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($event_type != '') {
|
|
||||||
// If normal, warning, could be several (going_up_warning, going_down_warning... too complex
|
|
||||||
// for the user so for him is presented only "warning, critical and normal"
|
|
||||||
if ($event_type == 'warning' || $event_type == 'critical' || $event_type == 'normal') {
|
|
||||||
$sql_post .= " AND event_type LIKE '%$event_type%' ";
|
|
||||||
} else if ($event_type == 'not_normal') {
|
|
||||||
$sql_post .= " AND ( event_type LIKE '%warning%'
|
|
||||||
OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%' ) ";
|
|
||||||
} else {
|
|
||||||
$sql_post .= " AND event_type = '".$event_type."'";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($severity != -1) {
|
|
||||||
$sql_post .= ' AND criticity = '.$severity;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($id_agent != -1) {
|
|
||||||
$sql_post .= ' AND id_agente = '.$id_agent;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($id_agentmodule != -1) {
|
|
||||||
$sql_post .= ' AND id_agentmodule = '.$id_agentmodule;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($id_event != -1) {
|
|
||||||
$sql_post .= ' AND id_evento = '.$id_event;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($id_user_ack != '0') {
|
|
||||||
$sql_post .= " AND id_usuario = '".$id_user_ack."'";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($utimestamp_upper != 0) {
|
|
||||||
$sql_post .= ' AND utimestamp >= '.$utimestamp_upper;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($utimestamp_bottom != 0) {
|
|
||||||
$sql_post .= ' AND utimestamp <= '.$utimestamp_bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($event_view_hr > 0) {
|
|
||||||
// Put hours in seconds
|
|
||||||
$unixtime = (get_system_time() - ($event_view_hr * SECONDS_1HOUR));
|
|
||||||
$sql_post .= ' AND (utimestamp > '.$unixtime.' OR estado = 2)';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search by tag
|
|
||||||
if ($tag != '') {
|
|
||||||
$sql_post .= " AND tags LIKE '".io_safe_input($tag)."'";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inject the raw sql
|
|
||||||
if (isset($filter['sql'])) {
|
|
||||||
$sql_post .= ' AND ('.$filter['sql'].') ';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inject agent ID filter (it is set as the first numeric key in filter array).
|
|
||||||
if (isset($filter[0]) === true) {
|
|
||||||
$sql_post .= ' AND '.$filter[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($id_alert_template !== -1) {
|
|
||||||
$sql_post .= ' AND talert_template_modules.id_alert_template = '.$id_alert_template;
|
|
||||||
}
|
|
||||||
|
|
||||||
$alert_join = '';
|
|
||||||
|
|
||||||
if ($id_alert_template !== -1) {
|
|
||||||
$alert_join = ' INNER JOIN talert_template_modules ON '.$table_events.'.id_alert_am=talert_template_modules.id';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($group_rep == EVENT_GROUP_REP_ALL) {
|
|
||||||
if ($filter['total']) {
|
|
||||||
$sql = 'SELECT COUNT(*)
|
|
||||||
FROM '.$table_events.'
|
|
||||||
WHERE 1=1 '.$sql_post;
|
|
||||||
} else if ($filter['more_criticity']) {
|
|
||||||
$sql = 'SELECT criticity
|
|
||||||
FROM '.$table_events.'
|
|
||||||
WHERE 1=1 '.$sql_post.'
|
|
||||||
ORDER BY criticity DESC
|
|
||||||
LIMIT 1';
|
|
||||||
} else {
|
|
||||||
if (is_metaconsole() === true) {
|
|
||||||
$sql = 'SELECT *,
|
|
||||||
(SELECT t2.nombre
|
|
||||||
FROM tgrupo t2
|
|
||||||
WHERE t2.id_grupo = '.$table_events.'.id_grupo) AS group_name,
|
|
||||||
(SELECT t2.icon
|
|
||||||
FROM tgrupo t2
|
|
||||||
WHERE t2.id_grupo = '.$table_events.'.id_grupo) AS group_icon
|
|
||||||
FROM '.$table_events.$alert_join.'
|
|
||||||
WHERE 1=1 '.$sql_post.'
|
|
||||||
ORDER BY utimestamp DESC';
|
|
||||||
} else {
|
|
||||||
$sql = 'SELECT *,
|
|
||||||
(SELECT t1.alias
|
|
||||||
FROM tagente t1
|
|
||||||
WHERE t1.id_agente = tevento.id_agente) AS agent_name,
|
|
||||||
(SELECT t2.nombre
|
|
||||||
FROM tgrupo t2
|
|
||||||
WHERE t2.id_grupo = tevento.id_grupo) AS group_name,
|
|
||||||
(SELECT t2.icon
|
|
||||||
FROM tgrupo t2
|
|
||||||
WHERE t2.id_grupo = tevento.id_grupo) AS group_icon,
|
|
||||||
(SELECT tmodule.name
|
|
||||||
FROM tmodule
|
|
||||||
WHERE id_module IN (
|
|
||||||
SELECT tagente_modulo.id_modulo
|
|
||||||
FROM tagente_modulo
|
|
||||||
WHERE tagente_modulo.id_agente_modulo=tevento.id_agentmodule)) AS module_name
|
|
||||||
FROM '.$table_events.$alert_join.'
|
|
||||||
WHERE 1=1 '.$sql_post.'
|
|
||||||
ORDER BY utimestamp DESC';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
db_process_sql('SET group_concat_max_len = 9999999');
|
|
||||||
|
|
||||||
$sql = "SELECT *, MAX(id_evento) AS id_evento,
|
|
||||||
GROUP_CONCAT(DISTINCT user_comment SEPARATOR '') AS user_comment,
|
|
||||||
MIN(estado) AS min_estado, MAX(estado) AS max_estado,
|
|
||||||
COUNT(*) AS event_rep, MAX(utimestamp) AS timestamp_last
|
|
||||||
FROM ".$table_events.'
|
|
||||||
WHERE 1=1 '.$sql_post.'
|
|
||||||
GROUP BY evento, id_agentmodule
|
|
||||||
ORDER BY timestamp_last DESC';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($other['type'] == 'string') {
|
|
||||||
if ($other['data'] != '') {
|
|
||||||
returnError('Parameter error.');
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
// Default values
|
|
||||||
$separator = ';';
|
|
||||||
}
|
|
||||||
} else if ($other['type'] == 'array') {
|
|
||||||
$separator = $other['data'][0];
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = db_get_all_rows_sql($sql);
|
|
||||||
|
|
||||||
if (($result !== false)
|
|
||||||
&& (!$filter['total'])
|
|
||||||
&& (!$filter['more_criticity'])
|
|
||||||
) {
|
|
||||||
$urlImage = ui_get_full_url(false);
|
|
||||||
|
|
||||||
// Add the description and image
|
|
||||||
foreach ($result as $key => $row) {
|
|
||||||
if (defined('METACONSOLE')) {
|
|
||||||
$row['agent_name'] = agents_meta_get_name(
|
|
||||||
$row['id_agente'],
|
|
||||||
'none',
|
|
||||||
$row['server_id']
|
|
||||||
);
|
|
||||||
|
|
||||||
$row['module_name'] = meta_modules_get_name(
|
|
||||||
$row['id_agentmodule'],
|
|
||||||
$row['server_id']
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// FOR THE TEST THE API IN THE ANDROID
|
|
||||||
// $row['evento'] = $row['id_evento'];
|
|
||||||
$row['description_event'] = events_print_type_description($row['event_type'], true);
|
|
||||||
$row['img_description'] = events_print_type_img($row['event_type'], true, true);
|
|
||||||
$row['criticity_name'] = get_priority_name($row['criticity']);
|
|
||||||
|
|
||||||
switch ($row['criticity']) {
|
|
||||||
default:
|
|
||||||
case EVENT_CRIT_MAINTENANCE:
|
|
||||||
$img_sev = $urlImage.'/images/status_sets/default/severity_maintenance.png';
|
|
||||||
break;
|
|
||||||
case EVENT_CRIT_INFORMATIONAL:
|
|
||||||
$img_sev = $urlImage.'/images/status_sets/default/severity_informational.png';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_CRIT_NORMAL:
|
|
||||||
$img_sev = $urlImage.'/images/status_sets/default/severity_normal.png';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_CRIT_WARNING:
|
|
||||||
$img_sev = $urlImage.'/images/status_sets/default/severity_warning.png';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EVENT_CRIT_CRITICAL:
|
|
||||||
$img_sev = $urlImage.'/images/status_sets/default/severity_critical.png';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$row['img_criticy'] = $img_sev;
|
|
||||||
|
|
||||||
$result[$key] = $row;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$data['type'] = 'array';
|
|
||||||
$data['data'] = $result;
|
|
||||||
|
|
||||||
returnData($returnType, $data, $separator);
|
|
||||||
if (empty($result)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update an event
|
* Update an event
|
||||||
*
|
*
|
||||||
@ -11657,71 +11298,162 @@ function api_set_event($id_event, $unused1, $params, $unused2, $unused3)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Get events.
|
||||||
*
|
*
|
||||||
* @param $trash1
|
* @param $trash1
|
||||||
* @param $trah2
|
* @param $trah2
|
||||||
* @param $other
|
* @param $other
|
||||||
* @param $returnType
|
* @param $returnType
|
||||||
* @param $user_in_db
|
|
||||||
*/
|
*/
|
||||||
function api_get_events($node_id, $trash2, $other, $returnType, $user_in_db=null)
|
function api_get_events($node_id, $trash2, $other, $returnType)
|
||||||
{
|
{
|
||||||
if ($user_in_db !== null) {
|
$separator = (isset($other['data'][0]) === true && empty($other['data'][0]) === false) ? $other['data'][0] : ';';
|
||||||
$correct = get_events_with_user(
|
|
||||||
$trash1,
|
|
||||||
$trash2,
|
|
||||||
$other,
|
|
||||||
$returnType,
|
|
||||||
$user_in_db
|
|
||||||
);
|
|
||||||
|
|
||||||
$last_error = error_get_last();
|
if (is_metaconsole() === true) {
|
||||||
if (!$correct && !empty($last_error)) {
|
if (empty($node_id) === true && $node_id != 0) {
|
||||||
$errors = [
|
$node_id = array_keys(metaconsole_get_names(['disabled' => 0]));
|
||||||
E_ERROR,
|
$node_id[] = 0;
|
||||||
E_WARNING,
|
|
||||||
E_USER_ERROR,
|
|
||||||
E_USER_WARNING,
|
|
||||||
];
|
|
||||||
if (in_array($last_error['type'], $errors)) {
|
|
||||||
returnError('ERROR_API_PANDORAFMS', $returnType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($other['type'] == 'string') {
|
|
||||||
if ($other['data'] != '') {
|
|
||||||
returnError('Parameter error.');
|
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
// Default values
|
$node_id = [(int) $node_id];
|
||||||
$separator = ';';
|
|
||||||
}
|
}
|
||||||
} else if ($other['type'] == 'array') {
|
} else {
|
||||||
$separator = $other['data'][0];
|
$node_id = 0;
|
||||||
|
|
||||||
// By default it uses agent alias.
|
|
||||||
$use_agent_name = ($other['data'][16] === '1') ? true : false;
|
|
||||||
|
|
||||||
$filterString = otherParameter2Filter($other, false, $use_agent_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$dataRows = db_get_all_rows_filter('tevento', $filterString);
|
$filters = [
|
||||||
|
'group_rep' => EVENT_GROUP_REP_ALL,
|
||||||
|
'severity' => (isset($other['data'][1]) === true) ? $other['data'][1] : null,
|
||||||
|
'agent_alias' => (isset($other['data'][2]) === true) ? $other['data'][2] : null,
|
||||||
|
'module_search' => (isset($other['data'][3]) === true) ? $other['data'][3] : null,
|
||||||
|
'filter_only_alert' => (isset($other['data'][4]) === true) ? $other['data'][4] : null,
|
||||||
|
'id_user_ack' => (isset($other['data'][5]) === true) ? $other['data'][5] : null,
|
||||||
|
'date_from' => (isset($other['data'][6]) === true && empty($other['data'][6]) === false) ? date('y-m-d', $other['data'][6]) : null,
|
||||||
|
'date_to' => (isset($other['data'][7]) === true && empty($other['data'][7]) === false) ? date('y-m-d', $other['data'][7]) : null,
|
||||||
|
'time_from' => (isset($other['data'][6]) === true && empty($other['data'][6]) === false) ? date('h:i:s', $other['data'][6]) : null,
|
||||||
|
'time_to' => (isset($other['data'][7]) === true && empty($other['data'][7]) === false) ? date('h:i:s', $other['data'][7]) : null,
|
||||||
|
'status' => (isset($other['data'][8]) === true) ? $other['data'][8] : null,
|
||||||
|
'search' => (isset($other['data'][9]) === true) ? $other['data'][9] : null,
|
||||||
|
'id_group_filter' => (isset($other['data'][13]) === true) ? $other['data'][13] : null,
|
||||||
|
'tag_with' => (isset($other['data'][14]) === true) ? base64_encode(io_safe_output($other['data'][14])) : null,
|
||||||
|
'event_type' => (isset($other['data'][15]) === true) ? $other['data'][15] : null,
|
||||||
|
'id_server' => $node_id,
|
||||||
|
];
|
||||||
|
|
||||||
$last_error = error_get_last();
|
$limit = null;
|
||||||
if (empty($dataRows)) {
|
if (isset($other['data'][10]) === true) {
|
||||||
if (!empty($last_error)) {
|
if (empty($other['data'][10]) === true) {
|
||||||
returnError('ERROR_API_PANDORAFMS', $returnType);
|
$limit = 0;
|
||||||
|
} else {
|
||||||
return;
|
$limit = $other['data'][10];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data['type'] = 'array';
|
$offset = null;
|
||||||
$data['data'] = $dataRows;
|
if (isset($other['data'][11]) === true) {
|
||||||
|
if (empty($other['data'][11]) === true) {
|
||||||
|
$offset = 0;
|
||||||
|
} else {
|
||||||
|
$offset = $other['data'][11];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isset($other['data'][10]) === true) {
|
||||||
|
$offset = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$fields = ['te.*'];
|
||||||
|
$order_direction = 'desc';
|
||||||
|
$order_field = 'te.utimestamp';
|
||||||
|
$filter_total = false;
|
||||||
|
if (isset($other['data'][12]) === true
|
||||||
|
&& empty($other['data'][12]) === false
|
||||||
|
) {
|
||||||
|
$filter_total = true;
|
||||||
|
if ($other['data'][12] === 'total') {
|
||||||
|
$fields = ['count'];
|
||||||
|
$limit = null;
|
||||||
|
$offset = null;
|
||||||
|
} else if ($other['data'][12] === 'more_criticity') {
|
||||||
|
$fields = ['te.criticity'];
|
||||||
|
$order_direction = 'desc';
|
||||||
|
$order_field = 'te.criticity';
|
||||||
|
$limit = 1;
|
||||||
|
$offset = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$events = Event::search(
|
||||||
|
$fields,
|
||||||
|
$filters,
|
||||||
|
$offset,
|
||||||
|
$limit,
|
||||||
|
$order_direction,
|
||||||
|
$order_field
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = $events;
|
||||||
|
if (is_metaconsole() === true && empty($limit) === false) {
|
||||||
|
$result = $events['data'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($result) === true && $filter_total === false) {
|
||||||
|
$urlImage = ui_get_full_url(false);
|
||||||
|
|
||||||
|
// Add the description and image.
|
||||||
|
foreach ($result as $key => $row) {
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
if (empty($row['id_agente']) === false) {
|
||||||
|
$row['agent_name'] = agents_meta_get_name(
|
||||||
|
$row['id_agente'],
|
||||||
|
'none',
|
||||||
|
$row['server_id']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($row['id_agentmodule']) === false) {
|
||||||
|
$row['module_name'] = meta_modules_get_name(
|
||||||
|
$row['id_agentmodule'],
|
||||||
|
$row['server_id']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FOR THE TEST THE API IN THE ANDROID.
|
||||||
|
$row['description_event'] = events_print_type_description($row['event_type'], true);
|
||||||
|
$row['img_description'] = events_print_type_img($row['event_type'], true, true);
|
||||||
|
$row['criticity_name'] = get_priority_name($row['criticity']);
|
||||||
|
|
||||||
|
switch ($row['criticity']) {
|
||||||
|
default:
|
||||||
|
case EVENT_CRIT_MAINTENANCE:
|
||||||
|
$img_sev = $urlImage.'/images/status_sets/default/severity_maintenance.png';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENT_CRIT_INFORMATIONAL:
|
||||||
|
$img_sev = $urlImage.'/images/status_sets/default/severity_informational.png';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENT_CRIT_NORMAL:
|
||||||
|
$img_sev = $urlImage.'/images/status_sets/default/severity_normal.png';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENT_CRIT_WARNING:
|
||||||
|
$img_sev = $urlImage.'/images/status_sets/default/severity_warning.png';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENT_CRIT_CRITICAL:
|
||||||
|
$img_sev = $urlImage.'/images/status_sets/default/severity_critical.png';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$row['img_criticy'] = $img_sev;
|
||||||
|
|
||||||
|
$result[$key] = $row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['type'] = $returnType;
|
||||||
|
$data['data'] = $result;
|
||||||
returnData($returnType, $data, $separator);
|
returnData($returnType, $data, $separator);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -89,23 +89,34 @@ function cron_next_execution($cron, $module_interval, $module_id)
|
|||||||
'id_agente_modulo',
|
'id_agente_modulo',
|
||||||
$module_id
|
$module_id
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$cron_elems = explode(' ', $cron);
|
||||||
|
|
||||||
|
if (isset($cron_elems[4]) === true) {
|
||||||
|
$cron_elems[4] = '*';
|
||||||
|
}
|
||||||
|
|
||||||
|
$cron = implode(' ', $cron_elems);
|
||||||
|
|
||||||
$cur_time = ($last_execution !== false) ? $last_execution : time();
|
$cur_time = ($last_execution !== false) ? $last_execution : time();
|
||||||
$nex_time = cron_next_execution_date($cron, $cur_time, $module_interval);
|
$nex_time = cron_next_execution_date($cron, $cur_time, $module_interval);
|
||||||
$nex_wday = (int) date('w', $nex_time);
|
$nex_wday = (int) date('w', $nex_time);
|
||||||
|
|
||||||
// Check the wday values to avoid infinite loop.
|
// Check the wday values to avoid infinite loop.
|
||||||
$wday_int = cron_get_interval($wday);
|
$wday_int = cron_get_interval($wday);
|
||||||
if ($wday_int['down'] !== '*' && ($wday_int['down'] > 6 || ($wday_int['up'] !== false && $wday_int['up'] > 6))) {
|
if ($wday_int['down'] !== '*' && ($wday_int['down'] > 6 || ($wday_int['up'] !== false && $wday_int['up'] > 6))) {
|
||||||
$wday = '*';
|
$wday = '*';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check day of the way.
|
// Check week day.
|
||||||
while (!cron_check_interval($nex_wday, $wday)) {
|
while (!cron_check_interval($nex_wday, $wday)) {
|
||||||
// If it does not acomplish the day of the week, go to the next day.
|
// If it does not acomplish the day of the week, go to the next day.
|
||||||
$nex_time += SECONDS_1DAY;
|
$nex_time += SECONDS_1DAY;
|
||||||
$nex_time = cron_next_execution_date($cron, $nex_time, 0);
|
|
||||||
$nex_wday = (int) date('w', $nex_time);
|
$nex_wday = (int) date('w', $nex_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$nex_time = cron_next_execution_date($cron, $nex_time, 0);
|
||||||
|
|
||||||
return ($nex_time - $cur_time);
|
return ($nex_time - $cur_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -795,6 +795,10 @@ function db_uncompress_module_data(
|
|||||||
$flag_async = true;
|
$flag_async = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strstr($module_type_str, 'async_string') !== false) {
|
||||||
|
$flag_async = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (strstr($module_type_str, 'async_proc') !== false) {
|
if (strstr($module_type_str, 'async_proc') !== false) {
|
||||||
$flag_async = true;
|
$flag_async = true;
|
||||||
}
|
}
|
||||||
|
@ -800,7 +800,7 @@ function events_get_all(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($filter['severity']) === true && $filter['severity'] > 0) {
|
if (isset($filter['severity']) === true && $filter['severity'] !== '' && (int) $filter['severity'] > -1) {
|
||||||
if (is_array($filter['severity']) === true) {
|
if (is_array($filter['severity']) === true) {
|
||||||
if (in_array(-1, $filter['severity']) === false) {
|
if (in_array(-1, $filter['severity']) === false) {
|
||||||
$not_normal = array_search(EVENT_CRIT_NOT_NORMAL, $filter['severity']);
|
$not_normal = array_search(EVENT_CRIT_NOT_NORMAL, $filter['severity']);
|
||||||
@ -1033,14 +1033,13 @@ function events_get_all(
|
|||||||
// Prepare agent join sql filters.
|
// Prepare agent join sql filters.
|
||||||
$table = 'tevento';
|
$table = 'tevento';
|
||||||
$tevento = 'tevento te';
|
$tevento = 'tevento te';
|
||||||
$agent_join_filters = [];
|
|
||||||
$tagente_table = 'tagente';
|
$tagente_table = 'tagente';
|
||||||
$tagente_field = 'id_agente';
|
$tagente_field = 'id_agente';
|
||||||
$conditionMetaconsole = '';
|
$conditionMetaconsole = '';
|
||||||
|
|
||||||
// Agent alias.
|
// Agent alias.
|
||||||
if (empty($filter['agent_alias']) === false) {
|
if (empty($filter['agent_alias']) === false) {
|
||||||
$agent_join_filters[] = sprintf(
|
$sql_filters[] = sprintf(
|
||||||
' AND ta.alias = "%s" ',
|
' AND ta.alias = "%s" ',
|
||||||
$filter['agent_alias']
|
$filter['agent_alias']
|
||||||
);
|
);
|
||||||
@ -1124,27 +1123,27 @@ function events_get_all(
|
|||||||
$sql_filters[] = sprintf(
|
$sql_filters[] = sprintf(
|
||||||
' AND JSON_VALID(custom_data) = 1
|
' AND JSON_VALID(custom_data) = 1
|
||||||
AND (JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) ',
|
AND (JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) ',
|
||||||
io_safe_output($filter['custom_data'])
|
io_safe_output_html($filter['custom_data'])
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$sql_filters[] = sprintf(
|
$sql_filters[] = sprintf(
|
||||||
' AND JSON_VALID(custom_data) = 1
|
' AND JSON_VALID(custom_data) = 1
|
||||||
AND (JSON_SEARCH(JSON_KEYS(custom_data), "all", lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) IS NOT NULL) ',
|
AND (JSON_SEARCH(JSON_KEYS(custom_data), "all", lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) IS NOT NULL) ',
|
||||||
io_safe_output($filter['custom_data'])
|
io_safe_output_html($filter['custom_data'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($filter['custom_data_filter_type'] === '1') {
|
if ($filter['custom_data_filter_type'] === '1') {
|
||||||
$sql_filters[] = sprintf(
|
$sql_filters[] = sprintf(
|
||||||
' AND JSON_VALID(custom_data) = 1 AND JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") ',
|
' AND JSON_VALID(custom_data) = 1
|
||||||
$filter['custom_data'],
|
AND cast(JSON_EXTRACT(custom_data, "$.*") as CHAR) LIKE lower("%%%s%%") ',
|
||||||
$filter['custom_data']
|
io_safe_output($filter['custom_data'])
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$sql_filters[] = sprintf(
|
$sql_filters[] = sprintf(
|
||||||
' AND JSON_VALID(custom_data) = 1 AND JSON_KEYS(custom_data) REGEXP "%s" ',
|
' AND JSON_VALID(custom_data) = 1
|
||||||
$filter['custom_data'],
|
AND cast(JSON_KEYS(custom_data) as CHAR) REGEXP "%s" ',
|
||||||
$filter['custom_data']
|
io_safe_output($filter['custom_data'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1311,7 +1310,7 @@ function events_get_all(
|
|||||||
'te.',
|
'te.',
|
||||||
// Alt table tag for id_grupo.
|
// Alt table tag for id_grupo.
|
||||||
$user_admin_group_all,
|
$user_admin_group_all,
|
||||||
(bool) $filter['search_secondary_groups']
|
(bool) (isset($filter['search_secondary_groups']) === true) ? $filter['search_secondary_groups'] : false
|
||||||
);
|
);
|
||||||
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
|
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
|
||||||
} else if (check_acl($config['id_user'], 0, 'EW')) {
|
} else if (check_acl($config['id_user'], 0, 'EW')) {
|
||||||
@ -1338,7 +1337,7 @@ function events_get_all(
|
|||||||
'te.',
|
'te.',
|
||||||
// Alt table tag for id_grupo.
|
// Alt table tag for id_grupo.
|
||||||
$user_admin_group_all,
|
$user_admin_group_all,
|
||||||
(bool) $filter['search_secondary_groups']
|
(bool) (isset($filter['search_secondary_groups']) === true) ? $filter['search_secondary_groups'] : false
|
||||||
);
|
);
|
||||||
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
|
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
|
||||||
} else if (check_acl($config['id_user'], 0, 'EM')) {
|
} else if (check_acl($config['id_user'], 0, 'EM')) {
|
||||||
@ -1365,7 +1364,7 @@ function events_get_all(
|
|||||||
'te.',
|
'te.',
|
||||||
// Alt table tag for id_grupo.
|
// Alt table tag for id_grupo.
|
||||||
$user_admin_group_all,
|
$user_admin_group_all,
|
||||||
(bool) $filter['search_secondary_groups']
|
(bool) (isset($filter['search_secondary_groups']) === true) ? $filter['search_secondary_groups'] : false
|
||||||
);
|
);
|
||||||
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
|
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
|
||||||
}
|
}
|
||||||
@ -1561,7 +1560,6 @@ function events_get_all(
|
|||||||
%s JOIN %s ta
|
%s JOIN %s ta
|
||||||
ON ta.%s = te.id_agente
|
ON ta.%s = te.id_agente
|
||||||
%s
|
%s
|
||||||
%s
|
|
||||||
%s JOIN tgrupo tg
|
%s JOIN tgrupo tg
|
||||||
ON %s
|
ON %s
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
@ -1577,7 +1575,6 @@ function events_get_all(
|
|||||||
%s JOIN %s ta
|
%s JOIN %s ta
|
||||||
ON ta.%s = te.id_agente
|
ON ta.%s = te.id_agente
|
||||||
%s
|
%s
|
||||||
%s
|
|
||||||
%s JOIN tgrupo tg
|
%s JOIN tgrupo tg
|
||||||
ON %s
|
ON %s
|
||||||
%s
|
%s
|
||||||
@ -1593,7 +1590,6 @@ function events_get_all(
|
|||||||
$tagente_table,
|
$tagente_table,
|
||||||
$tagente_field,
|
$tagente_field,
|
||||||
$conditionMetaconsole,
|
$conditionMetaconsole,
|
||||||
join(' ', $agent_join_filters),
|
|
||||||
$tgrupo_join,
|
$tgrupo_join,
|
||||||
join(' ', $tgrupo_join_filters),
|
join(' ', $tgrupo_join_filters),
|
||||||
join(' ', $sql_filters),
|
join(' ', $sql_filters),
|
||||||
@ -1607,7 +1603,6 @@ function events_get_all(
|
|||||||
$tagente_table,
|
$tagente_table,
|
||||||
$tagente_field,
|
$tagente_field,
|
||||||
$conditionMetaconsole,
|
$conditionMetaconsole,
|
||||||
join(' ', $agent_join_filters),
|
|
||||||
$tgrupo_join,
|
$tgrupo_join,
|
||||||
join(' ', $tgrupo_join_filters),
|
join(' ', $tgrupo_join_filters),
|
||||||
join(' ', $sql_filters),
|
join(' ', $sql_filters),
|
||||||
@ -1623,7 +1618,6 @@ function events_get_all(
|
|||||||
%s JOIN %s ta
|
%s JOIN %s ta
|
||||||
ON ta.%s = te.id_agente
|
ON ta.%s = te.id_agente
|
||||||
%s
|
%s
|
||||||
%s
|
|
||||||
%s JOIN tgrupo tg
|
%s JOIN tgrupo tg
|
||||||
ON %s
|
ON %s
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
@ -1642,7 +1636,6 @@ function events_get_all(
|
|||||||
$tagente_table,
|
$tagente_table,
|
||||||
$tagente_field,
|
$tagente_field,
|
||||||
$conditionMetaconsole,
|
$conditionMetaconsole,
|
||||||
join(' ', $agent_join_filters),
|
|
||||||
$tgrupo_join,
|
$tgrupo_join,
|
||||||
join(' ', $tgrupo_join_filters),
|
join(' ', $tgrupo_join_filters),
|
||||||
join(' ', $sql_filters),
|
join(' ', $sql_filters),
|
||||||
@ -1869,7 +1862,7 @@ function events_get_all(
|
|||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
} else {
|
} else {
|
||||||
return $data;
|
return ['count' => count($data)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4700,22 +4693,30 @@ function events_page_general($event)
|
|||||||
$data = [];
|
$data = [];
|
||||||
$data[0] = __('Timestamp');
|
$data[0] = __('Timestamp');
|
||||||
|
|
||||||
if ($group_rep == 1 && $event['event_rep'] > 1) {
|
if ($event['event_rep'] > 1) {
|
||||||
$data[1] = __('First event').': '.date($config['date_format'], $event['timestamp_first']).'<br>'.__('Last event').': '.date($config['date_format'], $event['timestamp_last']);
|
$data[1] = __('First event').': ';
|
||||||
|
$data[1] .= date($config['date_format'], $event['timestamp_first']);
|
||||||
|
$data[1] .= '<br>';
|
||||||
|
$data[1] .= __('Last event').': ';
|
||||||
|
$data[1] .= date($config['date_format'], $event['timestamp_last']);
|
||||||
} else {
|
} else {
|
||||||
$data[1] = date($config['date_format'], $event['utimestamp']);
|
$data[1] = date($config['date_format'], $event['utimestamp']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$table_general->data[] = $data;
|
$table_general->data[] = $data;
|
||||||
|
|
||||||
// $event['owner_user'] = $event['id_usuario'];
|
|
||||||
$data = [];
|
$data = [];
|
||||||
$data[0] = __('Owner');
|
$data[0] = __('Owner');
|
||||||
if (empty($event['owner_user'])) {
|
if (empty($event['owner_user']) === true) {
|
||||||
$data[1] = '<i>'.__('N/A').'</i>';
|
$data[1] = '<i>'.__('N/A').'</i>';
|
||||||
} else {
|
} else {
|
||||||
$user_owner = db_get_value('fullname', 'tusuario', 'id_user', $event['owner_user']);
|
$user_owner = db_get_value(
|
||||||
if (empty($user_owner)) {
|
'fullname',
|
||||||
|
'tusuario',
|
||||||
|
'id_user',
|
||||||
|
$event['owner_user']
|
||||||
|
);
|
||||||
|
if (empty($user_owner) === true) {
|
||||||
$user_owner = $event['owner_user'];
|
$user_owner = $event['owner_user'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1416,7 +1416,7 @@ function graphic_combined_module(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($sources) && is_array($sources)) {
|
if (isset($sources) === true && is_array($sources) === true) {
|
||||||
$weights = [];
|
$weights = [];
|
||||||
$labels = [];
|
$labels = [];
|
||||||
$modules = [];
|
$modules = [];
|
||||||
@ -1498,6 +1498,10 @@ function graphic_combined_module(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((bool) $params_combined['from_interface'] === true) {
|
||||||
|
$labels = [];
|
||||||
|
}
|
||||||
|
|
||||||
if ($module_list) {
|
if ($module_list) {
|
||||||
$params_combined['modules_id'] = $module_list;
|
$params_combined['modules_id'] = $module_list;
|
||||||
} else {
|
} else {
|
||||||
|
@ -8682,8 +8682,8 @@ function reporting_availability($report, $content, $date=false, $time=false)
|
|||||||
$item['id_agent_module']
|
$item['id_agent_module']
|
||||||
);
|
);
|
||||||
|
|
||||||
if (isset($item['compare']) === true
|
if (isset($item['compare']) === false
|
||||||
&& empty($item['compare']) === true
|
|| empty($item['compare']) === true
|
||||||
) {
|
) {
|
||||||
$row['data']['compare'] = false;
|
$row['data']['compare'] = false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -4007,7 +4007,7 @@ function reporting_html_text(&$table, $item)
|
|||||||
*/
|
*/
|
||||||
function reporting_html_availability($table, $item, $pdf=0)
|
function reporting_html_availability($table, $item, $pdf=0)
|
||||||
{
|
{
|
||||||
$retun_pdf = '';
|
$return_pdf = '';
|
||||||
|
|
||||||
$style = db_get_value(
|
$style = db_get_value(
|
||||||
'style',
|
'style',
|
||||||
@ -4234,7 +4234,7 @@ function reporting_html_availability($table, $item, $pdf=0)
|
|||||||
} else {
|
} else {
|
||||||
$table_row[] = $row['agent'];
|
$table_row[] = $row['agent'];
|
||||||
$item_name = $row['availability_item'];
|
$item_name = $row['availability_item'];
|
||||||
if ((bool) $row['compare'] === false) {
|
if ((bool) $row['compare'] === true) {
|
||||||
$item_name .= ' ('.__('24 x 7').')';
|
$item_name .= ' ('.__('24 x 7').')';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4422,6 +4422,7 @@ function reporting_html_availability($table, $item, $pdf=0)
|
|||||||
$table2->data[] = $table_row2;
|
$table2->data[] = $table_row2;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
$table = new stdClass();
|
||||||
$table->colspan['error']['cell'] = 3;
|
$table->colspan['error']['cell'] = 3;
|
||||||
$table->data['error']['cell'] = __(
|
$table->data['error']['cell'] = __(
|
||||||
'There are no Agent/Modules defined'
|
'There are no Agent/Modules defined'
|
||||||
@ -5980,11 +5981,7 @@ function reporting_get_event_histogram($events, $text_header_event=false)
|
|||||||
include_once '../../include/graphs/functions_gd.php';
|
include_once '../../include/graphs/functions_gd.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
$max_value = count($events);
|
$period = SECONDS_1DAY;
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
|
||||||
$max_value = SECONDS_1HOUR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$text_header_event) {
|
if (!$text_header_event) {
|
||||||
$text_header_event = __('Events info (1hr.)');
|
$text_header_event = __('Events info (1hr.)');
|
||||||
@ -6057,7 +6054,7 @@ function reporting_get_event_histogram($events, $text_header_event=false)
|
|||||||
} else {
|
} else {
|
||||||
$graph_data[] = [
|
$graph_data[] = [
|
||||||
'data' => $color,
|
'data' => $color,
|
||||||
'utimestamp' => 1,
|
'utimestamp' => SECONDS_1DAY,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6076,9 +6073,9 @@ function reporting_get_event_histogram($events, $text_header_event=false)
|
|||||||
|
|
||||||
$slicebar = flot_slicesbar_graph(
|
$slicebar = flot_slicesbar_graph(
|
||||||
$graph_data,
|
$graph_data,
|
||||||
$max_value,
|
$period,
|
||||||
'450px;border:0',
|
'400px;border:0',
|
||||||
25,
|
40,
|
||||||
$full_legend,
|
$full_legend,
|
||||||
$colors,
|
$colors,
|
||||||
$config['fontpath'],
|
$config['fontpath'],
|
||||||
@ -6091,7 +6088,7 @@ function reporting_get_event_histogram($events, $text_header_event=false)
|
|||||||
[],
|
[],
|
||||||
true,
|
true,
|
||||||
1,
|
1,
|
||||||
false,
|
450,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -4001,11 +4001,12 @@ function ui_toggle(
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Options.
|
// Options.
|
||||||
|
$style = 'overflow:hidden;';
|
||||||
if ($hidden_default) {
|
if ($hidden_default) {
|
||||||
$style = 'display:none';
|
$style .= 'height:0;';
|
||||||
$original = $img_b;
|
$original = $img_b;
|
||||||
} else {
|
} else {
|
||||||
$style = '';
|
$style .= 'height:auto;';
|
||||||
$original = $img_a;
|
$original = $img_a;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4111,24 +4112,24 @@ function ui_toggle(
|
|||||||
$output .= ' if (is_metaconsole == 0) {';
|
$output .= ' if (is_metaconsole == 0) {';
|
||||||
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
||||||
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
||||||
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
$output .= " $('#tgl_div_".$uniqid."').css('height', 'auto');\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
$output .= " else {\n";
|
$output .= " else {\n";
|
||||||
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
||||||
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
$output .= " $('#tgl_div_".$uniqid."').css('height', 0);\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
$output .= " });\n";
|
$output .= " });\n";
|
||||||
$output .= " $('#tgl_ctrl_".$uniqid."').click(function() {\n";
|
$output .= " $('#tgl_ctrl_".$uniqid."').click(function() {\n";
|
||||||
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
||||||
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
||||||
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
$output .= " $('#tgl_div_".$uniqid."').css('height', 'auto');\n";
|
||||||
$output .= " $('#image_".$uniqid."').attr({src: '".$image_a."'});\n";
|
$output .= " $('#image_".$uniqid."').attr({src: '".$image_a."'});\n";
|
||||||
$output .= " $('#checkbox-".$switch_name."').prop('checked', true);\n";
|
$output .= " $('#checkbox-".$switch_name."').prop('checked', true);\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
$output .= " else {\n";
|
$output .= " else {\n";
|
||||||
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
||||||
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
$output .= " $('#tgl_div_".$uniqid."').css('height', 0);\n";
|
||||||
$output .= " $('#image_".$uniqid."').attr({src: '".$image_b."'});\n";
|
$output .= " $('#image_".$uniqid."').attr({src: '".$image_b."'});\n";
|
||||||
$output .= " $('#checkbox-".$switch_name."').prop('checked', false);\n";
|
$output .= " $('#checkbox-".$switch_name."').prop('checked', false);\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
|
@ -2461,14 +2461,14 @@ function pandoraFlotArea(
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$.each(update_legend, function(index, value) {
|
$.each(update_legend, function(index, value) {
|
||||||
if (typeof value[x] !== "undefined") {
|
if (typeof value[x - 1] !== "undefined") {
|
||||||
data_legend[index] =
|
data_legend[index] =
|
||||||
" Min: " +
|
" Min: " +
|
||||||
number_format(value[x].min, 0, unit, short_data, divisor) +
|
number_format(value[x - 1].min, 0, unit, short_data, divisor) +
|
||||||
" Max: " +
|
" Max: " +
|
||||||
number_format(value[x].max, 0, unit, short_data, divisor) +
|
number_format(value[x - 1].max, 0, unit, short_data, divisor) +
|
||||||
" Avg: " +
|
" Avg: " +
|
||||||
number_format(value[x].avg, 0, unit, short_data, divisor);
|
number_format(value[x - 1].avg, 0, unit, short_data, divisor);
|
||||||
} else {
|
} else {
|
||||||
data_legend[index] = " Min: " + 0 + " Max: " + 0 + " Avg: " + 0;
|
data_legend[index] = " Min: " + 0 + " Max: " + 0 + " Avg: " + 0;
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ class AlertsFiredWidget extends Widget
|
|||||||
$this->configurationRequired = false;
|
$this->configurationRequired = false;
|
||||||
if (isset($this->values['groupId']) === false) {
|
if (isset($this->values['groupId']) === false) {
|
||||||
$this->configurationRequired = true;
|
$this->configurationRequired = true;
|
||||||
} else {
|
} else if ($this->values['groupId'] !== '0') {
|
||||||
$check_exist = \db_get_value(
|
$check_exist = \db_get_value(
|
||||||
'id_grupo',
|
'id_grupo',
|
||||||
'tgrupo',
|
'tgrupo',
|
||||||
|
@ -181,7 +181,7 @@ final class Container extends Model
|
|||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
return ($backgroundImage === 'None.png') ? null : $backgroundImage;
|
return ($backgroundImage === 'None.png') ? null : str_replace(' ', '%20', $backgroundImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,10 +6,6 @@ div#bullets_modules span {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
table#agent_interface_info .noresizevc.graph {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.agent_details_agent_alias {
|
div.agent_details_agent_alias {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
@ -457,8 +457,11 @@ button.ui-button::-moz-focus-inner {
|
|||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
.ui-dialog .ui-dialog-titlebar {
|
.ui-dialog .ui-dialog-titlebar {
|
||||||
padding: 0.4em 1em;
|
height: 38px;
|
||||||
position: relative;
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
.ui-dialog .ui-dialog-title {
|
.ui-dialog .ui-dialog-title {
|
||||||
float: left;
|
float: left;
|
||||||
@ -471,7 +474,6 @@ button.ui-button::-moz-focus-inner {
|
|||||||
.ui-dialog .ui-dialog-titlebar-close {
|
.ui-dialog .ui-dialog-titlebar-close {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0.3em;
|
right: 0.3em;
|
||||||
top: 50%;
|
|
||||||
width: 20px;
|
width: 20px;
|
||||||
margin: -10px 0 0 0;
|
margin: -10px 0 0 0;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
@ -847,11 +849,7 @@ body .ui-tooltip {
|
|||||||
.ui-widget textarea,
|
.ui-widget textarea,
|
||||||
.ui-widget button {
|
.ui-widget button {
|
||||||
}
|
}
|
||||||
.ui-widget.ui-widget-content {
|
|
||||||
border: 1px solid #c5c5c5;
|
|
||||||
}
|
|
||||||
.ui-widget-content {
|
.ui-widget-content {
|
||||||
border: 1px solid #ddd;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
@ -859,7 +857,6 @@ body .ui-tooltip {
|
|||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
.ui-widget-header {
|
.ui-widget-header {
|
||||||
border: 1px solid #ddd;
|
|
||||||
background: #e9e9e9;
|
background: #e9e9e9;
|
||||||
color: #333;
|
color: #333;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -867,6 +864,9 @@ body .ui-tooltip {
|
|||||||
.ui-widget-header a {
|
.ui-widget-header a {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
.ui-dialog .ui-widget-header {
|
||||||
|
margin: -3px -3px 0px -3px;
|
||||||
|
}
|
||||||
.ui-state-default,
|
.ui-state-default,
|
||||||
.ui-widget-content .ui-state-default,
|
.ui-widget-content .ui-state-default,
|
||||||
.ui-widget-header .ui-state-default,
|
.ui-widget-header .ui-state-default,
|
||||||
@ -998,34 +998,6 @@ a.ui-button:active,
|
|||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
.ui-icon,
|
|
||||||
.ui-widget-content .ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_444444_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-widget-header .ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_444444_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-state-hover .ui-icon,
|
|
||||||
.ui-state-focus .ui-icon,
|
|
||||||
.ui-button:hover .ui-icon,
|
|
||||||
.ui-button:focus .ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_555555_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-state-active .ui-icon,
|
|
||||||
.ui-button:active .ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_ffffff_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-state-highlight .ui-icon,
|
|
||||||
.ui-button .ui-state-highlight.ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_777620_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-state-error .ui-icon,
|
|
||||||
.ui-state-error-text .ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_cc0000_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-button .ui-icon {
|
|
||||||
background-image: url("jQueryUI-1.12.1/themes/base/images/ui-icons_777777_256x240.png");
|
|
||||||
}
|
|
||||||
.ui-icon-blank {
|
.ui-icon-blank {
|
||||||
background-position: 16px 16px;
|
background-position: 16px 16px;
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#tabs-sound-modal button.upd,
|
#tabs-sound-modal button.upd,
|
||||||
input.upd {
|
#button-melody_sound {
|
||||||
background-image: url(../../images/sound_wave.png);
|
background-image: url(../../images/sound_wave.png);
|
||||||
background-position: 90px 8px;
|
background-position: 90px 8px;
|
||||||
}
|
}
|
||||||
|
@ -1132,7 +1132,7 @@ if (get_parameter('login', 0) !== 0) {
|
|||||||
$php_version = phpversion();
|
$php_version = phpversion();
|
||||||
$php_version_array = explode('.', $php_version);
|
$php_version_array = explode('.', $php_version);
|
||||||
if ($php_version_array[0] < 7) {
|
if ($php_version_array[0] < 7) {
|
||||||
include_once 'general/php7_message.php';
|
include_once 'general/php_message.php';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
<div style='height: 10px'>
|
<div style='height: 10px'>
|
||||||
<?php
|
<?php
|
||||||
$version = '7.0NG.766';
|
$version = '7.0NG.766';
|
||||||
$build = '221110';
|
$build = '221123';
|
||||||
$banner = "v$version Build $build";
|
$banner = "v$version Build $build";
|
||||||
|
|
||||||
error_reporting(0);
|
error_reporting(0);
|
||||||
|
@ -681,9 +681,8 @@ if (!empty($network_interfaces)) {
|
|||||||
$table_interface->style['interface_graph'] = 'width: 20px;padding-top:0px;padding-bottom:0px;';
|
$table_interface->style['interface_graph'] = 'width: 20px;padding-top:0px;padding-bottom:0px;';
|
||||||
$table_interface->style['interface_event_graph'] = 'width: 35%;padding-top:0px;padding-bottom:0px;';
|
$table_interface->style['interface_event_graph'] = 'width: 35%;padding-top:0px;padding-bottom:0px;';
|
||||||
$table_interface->align['interface_event_graph'] = 'right';
|
$table_interface->align['interface_event_graph'] = 'right';
|
||||||
// $table_interface->style['interface_event_graph'] = 'width: 5%;padding-top:0px;padding-bottom:0px;';
|
$table_interface->style['interface_event_graph'] = 'width: 3%;padding-top:0px;padding-bottom:0px;';
|
||||||
$table_interface->align['interface_event_graph_text'] = 'left';
|
$table_interface->style['interface_name'] = 'width: 30%;padding-top:0px;padding-bottom:0px;';
|
||||||
$table_interface->style['interface_name'] = 'width: 10%;padding-top:0px;padding-bottom:0px;';
|
|
||||||
$table_interface->align['interface_name'] = 'left';
|
$table_interface->align['interface_name'] = 'left';
|
||||||
$table_interface->align['interface_ip'] = 'left';
|
$table_interface->align['interface_ip'] = 'left';
|
||||||
$table_interface->align['last_contact'] = 'left';
|
$table_interface->align['last_contact'] = 'left';
|
||||||
@ -819,12 +818,6 @@ if (!empty($network_interfaces)) {
|
|||||||
$data['interface_mac'] = $interface['mac'];
|
$data['interface_mac'] = $interface['mac'];
|
||||||
$data['last_contact'] = __('Last contact: ').$last_contact;
|
$data['last_contact'] = __('Last contact: ').$last_contact;
|
||||||
$data['interface_event_graph'] = $e_graph;
|
$data['interface_event_graph'] = $e_graph;
|
||||||
if ($event_text_cont == 0) {
|
|
||||||
$data['interface_event_graph_text'] = ui_print_help_tip('Module events graph', true);
|
|
||||||
$event_text_cont++;
|
|
||||||
} else {
|
|
||||||
$data['interface_event_graph_text'] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$table_interface->data[] = $data;
|
$table_interface->data[] = $data;
|
||||||
}
|
}
|
||||||
@ -939,7 +932,7 @@ if ($table_access_rate) {
|
|||||||
|
|
||||||
echo $agent_incidents;
|
echo $agent_incidents;
|
||||||
|
|
||||||
if (isset($table_interface)) {
|
if (isset($table_interface) === true) {
|
||||||
ui_toggle(
|
ui_toggle(
|
||||||
html_print_table($table_interface, true),
|
html_print_table($table_interface, true),
|
||||||
'<b>'.__('Interface information (SNMP)').'</b>',
|
'<b>'.__('Interface information (SNMP)').'</b>',
|
||||||
|
@ -95,10 +95,12 @@ if ($refresh > 0) {
|
|||||||
<title><?php echo __('%s Interface Graph', get_product_name()).' ('.agents_get_alias($agent_id).' - '.$interface_name; ?>)</title>
|
<title><?php echo __('%s Interface Graph', get_product_name()).' ('.agents_get_alias($agent_id).' - '.$interface_name; ?>)</title>
|
||||||
<link rel="stylesheet" href="../../include/styles/pandora_minimal.css" type="text/css" />
|
<link rel="stylesheet" href="../../include/styles/pandora_minimal.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" />
|
<link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="../../include/styles/select2.min.css" type="text/css" />
|
||||||
<script type='text/javascript' src='../../include/javascript/pandora.js'></script>
|
<script type='text/javascript' src='../../include/javascript/pandora.js'></script>
|
||||||
<script type='text/javascript' src='../../include/javascript/jquery.current.js'></script>
|
<script type='text/javascript' src='../../include/javascript/jquery.current.js'></script>
|
||||||
<script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script>
|
<script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script>
|
||||||
<script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script>
|
<script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script>
|
||||||
|
<script type='text/javascript' src='../../include/javascript/select2.min.js'></script>
|
||||||
<?php
|
<?php
|
||||||
require_once $config['homedir'].'/include/graphs/functions_flot.php';
|
require_once $config['homedir'].'/include/graphs/functions_flot.php';
|
||||||
echo include_javascript_dependencies_flot_graph(true, '../');
|
echo include_javascript_dependencies_flot_graph(true, '../');
|
||||||
|
@ -222,7 +222,7 @@ $id_source_event = get_parameter(
|
|||||||
|
|
||||||
$server_id = get_parameter(
|
$server_id = get_parameter(
|
||||||
'filter[server_id]',
|
'filter[server_id]',
|
||||||
($filter['id_server_meta'] ?? '')
|
($filter['server_id'] ?? '')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (is_metaconsole() === true) {
|
if (is_metaconsole() === true) {
|
||||||
@ -241,13 +241,19 @@ if (is_metaconsole() === true) {
|
|||||||
|
|
||||||
$servers[0] = __('Metaconsola');
|
$servers[0] = __('Metaconsola');
|
||||||
|
|
||||||
if ($server_id === '') {
|
if (empty($server_id) === true) {
|
||||||
$server_id = array_keys($servers);
|
$server_id = array_keys($servers);
|
||||||
} else if (is_array($server_id) === false) {
|
} else {
|
||||||
if ((int) $server_id !== 0) {
|
if (is_array($server_id) === false) {
|
||||||
$server_id = [$server_id];
|
if (is_numeric($server_id) === true) {
|
||||||
} else {
|
if ($server_id !== 0) {
|
||||||
$server_id = array_keys($servers);
|
$server_id = [$filter['server_id']];
|
||||||
|
} else {
|
||||||
|
$server_id = array_keys($servers);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$server_id = explode(',', $filter['server_id']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1108,7 +1114,21 @@ if ($loaded_filter !== false && $from_event_graph != 1 && isset($fb64) === false
|
|||||||
$id_extra = $filter['id_extra'];
|
$id_extra = $filter['id_extra'];
|
||||||
$user_comment = $filter['user_comment'];
|
$user_comment = $filter['user_comment'];
|
||||||
$id_source_event = ($filter['id_source_event'] ?? '');
|
$id_source_event = ($filter['id_source_event'] ?? '');
|
||||||
$server_id = $filter['server_id'];
|
$server_id = '';
|
||||||
|
if (empty($filter['server_id']) === false) {
|
||||||
|
if (is_array($server_id) === false) {
|
||||||
|
if (is_numeric($server_id) === true) {
|
||||||
|
if ($server_id !== 0) {
|
||||||
|
$server_id = [$filter['server_id']];
|
||||||
|
} else {
|
||||||
|
$server_id = array_keys($servers);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$server_id = explode(',', $filter['server_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$custom_data = $filter['custom_data'];
|
$custom_data = $filter['custom_data'];
|
||||||
$custom_data_filter_type = $filter['custom_data_filter_type'];
|
$custom_data_filter_type = $filter['custom_data_filter_type'];
|
||||||
}
|
}
|
||||||
@ -2849,7 +2869,11 @@ $(document).ready( function() {
|
|||||||
inputs = $("#<?php echo $form_id; ?> :input");
|
inputs = $("#<?php echo $form_id; ?> :input");
|
||||||
values = {};
|
values = {};
|
||||||
inputs.each(function() {
|
inputs.each(function() {
|
||||||
values[this.name] = $(this).val();
|
if (this.name === 'server_id') {
|
||||||
|
values[this.name] = $(this).val().join();
|
||||||
|
} else {
|
||||||
|
values[this.name] = $(this).val();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
values['history'] = "<?php echo (int) $history; ?>";
|
values['history'] = "<?php echo (int) $history; ?>";
|
||||||
@ -2880,11 +2904,11 @@ $(document).ready( function() {
|
|||||||
$("#text-event_view_hr").on("keyup",function(){
|
$("#text-event_view_hr").on("keyup",function(){
|
||||||
hours = $('#text-event_view_hr').val();
|
hours = $('#text-event_view_hr').val();
|
||||||
if (hours == '' || hours == 0 ) {
|
if (hours == '' || hours == 0 ) {
|
||||||
$('#summary_hours').html('<?php echo __('Any'); ?>');
|
$('#summary_hours').text('<?php echo __('Any'); ?>');
|
||||||
} else if (hours == 1) {
|
} else if (hours == 1) {
|
||||||
$('#summary_hours').html('<?php echo __('Last hour.'); ?>');
|
$('#summary_hours').text('<?php echo __('Last hour.'); ?>');
|
||||||
} else {
|
} else {
|
||||||
$('#summary_hours').html(hours + '<?php echo ' '.__('hours.'); ?>');
|
$('#summary_hours').text(hours + '<?php echo ' '.__('hours.'); ?>');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -3030,7 +3054,11 @@ $(document).ready( function() {
|
|||||||
inputs = $("#events_form :input");
|
inputs = $("#events_form :input");
|
||||||
values = {};
|
values = {};
|
||||||
inputs.each(function() {
|
inputs.each(function() {
|
||||||
values[this.name] = $(this).val();
|
if (this.name === 'server_id') {
|
||||||
|
values[this.name] = $(this).val().join();
|
||||||
|
} else {
|
||||||
|
values[this.name] = $(this).val();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
var newValue = btoa(JSON.stringify(values));
|
var newValue = btoa(JSON.stringify(values));
|
||||||
|
@ -269,7 +269,7 @@ if ($searchAgents) {
|
|||||||
|
|
||||||
if ($agents !== false) {
|
if ($agents !== false) {
|
||||||
$totalAgents = db_get_value_sql(
|
$totalAgents = db_get_value_sql(
|
||||||
'SELECT COUNT(id_agente) AS agent_count '.$sql
|
'SELECT COUNT(DISTINCT id_agente) AS agent_count '.$sql
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,7 +501,8 @@ if (!isset($autorefresh_list)) {
|
|||||||
$autorefresh_list = $aux;
|
$autorefresh_list = $aux;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (($autorefresh_list[0] === '') || ($autorefresh_list[0] === '0')) {
|
if (is_array($autorefresh_list) === false || empty($autorefresh_list[0]) === true || $autorefresh_list[0] === '0') {
|
||||||
|
$autorefresh_list = [];
|
||||||
$autorefresh_list[0] = __('None');
|
$autorefresh_list[0] = __('None');
|
||||||
} else {
|
} else {
|
||||||
$aux = [];
|
$aux = [];
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
|
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
|
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name apache2
|
%define httpd_name apache2
|
||||||
|
@ -1256,7 +1256,7 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` (
|
|||||||
`id_extra` TINYTEXT,
|
`id_extra` TINYTEXT,
|
||||||
`user_comment` TEXT,
|
`user_comment` TEXT,
|
||||||
`id_source_event` INT NULL DEFAULT 0,
|
`id_source_event` INT NULL DEFAULT 0,
|
||||||
`server_id` INT NOT NULL DEFAULT 0,
|
`server_id` TEXT,
|
||||||
`time_from` TIME NULL,
|
`time_from` TIME NULL,
|
||||||
`time_to` TIME NULL,
|
`time_to` TIME NULL,
|
||||||
`custom_data` VARCHAR(500) DEFAULT '',
|
`custom_data` VARCHAR(500) DEFAULT '',
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-server
|
package: pandorafms-server
|
||||||
Version: 7.0NG.766-221110
|
Version: 7.0NG.766-221123
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.766-221110"
|
pandora_version="7.0NG.766-221123"
|
||||||
|
|
||||||
package_cpan=0
|
package_cpan=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
|||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "7.0NG.766";
|
my $pandora_version = "7.0NG.766";
|
||||||
my $pandora_build = "221110";
|
my $pandora_build = "221123";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
# Setup hash
|
# Setup hash
|
||||||
|
@ -7252,9 +7252,12 @@ sub pandora_snmptrapd_still_working ($$) {
|
|||||||
my $snmptrapdFile = $pa_config->{'snmp_logfile'};
|
my $snmptrapdFile = $pa_config->{'snmp_logfile'};
|
||||||
tie my @snmptrapdFileComplete, 'Tie::File', $snmptrapdFile;
|
tie my @snmptrapdFileComplete, 'Tie::File', $snmptrapdFile;
|
||||||
my $lastTimestampLogFile = $snmptrapdFileComplete[-1];
|
my $lastTimestampLogFile = $snmptrapdFileComplete[-1];
|
||||||
|
|
||||||
|
$lastTimestampLogFile = '' unless defined ($lastTimestampLogFile);
|
||||||
|
|
||||||
my ($protocol, $date, $time) = split(/\[\*\*\]/, $lastTimestampLogFile, 4);
|
my ($protocol, $date, $time) = split(/\[\*\*\]/, $lastTimestampLogFile, 4);
|
||||||
# If time or date not filled in, probably havent caught any snmptraps yet.
|
# If time or date not filled in, probably havent caught any snmptraps yet.
|
||||||
if ($time ne '' && $date ne '') {
|
if (defined $date && defined $time && $time ne '' && $date ne '') {
|
||||||
my ($hour, $min, $sec) = split(/:/, $time, 3);
|
my ($hour, $min, $sec) = split(/:/, $time, 3);
|
||||||
my ($year, $month, $day) = split(/-/, $date, 3);
|
my ($year, $month, $day) = split(/-/, $date, 3);
|
||||||
my $lastTimestampLogFile = timelocal($sec,$min,$hour,$day,$month-1,$year);
|
my $lastTimestampLogFile = timelocal($sec,$min,$hour,$day,$month-1,$year);
|
||||||
|
@ -19,6 +19,9 @@ package PandoraFMS::DB;
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
|
use threads;
|
||||||
|
|
||||||
use DBI;
|
use DBI;
|
||||||
use Carp qw/croak/;
|
use Carp qw/croak/;
|
||||||
|
|
||||||
@ -72,8 +75,11 @@ our @EXPORT = qw(
|
|||||||
get_alert_template_name
|
get_alert_template_name
|
||||||
get_command_id
|
get_command_id
|
||||||
get_console_api_url
|
get_console_api_url
|
||||||
|
get_db_nodes
|
||||||
get_db_rows
|
get_db_rows
|
||||||
get_db_rows_limit
|
get_db_rows_limit
|
||||||
|
get_db_rows_node
|
||||||
|
get_db_rows_parallel
|
||||||
get_db_single_row
|
get_db_single_row
|
||||||
get_db_value
|
get_db_value
|
||||||
get_db_value_limit
|
get_db_value_limit
|
||||||
@ -947,6 +953,37 @@ sub get_db_single_row ($$;@) {
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
## Get DB information for all known Pandora FMS nodes.
|
||||||
|
##########################################################################
|
||||||
|
sub get_db_nodes ($$) {
|
||||||
|
my ($dbh, $pa_config) = @_;
|
||||||
|
my $dbh_nodes = [];
|
||||||
|
|
||||||
|
# Insert the current node first.
|
||||||
|
push(@{$dbh_nodes},
|
||||||
|
{'dbengine' => $pa_config->{'dbengine'},
|
||||||
|
'dbname' => $pa_config->{'dbname'},
|
||||||
|
'dbhost' => $pa_config->{'dbhost'},
|
||||||
|
'dbport' => $pa_config->{'dbport'},
|
||||||
|
'dbuser' => $pa_config->{'dbuser'},
|
||||||
|
'dbpass' => $pa_config->{'dbpass'}});
|
||||||
|
|
||||||
|
# Look for additional nodes.
|
||||||
|
my @nodes = get_db_rows($dbh, 'SELECT * FROM tmetaconsole_setup WHERE disabled = 0');
|
||||||
|
foreach my $node (@nodes) {
|
||||||
|
push(@{$dbh_nodes},
|
||||||
|
{'dbengine' => $pa_config->{'dbengine'},
|
||||||
|
'dbname' => $node->{'dbname'},
|
||||||
|
'dbhost' => $node->{'dbhost'},
|
||||||
|
'dbport' => $node->{'dbport'},
|
||||||
|
'dbuser' => $node->{'dbuser'},
|
||||||
|
'dbpass' => $node->{'dbpass'}});
|
||||||
|
}
|
||||||
|
|
||||||
|
return $dbh_nodes;
|
||||||
|
}
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
## Get all rows returned by an SQL query as a hash reference array.
|
## Get all rows returned by an SQL query as a hash reference array.
|
||||||
##########################################################################
|
##########################################################################
|
||||||
@ -961,18 +998,67 @@ sub get_db_rows ($$;@) {
|
|||||||
|
|
||||||
# Save returned rows
|
# Save returned rows
|
||||||
while (my $row = $sth->fetchrow_hashref()) {
|
while (my $row = $sth->fetchrow_hashref()) {
|
||||||
if ($RDBMS eq 'oracle') {
|
push (@rows, $row);
|
||||||
push (@rows, {map { lc ($_) => $row->{$_} } keys (%{$row})});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
push (@rows, $row);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
return @rows;
|
return @rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
## Connect to the given node and run get_db_rows.
|
||||||
|
##########################################################################
|
||||||
|
sub get_db_rows_node ($$;@) {
|
||||||
|
my ($node, $query, @values) = @_;
|
||||||
|
my $dbh;
|
||||||
|
my @rows;
|
||||||
|
|
||||||
|
eval {
|
||||||
|
$dbh = db_connect($node->{'dbengine'},
|
||||||
|
$node->{'dbname'},
|
||||||
|
$node->{'dbhost'},
|
||||||
|
$node->{'dbport'},
|
||||||
|
$node->{'dbuser'},
|
||||||
|
$node->{'dbpass'});
|
||||||
|
@rows = get_db_rows($dbh, $query, @values);
|
||||||
|
};
|
||||||
|
|
||||||
|
db_disconnect($dbh) if defined($dbh);
|
||||||
|
|
||||||
|
return \@rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
## Run get_db_rows on all known Pandora FMS nodes in parallel.
|
||||||
|
##########################################################################
|
||||||
|
sub get_db_rows_parallel ($$;@) {
|
||||||
|
my ($nodes, $query, @values) = @_;
|
||||||
|
|
||||||
|
# Launch the queries.
|
||||||
|
my @threads;
|
||||||
|
{
|
||||||
|
# Calling DESTROY would make the server restart.
|
||||||
|
no warnings 'redefine';
|
||||||
|
local *PandoraFMS::ProducerConsumerServer::DESTROY = sub {};
|
||||||
|
local *PandoraFMS::BlockProducerConsumerServer::DESTROY = sub {};
|
||||||
|
|
||||||
|
# Query the nodes.
|
||||||
|
foreach my $node (@{$nodes}) {
|
||||||
|
my $thr = threads->create(\&get_db_rows_node, $node, $query, @values);
|
||||||
|
push(@threads, $thr) if defined($thr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Retrieve the results.
|
||||||
|
my @combined_res;
|
||||||
|
foreach my $thr (@threads) {
|
||||||
|
my $res = $thr->join();
|
||||||
|
push(@combined_res, @{$res}) if defined($res);
|
||||||
|
}
|
||||||
|
|
||||||
|
return @combined_res;
|
||||||
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
## Get all rows (with a limit clause) returned by an SQL query
|
## Get all rows (with a limit clause) returned by an SQL query
|
||||||
## as a hash reference array.
|
## as a hash reference array.
|
||||||
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "7.0NG.766";
|
my $pandora_version = "7.0NG.766";
|
||||||
my $pandora_build = "221110";
|
my $pandora_build = "221123";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||||
|
@ -147,7 +147,9 @@ sub data_producer ($) {
|
|||||||
|
|
||||||
# Reset storm protection counters
|
# Reset storm protection counters
|
||||||
my $curr_time = time ();
|
my $curr_time = time ();
|
||||||
if ($pa_config->{"__storm_ref__"} + $pa_config->{"snmp_storm_timeout"} < $curr_time) {
|
if ($pa_config->{"__storm_ref__"} + $pa_config->{"snmp_storm_timeout"} < $curr_time
|
||||||
|
|| $pa_config->{'snmpconsole_lock'} == 1
|
||||||
|
) {
|
||||||
$pa_config->{"__storm_ref__"} = $curr_time;
|
$pa_config->{"__storm_ref__"} = $curr_time;
|
||||||
%AGENTS = ();
|
%AGENTS = ();
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_server
|
%define name pandorafms_server
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
|
|
||||||
Summary: Pandora FMS Server
|
Summary: Pandora FMS Server
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_server
|
%define name pandorafms_server
|
||||||
%define version 7.0NG.766
|
%define version 7.0NG.766
|
||||||
%define release 221110
|
%define release 221123
|
||||||
|
|
||||||
Summary: Pandora FMS Server
|
Summary: Pandora FMS Server
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.766"
|
PI_VERSION="7.0NG.766"
|
||||||
PI_BUILD="221110"
|
PI_BUILD="221123"
|
||||||
|
|
||||||
MODE=$1
|
MODE=$1
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
|||||||
use PandoraFMS::DB;
|
use PandoraFMS::DB;
|
||||||
|
|
||||||
# version: define current version
|
# version: define current version
|
||||||
my $version = "7.0NG.766 Build 221110";
|
my $version = "7.0NG.766 Build 221123";
|
||||||
|
|
||||||
# Pandora server configuration
|
# Pandora server configuration
|
||||||
my %conf;
|
my %conf;
|
||||||
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||||||
Encode::Locale::decode_argv;
|
Encode::Locale::decode_argv;
|
||||||
|
|
||||||
# version: define current version
|
# version: define current version
|
||||||
my $version = "7.0NG.766 Build 221110";
|
my $version = "7.0NG.766 Build 221123";
|
||||||
|
|
||||||
# save program name for logging
|
# save program name for logging
|
||||||
my $progname = basename($0);
|
my $progname = basename($0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user