mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-04-08 18:55:09 +02:00
Merge branch 'develop' into feature/report_SLA_new
This commit is contained in:
commit
b28fe4cef4
@ -1,5 +1,5 @@
|
||||
package: pandorafms-agent-unix
|
||||
Version: 7.0dev-161130
|
||||
Version: 7.0dev-161214
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0dev-161130"
|
||||
pandora_version="7.0dev-161214"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
@ -41,7 +41,7 @@ my $Sem = undef;
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0dev';
|
||||
use constant AGENT_BUILD => '161130';
|
||||
use constant AGENT_BUILD => '161214';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
@ -131,10 +131,12 @@ my %DefaultConf = (
|
||||
'temporal' => '/var/spool/pandora',
|
||||
'interval' => 300,
|
||||
'debug' => 0,
|
||||
'ehorus_conf' => undef,
|
||||
'agent_name' => hostname (),
|
||||
'agent_name_cmd' => '',
|
||||
'description' => '',
|
||||
'group' => '',
|
||||
'group_id' => undef,
|
||||
'group_password' => undef,
|
||||
'encoding' => 'UTF-8',
|
||||
'server_port' => 41121,
|
||||
@ -2194,6 +2196,39 @@ sub init_module ($) {
|
||||
$module->{'alert_template'} = undef;
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Get the eHorus key from the eHorus agent configuration file.
|
||||
################################################################################
|
||||
sub get_ehkey {
|
||||
my $fh;
|
||||
|
||||
return '' unless defined($Conf{'ehorus_conf'});
|
||||
|
||||
# Open the eHorus configuration file.
|
||||
if (!open($fh, '<', $Conf{'ehorus_conf'})) {
|
||||
# Do not write to the log, since ehorus_conf points to the default eHorus configuration file by default.
|
||||
return '';
|
||||
}
|
||||
|
||||
# Look for the eHorus key.
|
||||
while (my $line = <$fh>) {
|
||||
|
||||
# Skip comments.
|
||||
next if ($line =~ m/^\s*#/);
|
||||
|
||||
if ($line =~ m/\s*eh_key\s+(\S+)/) {
|
||||
my $eh_key = $1;
|
||||
close($fh);
|
||||
|
||||
return $eh_key;
|
||||
}
|
||||
}
|
||||
|
||||
# Not found.
|
||||
close($fh);
|
||||
return '';
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Main.
|
||||
################################################################################
|
||||
@ -2373,11 +2408,14 @@ while (1) {
|
||||
# Clear the XML
|
||||
$Xml = "";
|
||||
|
||||
# Get the eHorus key.
|
||||
my $eh_key = get_ehkey();
|
||||
|
||||
# Custom fields
|
||||
|
||||
my @customfieldskeys = keys(%Customfields);
|
||||
if ($#customfieldskeys > -1) {
|
||||
if ($#customfieldskeys > -1 || $eh_key ne '') {
|
||||
$Xml .= "<custom_fields>\n";
|
||||
|
||||
foreach my $customfieldkey (@customfieldskeys) {
|
||||
if($customfieldkey =~ m/^(custom_field\d+_)name/) {
|
||||
if(defined($Customfields{$1."value"})) {
|
||||
@ -2388,6 +2426,15 @@ while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Add the eHorus key as a custom field.
|
||||
if ($eh_key ne '') {
|
||||
$Xml .= " <field>\n";
|
||||
$Xml .= " <name>eHorusID</name>\n";
|
||||
$Xml .= " <value><![CDATA[". $eh_key ."]]></value>\n";
|
||||
$Xml .= " </field>\n";
|
||||
}
|
||||
|
||||
$Xml .= "</custom_fields>\n";
|
||||
}
|
||||
|
||||
@ -2422,6 +2469,7 @@ while (1) {
|
||||
my $xml_header = "<?xml version='1.0' encoding='" . $Conf{'encoding'} . "'?>\n" .
|
||||
"<agent_data description='" . $Conf{'description'} . "' group='" . $Conf{'group'} .
|
||||
(defined($Conf{'group_password'}) ? ("' group_password='" . $Conf{'group_password'}) : '') .
|
||||
(defined($Conf{'group_id'}) ? ("' group_id='" . $Conf{'group_id'}) : '') .
|
||||
"' os_name='$OS' os_version='$OS_VERSION' interval='" . $Conf{'interval'} .
|
||||
"' version='" . AGENT_VERSION . '(Build ' . AGENT_BUILD . ')' . ($Conf{'autotime'} eq '1' ? '' : "' timestamp='" . strftime ('%Y/%m/%d %H:%M:%S', localtime ())) .
|
||||
"' agent_name='" . $Conf{'agent_name'} . "' timezone_offset='". $Conf{'timezone_offset'} .
|
||||
@ -2475,6 +2523,7 @@ while (1) {
|
||||
$xml_header .= "' position_description='" .$Conf{'position_description'};
|
||||
}
|
||||
}
|
||||
|
||||
$xml_header .= "'>\n";
|
||||
$Xml = $xml_header . $Xml . "</agent_data>";
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0dev
|
||||
%define release 161130
|
||||
%define release 161214
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
@ -24,7 +24,7 @@ Requires(preun): chkconfig /bin/rm /usr/sbin/userdel
|
||||
Requires: fileutils textutils unzip
|
||||
Requires: util-linux procps grep
|
||||
Requires: /sbin/ip /bin/awk
|
||||
Requires: perl perl(Sys::Syslog)
|
||||
Requires: perl perl(Sys::Syslog) perl(IO::Socket::SSL)
|
||||
# Required by plugins
|
||||
#Requires: sh-utils sed passwd net-tools rpm
|
||||
AutoReq: 0
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0dev
|
||||
%define release 161130
|
||||
%define release 161214
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -10,7 +10,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0dev"
|
||||
PI_BUILD="161130"
|
||||
PI_BUILD="161214"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
||||
{}
|
||||
|
||||
Version
|
||||
{161130}
|
||||
{161214}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
||||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0dev(Build 161130)")
|
||||
#define PANDORA_VERSION ("7.0dev(Build 161214)")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
@ -385,7 +385,7 @@ Pandora_Windows_Service::getXmlHeader () {
|
||||
char timestamp[20];
|
||||
string agent_name, os_name, os_version, encoding, value, xml, address, parent_agent_name, agent_name_cmd;
|
||||
string custom_id, url_address, latitude, longitude, altitude, position_description, gis_exec, gis_result, agent_mode;
|
||||
string group_password;
|
||||
string group_password, group_id, ehorus_conf;
|
||||
time_t ctime;
|
||||
struct tm *ctime_tm = NULL;
|
||||
int pos;
|
||||
@ -479,12 +479,19 @@ Pandora_Windows_Service::getXmlHeader () {
|
||||
xml += url_address;
|
||||
}
|
||||
|
||||
// Get Url Address
|
||||
// Get group password
|
||||
group_password = conf->getValue ("group_password");
|
||||
if (group_password != "") {
|
||||
xml += "\" group_password=\"";
|
||||
xml += group_password;
|
||||
}
|
||||
|
||||
// Get Group ID
|
||||
group_id = conf->getValue ("group_id");
|
||||
if (group_id != "") {
|
||||
xml += "\" group_id=\"";
|
||||
xml += group_id;
|
||||
}
|
||||
|
||||
// Get Coordinates
|
||||
gis_exec = conf->getValue ("gis_exec");
|
||||
@ -1634,6 +1641,7 @@ Pandora_Windows_Service::sendXml (Pandora_Module_List *modules) {
|
||||
string xml_filename, random_integer;
|
||||
string tmp_filename, tmp_filepath;
|
||||
string encoding;
|
||||
string ehorus_conf, eh_key;
|
||||
static HANDLE mutex = 0;
|
||||
ULARGE_INTEGER free_bytes;
|
||||
double min_free_bytes = 0;
|
||||
@ -1653,6 +1661,12 @@ Pandora_Windows_Service::sendXml (Pandora_Module_List *modules) {
|
||||
|
||||
data_xml = getXmlHeader ();
|
||||
|
||||
/* Get the eHorus key. */
|
||||
ehorus_conf = conf->getValue ("ehorus_conf");
|
||||
if (ehorus_conf != "") {
|
||||
eh_key = getEHKey(ehorus_conf);
|
||||
}
|
||||
|
||||
/* Write custom fields */
|
||||
int c = 1;
|
||||
|
||||
@ -1662,8 +1676,8 @@ Pandora_Windows_Service::sendXml (Pandora_Module_List *modules) {
|
||||
sprintf(token_value_token, "custom_field%d_value", c);
|
||||
string token_name = conf->getValue (token_name_token);
|
||||
string token_value = conf->getValue (token_value_token);
|
||||
|
||||
if(token_name != "" && token_value != "") {
|
||||
|
||||
if((token_name != "" && token_value != "") || eh_key != "") {
|
||||
data_xml += "<custom_fields>\n";
|
||||
while(token_name != "" && token_value != "") {
|
||||
data_xml += " <field>\n";
|
||||
@ -1677,6 +1691,15 @@ Pandora_Windows_Service::sendXml (Pandora_Module_List *modules) {
|
||||
token_name = conf->getValue (token_name_token);
|
||||
token_value = conf->getValue (token_value_token);
|
||||
}
|
||||
|
||||
/* Add the eHorus key as a custom field. */
|
||||
if (eh_key != "") {
|
||||
data_xml += " <field>\n";
|
||||
data_xml += " <name>eHorusID</name>\n";
|
||||
data_xml += " <value><![CDATA["+ eh_key +"]]></value>\n";
|
||||
data_xml += " </field>\n";
|
||||
}
|
||||
|
||||
data_xml += "</custom_fields>\n";
|
||||
}
|
||||
|
||||
@ -2034,6 +2057,37 @@ Pandora_Windows_Service::getConf () {
|
||||
return this->conf;
|
||||
}
|
||||
|
||||
string
|
||||
Pandora_Windows_Service::getEHKey (string ehorus_conf) {
|
||||
string buffer, eh_key;
|
||||
std::ifstream ifs(ehorus_conf.c_str());
|
||||
int pos;
|
||||
|
||||
if (! ifs.is_open ()) {
|
||||
pandoraDebug ("Error opening eHorus configuration file %s", ehorus_conf.c_str ());
|
||||
return eh_key;
|
||||
}
|
||||
|
||||
/* Look for the eHorus key. */
|
||||
while (ifs.good ()) {
|
||||
getline (ifs, buffer);
|
||||
|
||||
/* Skip comments. */
|
||||
if (buffer.empty() || buffer.at(0) == '#') {
|
||||
continue;
|
||||
}
|
||||
|
||||
pos = buffer.find("eh_key");
|
||||
if (pos != string::npos){
|
||||
eh_key = buffer.substr(pos + 7); /* pos + strlen("eh_key ") */
|
||||
eh_key = trim(eh_key);
|
||||
return eh_key;
|
||||
}
|
||||
}
|
||||
|
||||
return eh_key;
|
||||
}
|
||||
|
||||
long
|
||||
Pandora_Windows_Service::getInterval () {
|
||||
return this->interval;
|
||||
|
@ -114,6 +114,7 @@ namespace Pandora {
|
||||
int sendXml (Pandora_Module_List *modules);
|
||||
void sendBufferedXml (string path);
|
||||
Pandora_Agent_Conf *getConf ();
|
||||
string getEHKey (string ehorus_conf);
|
||||
long getInterval ();
|
||||
long getIntensiveInterval ();
|
||||
|
||||
|
@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0dev(Build 161130))"
|
||||
VALUE "ProductVersion", "(7.0dev(Build 161214))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-console
|
||||
Version: 7.0dev-161130
|
||||
Version: 7.0dev-161214
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0dev-161130"
|
||||
pandora_version="7.0dev-161214"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
@ -365,7 +365,7 @@ function resource_exportation_extension_main() {
|
||||
id = $("select#" + type + " option:selected").val();
|
||||
url = location.href.split('index');
|
||||
if (type == "policy") {
|
||||
include_agents = $("#checkbox-export_agents").prop("checked")
|
||||
var include_agents = $("#checkbox-export_agents").prop("checked")
|
||||
|
||||
url = url[0] + 'extensions/resource_exportation.php?get_ptr=1&type=' + type
|
||||
+ '&id=' + id + '&include_agents=' + include_agents;
|
||||
|
@ -88,6 +88,7 @@ ALTER TABLE tusuario ADD CONSTRAINT fk_id_filter FOREIGN KEY (id_filter) REFEREN
|
||||
-- ---------------------------------------------------------------------
|
||||
ALTER TABLE tagente_modulo ADD COLUMN `dynamic_next` bigint(20) NOT NULL default '0';
|
||||
ALTER TABLE tagente_modulo ADD COLUMN `dynamic_two_tailed` tinyint(1) unsigned default '0';
|
||||
ALTER TABLE tagente_modulo ADD COLUMN `parent_module_id` int(10) unsigned NOT NULL;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tagente_datos`
|
||||
@ -123,3 +124,8 @@ ALTER TABLE tlayout ADD `background_color` varchar(50) NOT NULL default '#FFF';
|
||||
-- Table `tlayout_data`
|
||||
-- ---------------------------------------------------------------------
|
||||
ALTER TABLE tlayout_data ADD `type_graph` varchar(50) NOT NULL default 'area';
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tagent_custom_fields`
|
||||
-- ---------------------------------------------------------------------
|
||||
INSERT INTO `tagent_custom_fields` (`name`) VALUES ('eHorusID');
|
||||
|
@ -76,6 +76,7 @@ ALTER TABLE tagente_modulo ADD COLUMN dynamic_max bigint(20) default '0';
|
||||
ALTER TABLE tagente_modulo ADD COLUMN dynamic_min bigint(20) default '0';
|
||||
ALTER TABLE tagente_modulo ADD COLUMN dynamic_next bigint(20) NOT NULL default '0';
|
||||
ALTER TABLE tagente_modulo ADD COLUMN dynamic_two_tailed tinyint(1) unsigned default '0';
|
||||
ALTER TABLE tagente_modulo ADD COLUMN parent_module_id NUMBER(10, 0);
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tnetwork_component`
|
||||
@ -101,3 +102,8 @@ ALTER TABLE tlayout ADD COLUMN background_color varchar(50) NOT NULL default '#F
|
||||
-- Table `tlayout_data`
|
||||
-- ---------------------------------------------------------------------
|
||||
ALTER TABLE tlayout_data ADD COLUMN type_graph varchar(50) NOT NULL default 'area';
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tagent_custom_fields`
|
||||
-- ---------------------------------------------------------------------
|
||||
INSERT INTO tagent_custom_fields (name) VALUES ('eHorusID');
|
||||
|
@ -245,7 +245,7 @@ foreach ($result as $row) {
|
||||
}
|
||||
$data[1] = ui_print_session_action_icon ($row['accion'], true);
|
||||
$data[1] .= $row["accion"];
|
||||
$data[2] = ui_print_help_tip($row['fecha'], true) . human_time_comparation($row['utimestamp']);
|
||||
$data[2] = ui_print_help_tip($row['fecha'], true) . ui_print_timestamp($row['utimestamp'], true);
|
||||
switch ($config['dbtype']) {
|
||||
case "mysql":
|
||||
case "postgresql":
|
||||
@ -299,7 +299,7 @@ html_print_table ($table);
|
||||
echo '<div style="width: '.$table->width.'" class="action-buttons">';
|
||||
echo '<a href="' .
|
||||
ui_get_full_url(false, false, false, false) . 'index.php?sec=gextensions&sec2=godmode/audit_log_csv&tipo_log='.$tipo_log.'&user_filter='.$user_filter.'&filter_text='.$filter_text.'&filter_hours_old='.$filter_hours_old.'&filter_ip='.$filter_ip.'"'.
|
||||
'target="_new">' .
|
||||
'>' .
|
||||
html_print_button (__('Export to CSV '), 'export_csv', false, '', 'class=sub upd', true, false). '</a>';
|
||||
echo '</div>';
|
||||
|
||||
|
@ -1022,7 +1022,7 @@ if ($update_module || $create_module) {
|
||||
|
||||
$throw_unknown_events = (bool)get_parameter('throw_unknown_events', false);
|
||||
//Set the event type that can show.
|
||||
$disabled_types_event = array(EVENTS_GOING_UNKNOWN => (int)$throw_unknown_events);
|
||||
$disabled_types_event = array(EVENTS_GOING_UNKNOWN => (int)!$throw_unknown_events);
|
||||
$disabled_types_event = io_json_mb_encode($disabled_types_event);
|
||||
|
||||
$module_macro_names = (array) get_parameter('module_macro_names', array());
|
||||
|
@ -427,7 +427,7 @@ else {
|
||||
$throw_unknown_events_check =
|
||||
policy_module_is_disable_type_event($__id_pol_mod, EVENTS_GOING_UNKNOWN);
|
||||
}
|
||||
$table_advanced->data[4][3] = __('Throw unknown events');
|
||||
$table_advanced->data[4][3] = __('Discard unknown events');
|
||||
$table_advanced->data[4][4] = html_print_checkbox('throw_unknown_events',
|
||||
1, $throw_unknown_events_check, true, $disabledBecauseInPolicy);
|
||||
$table_advanced->colspan[4][4] = 3;
|
||||
|
@ -570,7 +570,7 @@ if ($table->rowspan['edit10'][0] == 2) {
|
||||
else {
|
||||
$table->rowspan['edit10'][0] = $table->rowspan['edit10'][1] = 2;
|
||||
}
|
||||
$table->data['edit102'][2] = __('Throw unknown events');
|
||||
$table->data['edit102'][2] = __('Discard unknown events');
|
||||
|
||||
$table->data['edit102'][3] = html_print_select(
|
||||
array('' => __('No change'),
|
||||
|
@ -168,9 +168,9 @@ $table->data[8][3] = html_print_input_text ('max', $max, '', 5, 15, true) . ' '
|
||||
$table->data[9][0] = __('Unit');
|
||||
$table->data[9][1] = html_print_input_text ('unit', $unit, '', 12, 25, true);
|
||||
|
||||
$table->data[9][2] = __('Throw unknown events');
|
||||
$table->data[9][2] = __('Discard unknown events');
|
||||
$table->data[9][3] = html_print_checkbox('throw_unknown_events', 1,
|
||||
!network_components_is_disable_type_event($id, EVENTS_GOING_UNKNOWN), true);
|
||||
network_components_is_disable_type_event($id, EVENTS_GOING_UNKNOWN), true);
|
||||
|
||||
$table->data[10][0] = __('Critical instructions'). ui_print_help_tip(__("Instructions when the status is critical"), true);
|
||||
$table->data[10][1] = html_print_textarea ('critical_instructions', 2, 65, $critical_instructions, '', true);
|
||||
|
@ -100,6 +100,8 @@ $filter_event_no_validated = false;
|
||||
$filter_event_critical = false;
|
||||
$filter_event_warning = false;
|
||||
|
||||
$filter_event_type = false;
|
||||
|
||||
$event_graph_by_agent = false;
|
||||
$event_graph_by_user_validator = false;
|
||||
$event_graph_by_criticity = false;
|
||||
@ -425,6 +427,7 @@ switch ($action) {
|
||||
$filter_event_validated = $style['filter_event_validated'];
|
||||
$filter_event_critical = $style['filter_event_critical'];
|
||||
$filter_event_warning = $style['filter_event_warning'];
|
||||
$filter_event_type = json_decode($style['filter_event_type'], true);
|
||||
|
||||
$event_graph_by_agent = $style['event_graph_by_agent'];
|
||||
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
|
||||
@ -441,6 +444,7 @@ switch ($action) {
|
||||
$filter_event_validated = $style['filter_event_validated'];
|
||||
$filter_event_critical = $style['filter_event_critical'];
|
||||
$filter_event_warning = $style['filter_event_warning'];
|
||||
$filter_event_type = json_decode($style['filter_event_type'], true);
|
||||
|
||||
$event_graph_by_agent = $style['event_graph_by_agent'];
|
||||
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
|
||||
@ -1357,6 +1361,20 @@ You can of course remove the warnings, that's why we include the source and do n
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_event_type" style="" class="datos">
|
||||
<td style="font-weight:bold;"><?php echo __('Event type'); ?></td>
|
||||
<td>
|
||||
<?php
|
||||
$event_types_select = get_event_types();
|
||||
html_debug($filter_event_type);
|
||||
html_print_select ($event_types_select, 'filter_event_type[]',
|
||||
$filter_event_type, '', __('All'), 'all', false, true,
|
||||
false, '', false, false, false, false, false, '');
|
||||
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_event_graphs" style="" class="datos">
|
||||
<td style="font-weight:bold;"><?php echo __('Event graphs'); ?></td>
|
||||
<td>
|
||||
@ -1956,6 +1974,7 @@ $(document).ready (function () {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function create_custom_graph() {
|
||||
@ -2454,6 +2473,7 @@ function chooseType() {
|
||||
$("#row_percentil").hide();
|
||||
$("#agents_row").hide();
|
||||
$("#modules_row").hide();
|
||||
$("#row_event_type").hide();
|
||||
|
||||
// SLA list default state
|
||||
$("#sla_list").hide();
|
||||
@ -2482,6 +2502,7 @@ function chooseType() {
|
||||
$("#row_event_graph_by_user").show();
|
||||
$("#row_event_graph_by_criticity").show();
|
||||
$("#row_event_graph_by_validated").show();
|
||||
$("#row_event_type").show();
|
||||
|
||||
$("#row_filter_search").show();
|
||||
break;
|
||||
@ -2751,6 +2772,7 @@ function chooseType() {
|
||||
$("#row_event_graph_by_user").show();
|
||||
$("#row_event_graph_by_criticity").show();
|
||||
$("#row_event_graph_by_validated").show();
|
||||
$("#row_event_type").show();
|
||||
|
||||
$('#agent_autocomplete').hide();
|
||||
$('#agent_autocomplete_events').show();
|
||||
|
@ -1065,6 +1065,7 @@ switch ($action) {
|
||||
$filter_event_no_validated = get_parameter('filter_event_no_validated', 0);
|
||||
$filter_event_critical = get_parameter('filter_event_critical', 0);
|
||||
$filter_event_warning = get_parameter('filter_event_warning', 0);
|
||||
$filter_event_type = get_parameter('filter_event_type', '');
|
||||
|
||||
$event_graph_by_agent = get_parameter('event_graph_by_agent', 0);
|
||||
$event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0);
|
||||
@ -1135,7 +1136,7 @@ switch ($action) {
|
||||
$style['filter_event_validated'] = $filter_event_validated;
|
||||
$style['filter_event_critical'] = $filter_event_critical;
|
||||
$style['filter_event_warning'] = $filter_event_warning;
|
||||
|
||||
$style['filter_event_type'] = json_encode($filter_event_type);
|
||||
$style['event_graph_by_agent'] = $event_graph_by_agent;
|
||||
$style['event_graph_by_user_validator'] = $event_graph_by_user_validator;
|
||||
$style['event_graph_by_criticity'] = $event_graph_by_criticity;
|
||||
@ -1450,6 +1451,7 @@ switch ($action) {
|
||||
$event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0);
|
||||
$event_graph_by_criticity = get_parameter('event_graph_by_criticity', 0);
|
||||
$event_graph_validated_vs_unvalidated = get_parameter('event_graph_validated_vs_unvalidated', 0);
|
||||
$filter_event_type = get_parameter('filter_event_type', '');
|
||||
|
||||
$event_filter_search = get_parameter('filter_search', '');
|
||||
|
||||
@ -1458,6 +1460,7 @@ switch ($action) {
|
||||
$style['filter_event_validated'] = $filter_event_validated;
|
||||
$style['filter_event_critical'] = $filter_event_critical;
|
||||
$style['filter_event_warning'] = $filter_event_warning;
|
||||
$style['filter_event_type'] = json_encode($filter_event_type);
|
||||
|
||||
$style['event_graph_by_agent'] = $event_graph_by_agent;
|
||||
$style['event_graph_by_user_validator'] = $event_graph_by_user_validator;
|
||||
|
@ -76,6 +76,11 @@ $table->data[9][1] = html_print_input_text ('days_autodisable_deletion', $config
|
||||
$table->data[10][0] = __('Retention period of past special days') . ui_print_help_tip(__('This number is days to keep past special days. 0 means never remove.'), true);
|
||||
$table->data[10][1] = html_print_input_text ('num_past_special_days', $config["num_past_special_days"], '', 5, 5, true);
|
||||
|
||||
if (enterprise_installed ()) {
|
||||
$table->data[11][0] = __('Max. days before delete inventory data');
|
||||
$table->data[11][1] = html_print_input_text ('inventory_purge', $config["inventory_purge"], '', 5, 5, true);
|
||||
}
|
||||
|
||||
$table_other = new stdClass();
|
||||
$table_other->width = '100%';
|
||||
$table_other->class = 'databox filters';
|
||||
|
@ -447,6 +447,15 @@ $table_chars->data[$row][1] .= __('Line').' ' .
|
||||
$config["type_module_charts"] != 'area', true);
|
||||
$row++;
|
||||
|
||||
$table_chars->data[$row][0] = __('Type of interface charts');
|
||||
$table_chars->data[$row][1] = __('Area').' ' .
|
||||
html_print_radio_button ('type_interface_charts', 'area', '',
|
||||
$config["type_interface_charts"] == 'area', true).' ';
|
||||
$table_chars->data[$row][1] .= __('Line').' ' .
|
||||
html_print_radio_button ('type_interface_charts', 'line', '',
|
||||
$config["type_interface_charts"] != 'area', true);
|
||||
$row++;
|
||||
|
||||
$table_chars->data[$row][0] = __('Show only average');
|
||||
$table_chars->data[$row][0] .= ui_print_help_tip(__('Allows only show the average in graphs'), true);
|
||||
$table_chars->data[$row][1] = __('Yes').' ' .
|
||||
|
@ -273,7 +273,7 @@ $table->head[2] = __('Last contact') . ' ' .
|
||||
'<a href="?sec='.$sec.'&sec2=godmode/users/user_list&sort_field=last_connect&sort=up&pure='.$pure.'">' . html_print_image("images/sort_up.png", true, array("style" => $selectLastConnectUp )) . '</a>' .
|
||||
'<a href="?sec='.$sec.'&sec2=godmode/users/user_list&sort_field=last_connect&sort=down&pure='.$pure.'">' . html_print_image("images/sort_down.png", true, array("style" => $selectLastConnectDown)) . '</a>';
|
||||
$table->head[3] = __('Admin');
|
||||
$table->head[4] = __('Profile');
|
||||
$table->head[4] = __('Profile / Group');
|
||||
$table->head[5] = __('Description');
|
||||
$table->head[6] = '<span title="Operations">' . __('Op.') . '</span>';
|
||||
if (!defined('METACONSOLE')) {
|
||||
@ -445,8 +445,7 @@ foreach ($info as $user_id => $user_info) {
|
||||
$data[4] .= "<tr>";
|
||||
$data[4] .= "<td>";
|
||||
$data[4] .= profile_get_name ($row["id_perfil"]);
|
||||
$data[4] .= "</td>";
|
||||
$data[4] .= "<td align='right'>";
|
||||
$data[4] .= " / ";
|
||||
$data[4] .= groups_get_name ($row["id_grupo"], true);
|
||||
$data[4] .= "</td>";
|
||||
$data[4] .= "</tr>";
|
||||
|
BIN
pandora_console/images/icono_test.png
Normal file
BIN
pandora_console/images/icono_test.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
BIN
pandora_console/images/icono_test_active.png
Normal file
BIN
pandora_console/images/icono_test_active.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
BIN
pandora_console/images/status_sets/default/module_no_data_ball.png
Executable file → Normal file
BIN
pandora_console/images/status_sets/default/module_no_data_ball.png
Executable file → Normal file
Binary file not shown.
Before Width: | Height: | Size: 1022 B After Width: | Height: | Size: 240 B |
@ -22,7 +22,7 @@
|
||||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC161130';
|
||||
$build_version = 'PC161214';
|
||||
$pandora_version = 'v7.0dev';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
@ -28,8 +28,12 @@ function mysql_connect_db($host = null, $db = null, $user = null, $pass = null,
|
||||
if ($port === null)
|
||||
$port = $config["dbport"];
|
||||
|
||||
if ($config["mysqli"] === null && extension_loaded(mysqli))
|
||||
if ($config["mysqli"] === null && extension_loaded(mysqli)) {
|
||||
$config["mysqli"] = true;
|
||||
}
|
||||
else {
|
||||
$config["mysqli"] = false;
|
||||
}
|
||||
|
||||
// Non-persistent connection: This will help to avoid mysql errors like "has gone away" or locking problems
|
||||
// If you want persistent connections change it to mysql_pconnect().
|
||||
|
@ -2293,6 +2293,11 @@ function print_audit_csv ($data) {
|
||||
global $config;
|
||||
global $graphic_type;
|
||||
|
||||
if (!$data) {
|
||||
echo __('No data found to export');
|
||||
return 0;
|
||||
}
|
||||
|
||||
$config['ignore_callback'] = true;
|
||||
while (@ob_end_clean ());
|
||||
|
||||
@ -2300,20 +2305,20 @@ function print_audit_csv ($data) {
|
||||
header("Content-Disposition: attachment; filename=audit_log".date("Y-m-d_His").".csv");
|
||||
header("Pragma: no-cache");
|
||||
header("Expires: 0");
|
||||
|
||||
// BOM
|
||||
print pack('C*',0xEF,0xBB,0xBF);
|
||||
|
||||
if ($data) {
|
||||
echo __('User') . ';' .
|
||||
__('Action') . ';' .
|
||||
__('Date') . ';' .
|
||||
__('Source ID') . ';' .
|
||||
__('Comments') ."\n";
|
||||
foreach ($data as $line) {
|
||||
echo io_safe_output($line['id_usuario']) . ';' . io_safe_output($line['accion']) . ';' . $line['fecha'] . ';' . $line['ip_origen'] . ';'. io_safe_output($line['descripcion']). "\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo __('No data found to export');
|
||||
echo __('User') . ';' .
|
||||
__('Action') . ';' .
|
||||
__('Date') . ';' .
|
||||
__('Source ID') . ';' .
|
||||
__('Comments') ."\n";
|
||||
foreach ($data as $line) {
|
||||
echo io_safe_output($line['id_usuario']) . ';' . io_safe_output($line['accion']) . ';' . $line['fecha'] . ';' . $line['ip_origen'] . ';'. io_safe_output($line['descripcion']). "\n";
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2664,7 +2669,13 @@ function pandora_setlocale() {
|
||||
}
|
||||
|
||||
function remove_right_zeros ($value) {
|
||||
$value_to_return = rtrim($value, "0");
|
||||
return rtrim($value_to_return, ".");
|
||||
$is_decimal = explode(".", $value);
|
||||
if (isset($is_decimal[1])) {
|
||||
$value_to_return = rtrim($value, "0");
|
||||
return rtrim($value_to_return, ".");
|
||||
}
|
||||
else {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -132,7 +132,7 @@ function alerts_get_alerts($id_group = 0, $free_search = "", $status = "all", $s
|
||||
*
|
||||
* @return mixed Return id if the group have any alert is fired or false is not.
|
||||
*/
|
||||
function alerts_get_event_status_group($idGroup, $type = "alert_fired", $query = 'AND 1=1') {
|
||||
function alerts_get_event_status_group($idGroup, $type = "alert_fired", $query = 'AND 1=1', $agents = null) {
|
||||
global $config;
|
||||
|
||||
$return = false;
|
||||
@ -151,9 +151,14 @@ function alerts_get_event_status_group($idGroup, $type = "alert_fired", $query =
|
||||
$typeWhere = ' AND event_type IN (' . implode(',', $temp) . ')';
|
||||
}
|
||||
|
||||
$agents = agents_get_group_agents($idGroup, false, "lower", false);
|
||||
|
||||
$idAgents = array_keys($agents);
|
||||
if ($agents == null) {
|
||||
$agents = agents_get_group_agents($idGroup, false, "lower", false);
|
||||
|
||||
$idAgents = array_keys($agents);
|
||||
}
|
||||
else {
|
||||
$idAgents = array_values($agents);
|
||||
}
|
||||
|
||||
$result = db_get_all_rows_sql('SELECT id_evento
|
||||
FROM tevento
|
||||
|
@ -1483,6 +1483,308 @@ function api_get_agent_modules($thrash1, $thrash2, $other, $thrash3) {
|
||||
}
|
||||
}
|
||||
|
||||
function api_get_db_uncompress_module_data ($id_agente_modulo,$tstart,$other){
|
||||
global $config;
|
||||
|
||||
if (!isset($id_agente_modulo)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!isset($tstart)) || ($tstart === false)) {
|
||||
// Return data from the begining
|
||||
//$tstart = 0;
|
||||
$tstart = 0;
|
||||
}
|
||||
$tend = $other['data'];
|
||||
if ((!isset($tend)) || ($tend === false)) {
|
||||
// Return data until now
|
||||
$tend = time();
|
||||
}
|
||||
|
||||
if ($tstart > $tend) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$search_historydb = false;
|
||||
$table = "tagente_datos";
|
||||
|
||||
$module = modules_get_agentmodule($id_agente_modulo);
|
||||
|
||||
if ($module === false){
|
||||
// module not exists
|
||||
return false;
|
||||
}
|
||||
$module_type = $module['id_tipo_modulo'];
|
||||
$module_type_str = modules_get_type_name ($module_type);
|
||||
if (strstr ($module_type_str, 'string') !== false) {
|
||||
$table = "tagente_datos_string";
|
||||
}
|
||||
|
||||
// Get first available utimestamp in active DB
|
||||
$query = " SELECT utimestamp, datos FROM $table ";
|
||||
$query .= " WHERE id_agente_modulo=$id_agente_modulo AND utimestamp < $tstart";
|
||||
$query .= " ORDER BY utimestamp DESC LIMIT 1";
|
||||
|
||||
|
||||
$ret = db_get_all_rows_sql( $query , $search_historydb);
|
||||
|
||||
|
||||
if ( ( $ret === false ) || (( isset($ret[0]["utimestamp"]) && ($ret[0]["utimestamp"] > $tstart )))) {
|
||||
// Value older than first retrieved from active DB
|
||||
$search_historydb = true;
|
||||
|
||||
$ret = db_get_all_rows_sql( $query , $search_historydb);
|
||||
}
|
||||
else {
|
||||
$first_data["utimestamp"] = $ret[0]["utimestamp"];
|
||||
$first_data["datos"] = $ret[0]["datos"];
|
||||
}
|
||||
|
||||
if ( ( $ret === false ) || (( isset($ret[0]["utimestamp"]) && ($ret[0]["utimestamp"] > $tstart )))) {
|
||||
// No previous data. -> not init
|
||||
// Avoid false unknown status
|
||||
$first_data["utimestamp"] = time();
|
||||
$first_data["datos"] = false;
|
||||
}
|
||||
else {
|
||||
$first_data["utimestamp"] = $ret[0]["utimestamp"];
|
||||
$first_data["datos"] = $ret[0]["datos"];
|
||||
}
|
||||
|
||||
$query = " SELECT utimestamp, datos FROM $table ";
|
||||
$query .= " WHERE id_agente_modulo=$id_agente_modulo AND utimestamp >= $tstart AND utimestamp <= $tend";
|
||||
$query .= " ORDER BY utimestamp ASC";
|
||||
|
||||
// Retrieve all data from module in given range
|
||||
$raw_data = db_get_all_rows_sql($query, $search_historydb);
|
||||
|
||||
if (($raw_data === false) && ($ret === false)) {
|
||||
// No data
|
||||
return false;
|
||||
}
|
||||
|
||||
// Retrieve going unknown events in range
|
||||
$unknown_events = db_get_module_ranges_unknown($id_agente_modulo, $tstart, $tend);
|
||||
|
||||
// Retrieve module_interval to build the template
|
||||
$module_interval = modules_get_interval ($id_agente_modulo);
|
||||
$slice_size = $module_interval;
|
||||
|
||||
|
||||
|
||||
// We'll return a bidimensional array
|
||||
// Structure returned: schema:
|
||||
//
|
||||
// uncompressed_data =>
|
||||
// pool_id (int)
|
||||
// utimestamp (start of current slice)
|
||||
// data
|
||||
// array
|
||||
// utimestamp
|
||||
// datos
|
||||
|
||||
$return = array();
|
||||
// Point current_timestamp to begin of the set and initialize flags
|
||||
$current_timestamp = $tstart;
|
||||
$last_inserted_value = $first_data["datos"];
|
||||
$last_timestamp = $first_data["utimestamp"];
|
||||
$data_found = 0;
|
||||
|
||||
// Build template
|
||||
$pool_id = 0;
|
||||
$now = time();
|
||||
|
||||
$in_unknown_status = 0;
|
||||
if (is_array($unknown_events)) {
|
||||
$current_unknown = array_shift($unknown_events);
|
||||
}
|
||||
|
||||
while ( $current_timestamp < $tend ) {
|
||||
$expected_data_generated = 0;
|
||||
|
||||
$return[$pool_id]["data"] = array();
|
||||
$tmp_data = array();
|
||||
$data_found = 0;
|
||||
|
||||
if (is_array($unknown_events)) {
|
||||
$i = 0;
|
||||
while ($current_timestamp >= $unknown_events[$i]["time_to"] ) {
|
||||
// Skip unknown events in past
|
||||
array_splice($unknown_events, $i,1);
|
||||
$i++;
|
||||
if (!isset($unknown_events[$i])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isset($current_unknown)) {
|
||||
|
||||
// check if recovered from unknown status
|
||||
if(is_array($unknown_events) && isset($current_unknown)) {
|
||||
if ( (($current_timestamp+$slice_size) > $current_unknown["time_to"])
|
||||
&& ($current_timestamp < $current_unknown["time_to"])
|
||||
&& ($in_unknown_status == 1) ) {
|
||||
// Recovered from unknown
|
||||
|
||||
if ( ($current_unknown["time_to"] > $current_timestamp)
|
||||
&& ($expected_data_generated == 0) ) {
|
||||
// also add the "expected" data
|
||||
$tmp_data["utimestamp"] = $current_timestamp;
|
||||
if ($in_unknown_status == 1) {
|
||||
$tmp_data["datos"] = null;
|
||||
}
|
||||
else {
|
||||
$tmp_data["datos"] = $last_inserted_value;
|
||||
}
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
$expected_data_generated = 1;
|
||||
}
|
||||
|
||||
|
||||
$tmp_data["utimestamp"] = $current_unknown["time_to"];
|
||||
$tmp_data["datos"] = $last_inserted_value;
|
||||
// debug purpose
|
||||
$tmp_data["obs"] = "event recovery data";
|
||||
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
$data_found = 1;
|
||||
$in_unknown_status = 0;
|
||||
}
|
||||
|
||||
if ( (($current_timestamp+$slice_size) > $current_unknown["time_from"])
|
||||
&& (($current_timestamp+$slice_size) < $current_unknown["time_to"])
|
||||
&& ($in_unknown_status == 0) ) {
|
||||
// Add unknown state detected
|
||||
|
||||
if ( $current_unknown["time_from"] < ($current_timestamp+$slice_size)) {
|
||||
if ( ($current_unknown["time_from"] > $current_timestamp)
|
||||
&& ($expected_data_generated == 0) ) {
|
||||
// also add the "expected" data
|
||||
$tmp_data["utimestamp"] = $current_timestamp;
|
||||
if ($in_unknown_status == 1) {
|
||||
$tmp_data["datos"] = null;
|
||||
}
|
||||
else {
|
||||
$tmp_data["datos"] = $last_inserted_value;
|
||||
}
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
$expected_data_generated = 1;
|
||||
}
|
||||
|
||||
$tmp_data["utimestamp"] = $current_unknown["time_from"];
|
||||
$tmp_data["datos"] = null;
|
||||
// debug purpose
|
||||
$tmp_data["obs"] = "event data";
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
$data_found = 1;
|
||||
}
|
||||
$in_unknown_status = 1;
|
||||
}
|
||||
|
||||
if ( ($in_unknown_status == 0) && ($current_timestamp >= $current_unknown["time_to"]) ) {
|
||||
$current_unknown = array_shift($unknown_events);
|
||||
}
|
||||
}
|
||||
} // unknown events handle
|
||||
}
|
||||
|
||||
// Search for data
|
||||
$i=0;
|
||||
|
||||
if (is_array($raw_data)) {
|
||||
foreach ($raw_data as $data) {
|
||||
if ( ($data["utimestamp"] >= $current_timestamp)
|
||||
&& ($data["utimestamp"] < ($current_timestamp+$slice_size)) ) {
|
||||
// Data in block, push in, and remove from $raw_data (processed)
|
||||
|
||||
if ( ($data["utimestamp"] > $current_timestamp)
|
||||
&& ($expected_data_generated == 0) ) {
|
||||
// also add the "expected" data
|
||||
$tmp_data["utimestamp"] = $current_timestamp;
|
||||
if ($in_unknown_status == 1) {
|
||||
$tmp_data["datos"] = null;
|
||||
}
|
||||
else {
|
||||
$tmp_data["datos"] = $last_inserted_value;
|
||||
}
|
||||
$tmp_data["obs"] = "expected data";
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
$expected_data_generated = 1;
|
||||
}
|
||||
|
||||
$tmp_data["utimestamp"] = intval($data["utimestamp"]);
|
||||
$tmp_data["datos"] = $data["datos"];
|
||||
// debug purpose
|
||||
$tmp_data["obs"] = "real data";
|
||||
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
|
||||
$last_inserted_value = $data["datos"];
|
||||
$last_timestamp = intval($data["utimestamp"]);
|
||||
|
||||
unset($raw_data[$i]);
|
||||
$data_found = 1;
|
||||
$in_unknown_status = 0;
|
||||
}
|
||||
elseif ($data["utimestamp"] > ($current_timestamp+$slice_size)) {
|
||||
// Data in future, stop searching new ones
|
||||
break;
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($data_found == 0) {
|
||||
// No data found, lug the last_value until SECONDS_1DAY + 2*modules_get_interval
|
||||
// UNKNOWN!
|
||||
|
||||
if (($current_timestamp > $now) || (($current_timestamp - $last_timestamp) > (SECONDS_1DAY + 2*$module_interval))) {
|
||||
if (isset($last_inserted_value)) {
|
||||
// unhandled unknown status control
|
||||
$unhandled_time_unknown = $current_timestamp - (SECONDS_1DAY + 2*$module_interval) - $last_timestamp;
|
||||
if ($unhandled_time_unknown > 0) {
|
||||
// unhandled unknown status detected. Add to previous pool
|
||||
$tmp_data["utimestamp"] = intval($last_timestamp) + (SECONDS_1DAY + 2*$module_interval);
|
||||
$tmp_data["datos"] = null;
|
||||
// debug purpose
|
||||
$tmp_data["obs"] = "unknown extra";
|
||||
// add to previous pool if needed
|
||||
if (isset($return[$pool_id-1])) {
|
||||
array_push($return[$pool_id-1]["data"], $tmp_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
$last_inserted_value = null;
|
||||
}
|
||||
|
||||
$tmp_data["utimestamp"] = $current_timestamp;
|
||||
|
||||
if ($in_unknown_status == 1) {
|
||||
$tmp_data["datos"] = null;
|
||||
}
|
||||
else {
|
||||
$tmp_data["datos"] = $last_inserted_value;
|
||||
}
|
||||
// debug purpose
|
||||
$tmp_data["obs"] = "virtual data";
|
||||
|
||||
$return[$pool_id]["utimestamp"] = $current_timestamp;
|
||||
array_push($return[$pool_id]["data"], $tmp_data);
|
||||
}
|
||||
|
||||
$pool_id++;
|
||||
$current_timestamp += $slice_size;
|
||||
|
||||
}
|
||||
$data = array('type' => 'array', 'data' => $return);
|
||||
returnData('json', $return, ';');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get modules id for an agent, and print the result like a csv.
|
||||
|
@ -407,6 +407,10 @@ function config_update_config () {
|
||||
$error_update[] = __('Small Operation Step to purge old data');
|
||||
if (!config_update_value ('num_past_special_days', get_parameter ('num_past_special_days')))
|
||||
$error_update[] = __('Retention period of past special days');
|
||||
if (isset($config['enterprise_installed']) && $config['enterprise_installed'] == 1) {
|
||||
if (!config_update_value ('inventory_purge', get_parameter ('inventory_purge')))
|
||||
$error_update[] = __('Max. days before delete inventory data');
|
||||
}
|
||||
/////////////
|
||||
break;
|
||||
|
||||
@ -514,6 +518,8 @@ function config_update_config () {
|
||||
$error_update[] = __('Default line thickness for the Custom Graph.');
|
||||
if (!config_update_value ('type_module_charts', (string) get_parameter('type_module_charts', 'area')))
|
||||
$error_update[] = __('Default type of module charts.');
|
||||
if (!config_update_value ('type_interface_charts', (string) get_parameter('type_interface_charts', 'line')))
|
||||
$error_update[] = __('Default type of interface charts.');
|
||||
if (!config_update_value ('only_average', (bool) get_parameter('only_average', false)))
|
||||
$error_update[] = __('Default show only average or min and max');
|
||||
if (!config_update_value ('render_proc', (bool) get_parameter('render_proc', false)))
|
||||
@ -853,6 +859,12 @@ function config_process_config () {
|
||||
config_update_value ('num_past_special_days', 0);
|
||||
}
|
||||
|
||||
if (isset($config['enterprise_installed'])) {
|
||||
if (!isset($config['inventory_purge'])) {
|
||||
config_update_value ('inventory_purge', 21);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset ($config["event_purge"])) {
|
||||
config_update_value ('event_purge', 15);
|
||||
}
|
||||
@ -1515,6 +1527,10 @@ function config_process_config () {
|
||||
if (!isset($config['type_module_charts'])) {
|
||||
config_update_value ('type_module_charts', 'area');
|
||||
}
|
||||
|
||||
if (!isset($config['type_interface_charts'])) {
|
||||
config_update_value ('type_interface_charts', 'line');
|
||||
}
|
||||
|
||||
if (!isset($config['render_proc'])) {
|
||||
config_update_value ('render_proc', 0);
|
||||
|
@ -168,11 +168,21 @@ function custom_graphs_print($id_graph, $height, $width, $period,
|
||||
|
||||
global $config;
|
||||
|
||||
if ($id_graph == 0) {
|
||||
$graph_conf['stacked'] = CUSTOM_GRAPH_LINE;
|
||||
if ($from_interface) {
|
||||
if ($config["type_interface_charts"] == 'line') {
|
||||
$graph_conf['stacked'] = CUSTOM_GRAPH_LINE;
|
||||
}
|
||||
else {
|
||||
$graph_conf['stacked'] = CUSTOM_GRAPH_AREA;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$graph_conf = db_get_row('tgraph', 'id_graph', $id_graph);
|
||||
if ($id_graph == 0) {
|
||||
$graph_conf['stacked'] = CUSTOM_GRAPH_LINE;
|
||||
}
|
||||
else {
|
||||
$graph_conf = db_get_row('tgraph', 'id_graph', $id_graph);
|
||||
}
|
||||
}
|
||||
|
||||
if ($stacked === null) {
|
||||
|
@ -1187,7 +1187,8 @@ function events_print_type_description ($type, $return = false) {
|
||||
function events_get_group_events ($id_group, $period, $date,
|
||||
$filter_event_validated = false, $filter_event_critical = false,
|
||||
$filter_event_warning = false, $filter_event_no_validated = false,
|
||||
$filter_event_search = false, $meta = false, $history = false) {
|
||||
$filter_event_search = false, $meta = false, $history = false,
|
||||
$filter_event_type = false) {
|
||||
|
||||
global $config;
|
||||
|
||||
@ -1223,6 +1224,28 @@ function events_get_group_events ($id_group, $period, $date,
|
||||
' OR id_evento LIKE "%' . io_safe_input($filter_event_search) . '%")';
|
||||
}
|
||||
|
||||
if (!empty($filter_event_type)) {
|
||||
$sql_where .= ' AND (';
|
||||
$type = array();
|
||||
foreach ($filter_event_type as $event_type) {
|
||||
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") {
|
||||
$type[] = " event_type LIKE '%$event_type%' ";
|
||||
}
|
||||
else if ($event_type == "not_normal") {
|
||||
$type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') ";
|
||||
}
|
||||
else if ($event_type != "all") {
|
||||
$type[] = " event_type = '" . $event_type."'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sql_where .= implode(' OR ', $type) . ')';
|
||||
}
|
||||
|
||||
$sql_where .= sprintf('
|
||||
AND id_grupo IN (%s)
|
||||
AND utimestamp > %d
|
||||
@ -1308,7 +1331,7 @@ function events_get_group_events_steps ($begin, &$result, $id_group, $period, $d
|
||||
function events_get_agent ($id_agent, $period, $date = 0,
|
||||
$filter_event_validated = false, $filter_event_critical = false,
|
||||
$filter_event_warning = false, $filter_event_no_validated = false,
|
||||
$history = false) {
|
||||
$history = false, $filter_event_type = false) {
|
||||
|
||||
if (!is_numeric ($date)) {
|
||||
$date = strtotime ($date);
|
||||
@ -1345,6 +1368,28 @@ function events_get_agent ($id_agent, $period, $date = 0,
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($filter_event_type)) {
|
||||
$sql_where .= ' AND (';
|
||||
$type = array();
|
||||
foreach ($filter_event_type as $event_type) {
|
||||
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") {
|
||||
$type[] = " event_type LIKE '%$event_type%' ";
|
||||
}
|
||||
else if ($event_type == "not_normal") {
|
||||
$type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') ";
|
||||
}
|
||||
else if ($event_type != "all") {
|
||||
$type[] = " event_type = '" . $event_type."'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sql_where .= implode(' OR ', $type) . ')';
|
||||
}
|
||||
|
||||
$sql_where .= sprintf(' AND id_agente = %d AND utimestamp > %d
|
||||
AND utimestamp <= %d ', $id_agent, $datelimit, $date);
|
||||
|
||||
|
@ -1877,7 +1877,7 @@ function graphic_combined_module ($module_list, $weight_list, $period,
|
||||
$height, $color, $module_name_list, $long_index,
|
||||
ui_get_full_url("images/image_problem.opaque.png", false, false, false),
|
||||
$title, "", $homeurl, $water_mark, $config['fontpath'],
|
||||
$fixed_font_size, $unit, $ttl, array(), array(), 0, 0, '',
|
||||
$fixed_font_size, $unit, $ttl, array(), array(), $yellow_threshold, $red_threshold, '',
|
||||
false, '', true, $background_color,$dashboard, $vconsole);
|
||||
break;
|
||||
default:
|
||||
|
@ -53,7 +53,7 @@ function modules_is_disable_type_event($id_agent_module = false, $type_event = f
|
||||
if ($id_agent_module === false) {
|
||||
switch ($type_event) {
|
||||
case EVENTS_GOING_UNKNOWN:
|
||||
return true;
|
||||
return false;
|
||||
break;
|
||||
case EVENTS_UNKNOWN:
|
||||
return false;
|
||||
@ -118,7 +118,7 @@ function modules_is_disable_type_event($id_agent_module = false, $type_event = f
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1262,24 +1262,26 @@ function reporting_event_report_group($report, $content,
|
||||
$return["description"] = $content["description"];
|
||||
$return["date"] = reporting_get_date_text($report, $content);
|
||||
|
||||
$event_filter = $content['style'];
|
||||
|
||||
$filter_event_no_validated = $content['style']['filter_event_no_validated'];
|
||||
$filter_event_validated = $content['style']['filter_event_validated'];
|
||||
$filter_event_critical = $content['style']['filter_event_critical'];
|
||||
$filter_event_warning = $content['style']['filter_event_warning'];
|
||||
$filter_event_filter_search = $content['style']['event_filter_search'];
|
||||
$filter_event_no_validated = $event_filter['filter_event_no_validated'];
|
||||
$filter_event_validated = $event_filter['filter_event_validated'];
|
||||
$filter_event_critical = $event_filter['filter_event_critical'];
|
||||
$filter_event_warning = $event_filter['filter_event_warning'];
|
||||
$filter_event_filter_search = $event_filter['event_filter_search'];
|
||||
$filter_event_type = json_decode($event_filter['filter_event_type'],true);
|
||||
|
||||
$event_graph_by_agent = $content['style']['event_graph_by_agent'];
|
||||
$event_graph_by_user_validator = $content['style']['event_graph_by_user_validator'];
|
||||
$event_graph_by_criticity = $content['style']['event_graph_by_criticity'];
|
||||
$event_graph_validated_vs_unvalidated = $content['style']['event_graph_validated_vs_unvalidated'];
|
||||
$event_graph_by_agent = $event_filter['event_graph_by_agent'];
|
||||
$event_graph_by_user_validator = $event_filter['event_graph_by_user_validator'];
|
||||
$event_graph_by_criticity = $event_filter['event_graph_by_criticity'];
|
||||
$event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated'];
|
||||
|
||||
|
||||
$data = reporting_get_group_detailed_event(
|
||||
$content['id_group'], $content['period'], $report["datetime"],
|
||||
true, true, $filter_event_validated, $filter_event_critical,
|
||||
$filter_event_warning, $filter_event_no_validated,
|
||||
$filter_event_filter_search, 'hash', $history);
|
||||
$filter_event_filter_search, 'hash', $history, $filter_event_type);
|
||||
|
||||
if (empty($data)) {
|
||||
$return['failed'] = __('No events');
|
||||
@ -1410,6 +1412,8 @@ function reporting_event_report_group($report, $content,
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
$return['total_events'] = count($return['data']);
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
@ -1454,6 +1458,8 @@ function reporting_event_report_module($report, $content) {
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
$return['total_events'] = count($return['data']);
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
@ -2158,6 +2164,7 @@ function reporting_event_report_agent($report, $content,
|
||||
$filter_event_validated = $style['filter_event_validated'];
|
||||
$filter_event_critical = $style['filter_event_critical'];
|
||||
$filter_event_warning = $style['filter_event_warning'];
|
||||
$filter_event_type = json_decode($style['filter_event_type'], true);
|
||||
|
||||
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
|
||||
$event_graph_by_criticity = $style['event_graph_by_criticity'];
|
||||
@ -2173,7 +2180,8 @@ function reporting_event_report_agent($report, $content,
|
||||
$filter_event_warning,
|
||||
$filter_event_no_validated,
|
||||
true,
|
||||
$history);
|
||||
$history,
|
||||
$filter_event_type);
|
||||
|
||||
|
||||
|
||||
@ -2270,6 +2278,8 @@ function reporting_event_report_agent($report, $content,
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
$return['total_events'] = count($return['data']);
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
@ -6042,7 +6052,8 @@ function reporting_get_group_detailed_event ($id_group, $period = 0,
|
||||
$date = 0, $return = false, $html = true,
|
||||
$filter_event_validated = false, $filter_event_critical = false,
|
||||
$filter_event_warning = false, $filter_event_no_validated = false,
|
||||
$filter_event_filter_search = null, $return_type = false, $history = false) {
|
||||
$filter_event_filter_search = null, $return_type = false,
|
||||
$history = false, $filter_event_type = false) {
|
||||
|
||||
global $config;
|
||||
|
||||
@ -6074,7 +6085,7 @@ function reporting_get_group_detailed_event ($id_group, $period = 0,
|
||||
$events = events_get_group_events($id_group, $period, $date,
|
||||
$filter_event_validated, $filter_event_critical,
|
||||
$filter_event_warning, $filter_event_no_validated,
|
||||
$filter_event_filter_search, false, $history);
|
||||
$filter_event_filter_search, false, $history, $filter_event_type);
|
||||
|
||||
if ($return_type === 'hash') {
|
||||
return $events;
|
||||
@ -6270,7 +6281,8 @@ function reporting_get_module_detailed_event ($id_modules, $period = 0,
|
||||
function reporting_get_agents_detailed_event ($id_agents, $period = 0,
|
||||
$date = 0, $return = false, $filter_event_validated = false,
|
||||
$filter_event_critical = false, $filter_event_warning = false,
|
||||
$filter_event_no_validated = false, $only_data = false, $history = false) {
|
||||
$filter_event_no_validated = false, $only_data = false,
|
||||
$history = false, $filter_event_type = false) {
|
||||
|
||||
global $config;
|
||||
|
||||
@ -6296,8 +6308,8 @@ function reporting_get_agents_detailed_event ($id_agents, $period = 0,
|
||||
(int)$period,
|
||||
(int)$date,
|
||||
$filter_event_validated, $filter_event_critical,
|
||||
$filter_event_warning, $filter_event_no_validated,
|
||||
$history);
|
||||
$filter_event_warning, $filter_event_no_validated,
|
||||
$history, $filter_event_type);
|
||||
|
||||
if (empty($event)) {
|
||||
$event = array();
|
||||
|
@ -129,10 +129,8 @@ function reporting_html_print_report($report, $mini = false) {
|
||||
$item['date']['to'],
|
||||
$label);
|
||||
|
||||
if ($item["description"] != "") {
|
||||
$table->data['description_row']['description'] = $item["description"];
|
||||
$table->data['description_row']['description'] = $item["description"]." - Total events: ".$item["total_events"];
|
||||
$table->colspan['description_row']['description'] = 3;
|
||||
}
|
||||
|
||||
switch ($item['type']) {
|
||||
case 'availability':
|
||||
|
@ -247,6 +247,42 @@ function treeview_printModuleTable($id_module, $server_data = false, $no_head =
|
||||
|
||||
$last_data_str .= " ";
|
||||
$last_data_str .= html_print_image('images/clock2.png', true, array('title' => $last_data["timestamp"], 'width' => '18px'));
|
||||
|
||||
$is_snapshot = is_snapshot_data ( $last_data["datos"] );
|
||||
|
||||
if (($config['command_snapshot']) && ($is_snapshot)) {
|
||||
$handle = 'snapshot_' . $module['id_agente_modulo'];
|
||||
$url = 'include/procesos.php?agente=' . $row['id_agente_modulo'];
|
||||
$win_handle = dechex(crc32($handle));
|
||||
if (! defined ('METACONSOLE')) {
|
||||
$link = "winopeng_var('operation/agentes/snapshot_view.php?" .
|
||||
"id=" . $module['id_agente_modulo'] .
|
||||
"&refr=" . $module['current_interval'] .
|
||||
"&label=" . rawurlencode(urlencode(io_safe_output($module['module_name']))) . "','" . $win_handle . "', 700,480)";
|
||||
}
|
||||
else{
|
||||
$link = "winopeng_var('$last_data[datos]','',700,480)";
|
||||
|
||||
}
|
||||
|
||||
if(!is_image_data($last_data["datos"])){
|
||||
$salida = '<a href="javascript:' . $link . '">' .
|
||||
html_print_image('images/default_list.png', true,
|
||||
array('border' => '0',
|
||||
'alt' => '',
|
||||
'title' => __('Snapshot view'))) . '</a> ';
|
||||
}
|
||||
else {
|
||||
$salida = '<a href="javascript:' . $link . '">' .
|
||||
html_print_image('images/photo.png', true,
|
||||
array('border' => '0',
|
||||
'alt' => '',
|
||||
'title' => __('Snapshot view'))) . '</a> ';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$last_data_str .= $salida;
|
||||
}
|
||||
else {
|
||||
$last_data_str = '<i>' . __('No data') . '</i>';
|
||||
@ -370,7 +406,7 @@ function treeview_printAlertsTable($id_module, $server_data = array(), $no_head
|
||||
$row['times_fired'] = __('Times fired');
|
||||
$row['last_fired'] = __('Last fired');
|
||||
$table2->data['titles'] = $row;
|
||||
html_debug($module_alerts, true);
|
||||
|
||||
foreach ($module_alerts as $module_alert) {
|
||||
$template_name = db_get_value('name','talert_templates','id',$module_alert['id_alert_template']);
|
||||
|
||||
|
BIN
pandora_console/include/languages/en.mo
Normal file → Executable file
BIN
pandora_console/include/languages/en.mo
Normal file → Executable file
Binary file not shown.
57888
pandora_console/include/languages/en.po
Normal file → Executable file
57888
pandora_console/include/languages/en.po
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
BIN
pandora_console/include/languages/en_GB.mo
Normal file → Executable file
BIN
pandora_console/include/languages/en_GB.mo
Normal file → Executable file
Binary file not shown.
62023
pandora_console/include/languages/en_GB.po
Normal file → Executable file
62023
pandora_console/include/languages/en_GB.po
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
BIN
pandora_console/include/languages/es.mo
Normal file → Executable file
BIN
pandora_console/include/languages/es.mo
Normal file → Executable file
Binary file not shown.
61427
pandora_console/include/languages/es.po
Normal file → Executable file
61427
pandora_console/include/languages/es.po
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -3509,6 +3509,17 @@ div.simple_value > a > span.text p
|
||||
font-size:13pt;
|
||||
top:8px;
|
||||
}
|
||||
.modalheaderh1{
|
||||
text-align:center;
|
||||
width:100%;
|
||||
height:37px;
|
||||
left:0px;
|
||||
background-color:#82b92e;
|
||||
color:white;
|
||||
position:relative;
|
||||
font-family:Nunito;
|
||||
font-size:13pt;
|
||||
}
|
||||
.modalclosex{
|
||||
cursor:pointer;
|
||||
display:inline;
|
||||
|
@ -71,7 +71,7 @@
|
||||
<div style='height: 10px'>
|
||||
<?php
|
||||
$version = '7.0dev';
|
||||
$build = '161130';
|
||||
$build = '161214';
|
||||
$banner = "v$version Build $build";
|
||||
|
||||
error_reporting(0);
|
||||
|
@ -349,7 +349,15 @@ echo "</div>";
|
||||
var $container = $(element);
|
||||
var $errorMessage = $('div#graph-error-message');
|
||||
var period = $container.data('period');
|
||||
var stacked = $container.data('stacked');
|
||||
var conf_stacked = '<?php echo $config['type_module_charts']; ?>';
|
||||
switch (conf_stacked) {
|
||||
case 'area':
|
||||
var stacked = 0;
|
||||
break;
|
||||
case 'line':
|
||||
var stacked = 2;
|
||||
break;
|
||||
}
|
||||
var date = $container.data('date');
|
||||
var height = $container.data('height');
|
||||
|
||||
|
@ -62,14 +62,14 @@ $label = get_parameter ("label");
|
||||
FROM tagente_estado
|
||||
WHERE id_agente_modulo = $id");
|
||||
|
||||
echo "<h2 id='title_snapshot_view'>";
|
||||
echo "<h2 style='text-align:center;' id='title_snapshot_view'>";
|
||||
echo __("Current data at");
|
||||
echo " ";
|
||||
echo $row["timestamp"];
|
||||
echo "</h2>";
|
||||
$datos = io_safe_output($row["datos"]);
|
||||
if (is_image_data($datos)) {
|
||||
echo '<img src="' . $datos . '" alt="image"/>';
|
||||
echo '<center><img src="' . $datos . '" alt="image"/></center>';
|
||||
}
|
||||
else {
|
||||
$datos = preg_replace ('/</', '<', $datos);
|
||||
|
@ -133,24 +133,30 @@ if (is_ajax ()) {
|
||||
|
||||
$id = get_parameter('id_row');
|
||||
$idGroup = get_parameter('id_group');
|
||||
|
||||
$agents = get_parameter('agents', null);
|
||||
|
||||
$query = ' AND id_evento > ' . $id;
|
||||
|
||||
$type = array();
|
||||
$alert = get_parameter('alert_fired');
|
||||
if ($alert == 'true') {
|
||||
$resultAlert = alerts_get_event_status_group($idGroup,
|
||||
'alert_fired', $query);
|
||||
'alert_fired', $query, $agents);
|
||||
}
|
||||
$critical = get_parameter('critical');
|
||||
if ($critical == 'true') {
|
||||
$resultCritical = alerts_get_event_status_group($idGroup,
|
||||
'going_up_critical', $query);
|
||||
'going_up_critical', $query, $agents);
|
||||
}
|
||||
$warning = get_parameter('warning');
|
||||
if ($warning == 'true') {
|
||||
$resultWarning = alerts_get_event_status_group($idGroup,
|
||||
'going_up_warning', $query);
|
||||
'going_up_warning', $query, $agents);
|
||||
}
|
||||
$unknown = get_parameter('unknown');
|
||||
if ($unknown == 'true') {
|
||||
$resultUnknown = alerts_get_event_status_group($idGroup,
|
||||
'going_unknown', $query, $agents);
|
||||
}
|
||||
|
||||
if ($resultAlert) {
|
||||
@ -165,6 +171,10 @@ if (is_ajax ()) {
|
||||
$return = array('fired' => $resultWarning,
|
||||
'sound' => $config['sound_warning']);
|
||||
}
|
||||
else if ($resultUnknown) {
|
||||
$return = array('fired' => $resultWarning,
|
||||
'sound' => $config['sound_alert']);
|
||||
}
|
||||
else {
|
||||
$return = array('fired' => 0);
|
||||
}
|
||||
@ -427,7 +437,7 @@ if ($config["pure"] == 0 || $meta) {
|
||||
echo ui_get_full_url('operation/events/sound_events.php');
|
||||
?>';
|
||||
|
||||
window.open(url, '<?php __('Sound Alerts'); ?>','width=300, height=300, toolbar=no, location=no, directories=no, status=no, menubar=no, resizable=yes');
|
||||
window.open(url, '<?php __('Sound Alerts'); ?>','width=400, height=380, toolbar=no, location=no, directories=no, status=no, menubar=no, resizable=no');
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
@ -819,33 +819,18 @@ if ($group_rep == 0) {
|
||||
$sql = "SELECT COUNT(id_evento)
|
||||
FROM $event_table
|
||||
WHERE 1=1 $sql_post";
|
||||
$total_events = (int) db_get_sql ($sql);
|
||||
}
|
||||
elseif ($group_rep == 1) {
|
||||
switch ($config["dbtype"]) {
|
||||
case "mysql":
|
||||
case "postgresql":
|
||||
$sql = "SELECT COUNT(1)
|
||||
FROM (SELECT 1
|
||||
FROM $event_table
|
||||
WHERE 1=1 $sql_post
|
||||
GROUP BY evento, id_agentmodule) t";
|
||||
break;
|
||||
case "oracle":
|
||||
$sql = "SELECT COUNT(1)
|
||||
FROM (SELECT 1
|
||||
FROM $event_table
|
||||
WHERE 1=1 $sql_post
|
||||
GROUP BY to_char(evento), id_agentmodule) t";
|
||||
break;
|
||||
}
|
||||
$total_events = events_get_events_grouped($sql_post, false,
|
||||
false, $meta, $history, true, false);
|
||||
}
|
||||
elseif ($group_rep == 2) {
|
||||
$sql = "SELECT COUNT(*) FROM (select id_agente as total from $event_table WHERE id_agente > 0
|
||||
$sql_post GROUP BY id_agente ORDER BY id_agente ) AS t";
|
||||
$total_events = (int) db_get_sql ($sql);
|
||||
}
|
||||
|
||||
$total_events = (int) db_get_sql ($sql);
|
||||
|
||||
if (empty ($result)) {
|
||||
$result = array ();
|
||||
}
|
||||
|
@ -44,6 +44,8 @@ if (! check_acl ($config['id_user'], 0, "ER") && ! check_acl ($config['id_user']
|
||||
return;
|
||||
}
|
||||
|
||||
$agents = agents_get_group_agents(0, false, "none", false, true);
|
||||
|
||||
echo "<html>";
|
||||
echo "<head>";
|
||||
echo "<title>" . __("Sound Events") . "</title>";
|
||||
@ -62,32 +64,40 @@ echo "<title>" . __("Sound Events") . "</title>";
|
||||
echo '<link rel="icon" href="../../images/pandora.ico" type="image/ico" />';
|
||||
echo '<link rel="stylesheet" href="../../include/styles/pandora.css" type="text/css" />';
|
||||
echo "</head>";
|
||||
echo "<body>";
|
||||
echo html_print_image('images/pandora_logo_head.png', true);
|
||||
echo "<h1 style='background: #66AA44; color: #fff;'>" . __("Sound console"). "</h1>";
|
||||
echo "<body style='max-width: 400px; max-height: 400px;'>";
|
||||
echo "<h1 class='modalheaderh1'>" . __("Sound console"). "</h1>";
|
||||
|
||||
$table = null;
|
||||
$table->width = '100%';
|
||||
|
||||
$table->size[0] = '10%';
|
||||
$table->size[1] = '90%';
|
||||
$table->style[0] = 'font-weight: bold; vertical-align: top;';
|
||||
$table->style[1] = 'font-weight: bold; vertical-align: top;';
|
||||
|
||||
$table->data[0][0] = __('Group');
|
||||
$table->data[0][1] = html_print_select_groups(false, $access, true, 'group', '', 'changeGroup();', '', 0, true);
|
||||
$table->data[1][0] = __('Type');
|
||||
$table->data[1][1] = html_print_checkbox('alert_fired', 'alert_fired', true, true, false, 'changeType();') . __('Alert fired') . '<br />' .
|
||||
$table->data[0][0] .= html_print_select_groups(false, $access, true, 'group', '', 'changeGroup();', '', 0, true) . '<br />' . '<br />';
|
||||
$table->data[0][0] .= __('Agent');
|
||||
$table->data[0][0] .= html_print_select($agents, 'id_agents[]', true, false, '', '', true, true);
|
||||
$table->data[0][1] = __('Type');
|
||||
$table->data[0][1] .= '<br />' . html_print_checkbox('alert_fired', 'alert_fired', true, true, false, 'changeType();') . __('Alert fired') . '<br />' .
|
||||
html_print_checkbox('critical', 'critical', true, true, false, 'changeType();') . __('Monitor critical') . '<br />' .
|
||||
html_print_checkbox('warning', 'warning', true, true, false, 'changeType();') . __('Monitor warning') . '<br />' .
|
||||
$table->data[2][0] = '';
|
||||
$table->data[2][1] = '<a href="javascript: toggleButton();">' .
|
||||
html_print_image("images/play.button.png", true, array("id" => "button")) .
|
||||
'</a>';
|
||||
$table->data[2][1] .= '<a href="javascript: ok();">' .
|
||||
html_print_image("images/ok.button.png", true,
|
||||
array("style" => "margin-left: 10px;")) . '</a>';
|
||||
html_print_checkbox('unknown', 'unknown', true, true, false, 'changeType();') . __('Monitor unknown') . '<br />' .
|
||||
html_print_checkbox('warning', 'warning', true, true, false, 'changeType();') . __('Monitor warning') . '<br />';
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
echo '<br />';
|
||||
|
||||
echo '<a href="javascript: toggleButton();">' .
|
||||
html_print_image("images/icono_play.png", true, array("id" => "button")) .
|
||||
'</a>';
|
||||
echo '<a href="javascript: ok();">' .
|
||||
html_print_image("images/icono_ok.png", true, array("style" => "margin-left: 15px;")) .
|
||||
'</a>';
|
||||
echo '<a href="javascript: test_sound_button();">' .
|
||||
html_print_image("images/icono_test.png", true, array("id" => "button_try", "style" => "margin-left: 15px;")) .
|
||||
'</a>';
|
||||
|
||||
?>
|
||||
<script src="../../include/javascript/jquery.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
@ -95,6 +105,7 @@ var group = 0;
|
||||
var alert_fired = true;
|
||||
var critical = true;
|
||||
var warning = true;
|
||||
var unknown = true;
|
||||
|
||||
var running = false;
|
||||
var fired = false;
|
||||
@ -105,14 +116,48 @@ var redBackground = false;
|
||||
|
||||
var button_play_status = "play";
|
||||
|
||||
var test_sound = false;
|
||||
|
||||
function test_sound_button() {
|
||||
if (!test_sound) {
|
||||
$("#button_try").attr('src', '../../images/icono_test_active.png');
|
||||
$('body').append("<audio src='../../include/sounds/Star_Trek_emergency_simulation.wav' autoplay='true' hidden='true' loop='false'>");
|
||||
test_sound = true;
|
||||
}
|
||||
else {
|
||||
$("#button_try").attr('src', '../../images/icono_test.png');
|
||||
$('body audio').remove();
|
||||
test_sound = false;
|
||||
}
|
||||
}
|
||||
|
||||
function changeGroup() {
|
||||
group = $("#group").val();
|
||||
|
||||
jQuery.post ("../../ajax.php",
|
||||
{"page" : "include/ajax/agent",
|
||||
"get_agents_group": 1,
|
||||
"id_group": group
|
||||
},
|
||||
function (data) {
|
||||
$("#id_agents").empty();
|
||||
$("#id_agents").style("size", 0);
|
||||
|
||||
jQuery.each (data, function (id, value) {
|
||||
if (value != "") {
|
||||
$("#id_agents").append('<option value="' + id + '">' + value + '</option>');
|
||||
}
|
||||
});
|
||||
},
|
||||
"json"
|
||||
);
|
||||
}
|
||||
|
||||
function changeType() {
|
||||
alert_fired = $("input[name=alert_fired]").attr('checked');
|
||||
critical = $("input[name=critical]").attr('checked');
|
||||
warning = $("input[name=warning]").attr('checked');
|
||||
unknown = $("input[name=unknown]").attr('checked');
|
||||
}
|
||||
|
||||
function toggleButton() {
|
||||
@ -120,14 +165,14 @@ function toggleButton() {
|
||||
if (button_play_status == 'pause') {
|
||||
//~ if ($("#button").attr('src') == '../../images/pause.button.png') {
|
||||
|
||||
$("#button").attr('src', '../../images/play.button.png');
|
||||
$("#button").attr('src', '../../images/icono_play.png');
|
||||
stopSound();
|
||||
|
||||
button_play_status = 'play';
|
||||
}
|
||||
else {
|
||||
|
||||
$("#button").attr('src', '../../images/pause.button.png');
|
||||
$("#button").attr('src', '../../images/icono_pausa.png');
|
||||
forgetPreviousEvents();
|
||||
startSound();
|
||||
|
||||
@ -152,17 +197,21 @@ function stopSound() {
|
||||
}
|
||||
|
||||
function startSound() {
|
||||
//running = true;
|
||||
running = true;
|
||||
}
|
||||
|
||||
function forgetPreviousEvents() {
|
||||
var agents = $("#id_agents").val();
|
||||
|
||||
jQuery.post ("../../ajax.php",
|
||||
{"page" : "operation/events/events",
|
||||
"get_events_fired": 1,
|
||||
"id_group": group,
|
||||
"agents[]" : agents,
|
||||
"alert_fired": alert_fired,
|
||||
"critical": critical,
|
||||
"warning": warning,
|
||||
"unknown": unknown,
|
||||
"id_row": id_row
|
||||
},
|
||||
function (data) {
|
||||
@ -177,15 +226,19 @@ function forgetPreviousEvents() {
|
||||
}
|
||||
|
||||
function check_event() {
|
||||
var agents = $("#id_agents").val();
|
||||
|
||||
if (running) {
|
||||
if (!fired) {
|
||||
jQuery.post ("../../ajax.php",
|
||||
{"page" : "operation/events/events",
|
||||
"get_events_fired": 1,
|
||||
"id_group": group,
|
||||
"agents[]" : agents,
|
||||
"alert_fired": alert_fired,
|
||||
"critical": critical,
|
||||
"warning": warning,
|
||||
"unknown": unknown,
|
||||
"id_row": id_row
|
||||
},
|
||||
function (data) {
|
||||
|
@ -317,7 +317,7 @@ if (check_acl ($config['id_user'], 0, "ER")
|
||||
|
||||
window.open(url,
|
||||
'<?php __('Sound Alerts'); ?>',
|
||||
'width=400, height=350, resizable=yes, toolbar=no, location=no, directories=no, status=no, menubar=no');
|
||||
'width=400, height=380, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no');
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0dev
|
||||
%define release 161130
|
||||
%define release 161214
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0dev
|
||||
%define release 161130
|
||||
%define release 161214
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
@ -66,7 +66,7 @@ INSERT INTO tconfig (token, value) VALUES ('graph_res','5');
|
||||
INSERT INTO tconfig (token, value) VALUES ('step_compact','1');
|
||||
INSERT INTO tconfig (token, value) VALUES ('db_scheme_first_version','6.0orc');
|
||||
INSERT INTO tconfig (token, value) VALUES('db_scheme_version','7.0dev');
|
||||
INSERT INTO tconfig (token, value) VALUES('db_scheme_build','PD161130');
|
||||
INSERT INTO tconfig (token, value) VALUES('db_scheme_build','PD161214');
|
||||
INSERT INTO tconfig (token, value) VALUES ('show_unknown','0');
|
||||
INSERT INTO tconfig (token, value) VALUES ('show_lastalerts','1');
|
||||
INSERT INTO tconfig (token, value) VALUES ('style','pandora');
|
||||
@ -1371,6 +1371,7 @@ EXECUTE IMMEDIATE 'ALTER TRIGGER tagent_custom_fields_inc DISABLE';
|
||||
INSERT INTO tagent_custom_fields VALUES (1,'Serial Number',0);
|
||||
INSERT INTO tagent_custom_fields VALUES (2,'Department',0);
|
||||
INSERT INTO tagent_custom_fields VALUES (3,'Additional ID',0);
|
||||
INSERT INTO tagent_custom_fields VALUES (4,'eHorusID',0);
|
||||
|
||||
-- Update curr val of sequence
|
||||
update_currval('tagent_custom_fields', 'id_field');
|
||||
|
@ -290,6 +290,7 @@ CREATE TABLE tagente_modulo (
|
||||
prediction_sample_window INTEGER default 0,
|
||||
prediction_samples INTEGER default 0,
|
||||
prediction_threshold INTEGER default 0,
|
||||
parent_module_id NUMBER(10, 0),
|
||||
CONSTRAINT t_agente_modulo_wizard_cons CHECK (wizard_level IN ('basic','advanced','nowizard'))
|
||||
);
|
||||
CREATE INDEX tagente_modulo_id_agente_idx ON tagente_modulo(id_agente);
|
||||
|
@ -252,6 +252,7 @@ CREATE TABLE IF NOT EXISTS `tagente_modulo` (
|
||||
`prediction_sample_window` int(10) default 0,
|
||||
`prediction_samples` int(4) default 0,
|
||||
`prediction_threshold` int(4) default 0,
|
||||
`parent_module_id` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_agente_modulo`),
|
||||
KEY `main_idx` (`id_agente_modulo`,`id_agente`),
|
||||
KEY `tam_agente` (`id_agente`),
|
||||
|
@ -1033,7 +1033,7 @@ INSERT INTO `tplugin` (`id`, `name`, `description`, `max_timeout`, `execute`, `p
|
||||
|
||||
INSERT INTO `tplugin` (`id`, `name`, `description`, `max_timeout`, `max_retries`, `execute`, `net_dst_opt`, `net_port_opt`, `user_opt`, `pass_opt`, `plugin_type`, `macros`, `parameters`) VALUES (9,'Packet Loss','Checks for dropped packages after X seconds of testing. It returns % of dropped packets. It uses ping flood mode to launch 50 consecutive pings to a remote destination. On local, stable networks, value should be 0.
',30,0,'/usr/share/pandora_server/util/plugin/packet_loss.sh','','','','',0,'{\"1\":{\"macro\":\"_field1_\",\"desc\":\"Test time\",\"help\":\"\",\"value\":\"8\",\"hide\":\"\"},\"2\":{\"macro\":\"_field2_\",\"desc\":\"Target IP\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"}}','_field1_ _field2_');
|
||||
|
||||
INSERT INTO `tagent_custom_fields` VALUES (1,'Serial Number',0),(2,'Department',0),(3,'Additional ID',0);
|
||||
INSERT INTO `tagent_custom_fields` VALUES (1,'Serial Number',0),(2,'Department',0),(3,'Additional ID',0),(4,'eHorusID',0);
|
||||
|
||||
INSERT INTO `ttag` VALUES (1,'network','Network equipment','http://artica.es','',''),(2,'critical','Critical modules','','',''),(3,'dmz','DMZ Network Zone','','',''),(4,'performance','Performance anda capacity modules','','',''),(5,'configuration','','','','');
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-server
|
||||
Version: 7.0dev-161130
|
||||
Version: 7.0dev-161214
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0dev-161130"
|
||||
pandora_version="7.0dev-161214"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
@ -43,7 +43,7 @@ our @EXPORT = qw(
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0dev";
|
||||
my $pandora_build = "161130";
|
||||
my $pandora_build = "161214";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -344,7 +344,14 @@ sub process_xml_data ($$$$$) {
|
||||
my $os = pandora_get_os ($dbh, $data->{'os_name'});
|
||||
my $group_id = $pa_config->{'autocreate_group'};
|
||||
if (! defined (get_group_name ($dbh, $group_id))) {
|
||||
if (defined ($data->{'group'}) && $data->{'group'} ne '') {
|
||||
if (defined ($data->{'group_id'}) && $data->{'group_id'} ne '') {
|
||||
$group_id = $data->{'group_id'};
|
||||
if (! defined (get_group_name ($dbh, $group_id))) {
|
||||
pandora_event ($pa_config, "Unable to create agent '$agent_name': group ID '" . $group_id . "' does not exist.", 0, 0, 0, 0, 0, 'error', 0, $dbh);
|
||||
logger($pa_config, "Group ID " . $group_id . " does not exist.", 3);
|
||||
return;
|
||||
}
|
||||
} elsif (defined ($data->{'group'}) && $data->{'group'} ne '') {
|
||||
$group_id = get_group_id ($dbh, $data->{'group'});
|
||||
if (! defined (get_group_name ($dbh, $group_id))) {
|
||||
pandora_event ($pa_config, "Unable to create agent '$agent_name': group '" . $data->{'group'} . "' does not exist.", 0, 0, 0, 0, 0, 'error', 0, $dbh);
|
||||
@ -556,6 +563,27 @@ sub process_xml_data ($$$$$) {
|
||||
}
|
||||
}
|
||||
|
||||
# Link modules
|
||||
foreach my $module_data (@{$data->{'module'}}) {
|
||||
|
||||
my $module_name = get_tag_value ($module_data, 'name', '');
|
||||
$module_name =~ s/\r//g;
|
||||
$module_name =~ s/\n//g;
|
||||
|
||||
# Unnamed module
|
||||
next if ($module_name eq '');
|
||||
|
||||
# No parent module defined
|
||||
my $parent_module_name = get_tag_value ($module_data, 'module_parent', undef);
|
||||
if (! defined ($parent_module_name)) {
|
||||
use Data::Dumper;
|
||||
print Dumper($module_data);
|
||||
next;
|
||||
}
|
||||
|
||||
link_modules($pa_config, $dbh, $agent_id, $module_name, $parent_module_name);
|
||||
}
|
||||
|
||||
# Process inventory modules
|
||||
enterprise_hook('process_inventory_data', [$pa_config, $data, $server_id, $agent_name,
|
||||
$interval, $timestamp, $dbh]);
|
||||
@ -667,7 +695,10 @@ sub process_module_data ($$$$$$$$$$) {
|
||||
|
||||
# The group name has to be translated to a group ID
|
||||
if (defined $module_conf->{'module_group'}) {
|
||||
$module_conf->{'id_module_group'} = get_module_group_id ($dbh, $module_conf->{'module_group'});
|
||||
my $id_group_module = get_module_group_id ($dbh, $module_conf->{'module_group'});
|
||||
if ( $id_group_module >= 0) {
|
||||
$module_conf->{'id_module_group'} = $id_group_module;
|
||||
}
|
||||
delete $module_conf->{'module_group'};
|
||||
}
|
||||
|
||||
@ -874,5 +905,25 @@ sub process_xml_server ($$$$) {
|
||||
pandora_update_server ($pa_config, $dbh, $data->{'server_name'}, 0, 1, $server_type, $threads, $modules, $version, $data->{'keepalive'});
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Link two modules
|
||||
###############################################################################
|
||||
sub link_modules {
|
||||
my ($pa_config, $dbh, $agent_id, $child_name, $parent_name) = @_;
|
||||
|
||||
# Get the child module ID.
|
||||
my $child_id = get_agent_module_id ($dbh, $child_name, $agent_id);
|
||||
return unless ($child_id != -1);
|
||||
|
||||
# Get the parent module ID.
|
||||
my $parent_id = get_agent_module_id ($dbh, $parent_name, $agent_id);
|
||||
return unless ($parent_id != -1);
|
||||
|
||||
# Link them.
|
||||
logger($pa_config, "Linking module $child_name to module $parent_name for agent ID $agent_id", 10);
|
||||
db_do($dbh, "UPDATE tagente_modulo SET parent_module_id = ? WHERE id_agente_modulo = ?", $parent_id, $child_id);
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_server
|
||||
%define version 7.0dev
|
||||
%define release 161130
|
||||
%define release 161214
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_server
|
||||
%define version 7.0dev
|
||||
%define release 161130
|
||||
%define release 161214
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -9,7 +9,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0dev"
|
||||
PI_BUILD="161130"
|
||||
PI_BUILD="161214"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
@ -33,7 +33,7 @@ use PandoraFMS::Tools;
|
||||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0dev PS161130";
|
||||
my $version = "7.0dev PS161214";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
@ -91,21 +91,11 @@ sub pandora_purgedb ($$) {
|
||||
WHERE id_sesion NOT IN ( SELECT id_sesion FROM tsesion )");
|
||||
log_message ('PURGE', 'Deleting old extended session data.');
|
||||
}
|
||||
|
||||
# Delete old data
|
||||
if ($conf->{'_days_purge'} > 0) {
|
||||
|
||||
# Delete old numeric data
|
||||
pandora_delete_old_module_data ($dbh, 'tagente_datos', $ulimit_access_timestamp, $ulimit_timestamp);
|
||||
|
||||
# Delete old export data
|
||||
pandora_delete_old_export_data ($dbh, $ulimit_timestamp);
|
||||
|
||||
# Delete sessions data
|
||||
pandora_delete_old_session_data ($dbh, $ulimit_timestamp);
|
||||
|
||||
# Delete old inventory data
|
||||
# Delete old inventory data
|
||||
if ($conf->{'_inventory_purge'} > 0) {
|
||||
if (enterprise_load (\%conf) != 0) {
|
||||
my $ulimit_timestamp_inventory = time() - (86400 * $conf->{'_inventory_purge'});
|
||||
|
||||
log_message ('PURGE', 'Deleting old inventory data.');
|
||||
|
||||
@ -116,7 +106,7 @@ sub pandora_purgedb ($$) {
|
||||
|
||||
$first_mark = get_db_value_limit ($dbh, 'SELECT utimestamp FROM tagente_datos_inventory ORDER BY utimestamp ASC', 1);
|
||||
if (defined ($first_mark)) {
|
||||
$total_time = $ulimit_timestamp - $first_mark;
|
||||
$total_time = $ulimit_timestamp_inventory - $first_mark;
|
||||
$purge_steps = int($total_time / $BIG_OPERATION_STEP);
|
||||
if ($purge_steps > 0) {
|
||||
for (my $ax = 1; $ax <= $BIG_OPERATION_STEP; $ax++) {
|
||||
@ -133,8 +123,22 @@ sub pandora_purgedb ($$) {
|
||||
log_message ('PURGE', 'No data in tagente_datos_inventory.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Delete old data
|
||||
if ($conf->{'_days_purge'} > 0) {
|
||||
|
||||
# Delete old numeric data
|
||||
pandora_delete_old_module_data ($dbh, 'tagente_datos', $ulimit_access_timestamp, $ulimit_timestamp);
|
||||
|
||||
# Delete old export data
|
||||
pandora_delete_old_export_data ($dbh, $ulimit_timestamp);
|
||||
|
||||
# Delete sessions data
|
||||
pandora_delete_old_session_data ($dbh, $ulimit_timestamp);
|
||||
|
||||
# Delete old inventory data
|
||||
|
||||
#
|
||||
# Now the log4x data
|
||||
#
|
||||
@ -700,6 +704,7 @@ sub pandora_load_config ($) {
|
||||
$conf->{'_history_db_step'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'history_db_step'");
|
||||
$conf->{'_history_db_delay'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'history_db_delay'");
|
||||
$conf->{'_days_delete_unknown'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'days_delete_unknown'");
|
||||
$conf->{'_inventory_purge'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'inventory_purge'");
|
||||
$conf->{'_enterprise_installed'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'enterprise_installed'");
|
||||
$conf->{'_metaconsole'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'metaconsole'");
|
||||
$conf->{'_metaconsole_events_history'} = get_db_value ($dbh, "SELECT value FROM tconfig WHERE token = 'metaconsole_events_history'");
|
||||
|
@ -35,7 +35,7 @@ use Encode::Locale;
|
||||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0dev PS161130";
|
||||
my $version = "7.0dev PS161214";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user