Merge remote-tracking branch 'origin/ent-EDF' into ent-4610-Alertas-de-logs

Conflicts:
	pandora_console/extras/mr/33.sql
This commit is contained in:
Daniel Barbero Martin 2019-11-14 12:22:11 +01:00
commit c17acefc49
105 changed files with 1846 additions and 498 deletions

View File

@ -36,6 +36,8 @@ mkdir -p temp_package/usr/bin/
mkdir -p temp_package/usr/sbin/ mkdir -p temp_package/usr/sbin/
mkdir -p temp_package/etc/pandora/plugins mkdir -p temp_package/etc/pandora/plugins
mkdir -p temp_package/etc/pandora/collections mkdir -p temp_package/etc/pandora/collections
mkdir -p temp_package/etc/pandora/trans
mkdir -p temp_package/etc/pandora/commands
mkdir -p temp_package/etc/init.d/ mkdir -p temp_package/etc/init.d/
mkdir -p temp_package/var/log/pandora/ mkdir -p temp_package/var/log/pandora/
mkdir -p temp_package/usr/share/man/man1/ mkdir -p temp_package/usr/share/man/man1/

View File

@ -325,6 +325,11 @@ install () {
chmod -R 700 $PANDORA_BASE$PANDORA_HOME/collections chmod -R 700 $PANDORA_BASE$PANDORA_HOME/collections
ln -s $PANDORA_BASE$PANDORA_HOME/collections $PANDORA_BASE$PANDORA_CFG ln -s $PANDORA_BASE$PANDORA_HOME/collections $PANDORA_BASE$PANDORA_CFG
echo "Copying Pandora FMS Agent commands to $PANDORA_BASE$PANDORA_HOME/commands..."
cp -r commands $PANDORA_BASE$PANDORA_HOME
chmod -R 700 $PANDORA_BASE$PANDORA_HOME/commands
ln -s $PANDORA_BASE$PANDORA_HOME/commands $PANDORA_BASE$PANDORA_CFG
echo "Copying tentacle server to $PANDORA_BASE$TENTACLE_SERVER" echo "Copying tentacle server to $PANDORA_BASE$TENTACLE_SERVER"
cp tentacle_server $PANDORA_BASE$TENTACLE_SERVER cp tentacle_server $PANDORA_BASE$TENTACLE_SERVER
chmod 755 $PANDORA_BASE$TENTACLE_SERVER chmod 755 $PANDORA_BASE$TENTACLE_SERVER

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.740-191108 Version: 7.0NG.740-191113
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -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.740-191108" pandora_version="7.0NG.740-191113"
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
@ -36,6 +36,8 @@ mkdir -p temp_package/usr/bin/
mkdir -p temp_package/usr/sbin/ mkdir -p temp_package/usr/sbin/
mkdir -p temp_package/etc/pandora/plugins mkdir -p temp_package/etc/pandora/plugins
mkdir -p temp_package/etc/pandora/collections mkdir -p temp_package/etc/pandora/collections
mkdir -p temp_package/etc/pandora/trans
mkdir -p temp_package/etc/pandora/commands
mkdir -p temp_package/etc/init.d/ mkdir -p temp_package/etc/init.d/
mkdir -p temp_package/lib/systemd/system/ mkdir -p temp_package/lib/systemd/system/
mkdir -p temp_package/var/log/pandora/ mkdir -p temp_package/var/log/pandora/

View File

@ -24,6 +24,7 @@ Version 6.0
use strict; use strict;
use warnings; use warnings;
use Scalar::Util qw(looks_like_number);
use POSIX qw(strftime floor); use POSIX qw(strftime floor);
use Sys::Hostname; use Sys::Hostname;
use File::Basename; use File::Basename;
@ -32,6 +33,18 @@ use IO::Socket;
use Sys::Syslog; use Sys::Syslog;
use Time::Local; use Time::Local;
my $YAML = 0;
# Dynamic load. Avoid unwanted behaviour.
eval {
eval 'require YAML::Tiny;1' or die('YAML::Tiny lib not found, commands feature won\'t be available');
};
if ($@) {
$YAML = 0;
print STDERR $@;
} else {
$YAML = 1;
}
# Agent XML data # Agent XML data
my $Xml; my $Xml;
@ -42,7 +55,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.740'; use constant AGENT_VERSION => '7.0NG.740';
use constant AGENT_BUILD => '191108'; use constant AGENT_BUILD => '191113';
# 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;
@ -187,6 +200,7 @@ my %DefaultConf = (
'custom_id' => '', 'custom_id' => '',
'url_address' => '', 'url_address' => '',
'standby' => 0, 'standby' => 0,
'cmd_file' => undef,
); );
my %Conf = %DefaultConf; my %Conf = %DefaultConf;
@ -268,6 +282,20 @@ sub error ($) {
exit 1; exit 1;
} }
################################################################################
# Try to load extra libraries.c
################################################################################
sub load_libraries() {
# Dynamic load. Avoid unwanted behaviour.
eval {eval 'require YAML::Tiny;1' or die('YAML::Tiny lib not found, commands feature won\'t be available');};
if ($@) {
$YAML = 0;
print STDERR $@;
} else {
$YAML = 1;
}
}
################################################################################ ################################################################################
# Check a regular expression. Returns 1 if its valid, 0 otherwise. # Check a regular expression. Returns 1 if its valid, 0 otherwise.
################################################################################ ################################################################################
@ -284,6 +312,27 @@ sub valid_regexp ($) {
return 1; return 1;
} }
################################################################################
# Reads a file and returns entire content or undef if error.
################################################################################
sub read_file {
my $path = shift;
my $_FILE;
if( !open($_FILE, "<", $path) ) {
# failed to open, return undef
return undef;
}
# Slurp configuration file content.
my $content = do { local $/; <$_FILE> };
# Close file
close($_FILE);
return $content;
}
################################################################################ ################################################################################
# Recursively delete files and directories. # Recursively delete files and directories.
################################################################################ ################################################################################
@ -682,6 +731,13 @@ sub parse_conf_modules($) {
# Macros # Macros
} elsif ($line =~ /^\s*module_macro(\S+)\s+(.*)\s*$/) { } elsif ($line =~ /^\s*module_macro(\S+)\s+(.*)\s*$/) {
$module->{'macros'}{$1} = $2; $module->{'macros'}{$1} = $2;
# Commands
} elsif ($line =~ /^\s*cmd_file\s+(.+)$/) {
if (ref ($Conf{'commands'}) ne "HASH") {
$Conf{'commands'} = {};
}
# Initialize empty command hash.
$Conf{'commands'}->{$1} = {};
} }
} }
return; return;
@ -1157,14 +1213,14 @@ sub recv_file {
}; };
if ($@) { if ($@) {
log_message ('error', "Error retrieving file: File transfer command is not responding."); log_message ('error', "Error retrieving file: '.$file.' File transfer command is not responding.");
exit 1; exit 1;
} }
# Get the errorlevel # Get the errorlevel
my $rc = $? >> 8; my $rc = $? >> 8;
if ($rc != 0) { if ($rc != 0) {
log_message ('error', "Error retrieving file: $output"); log_message ('error', "Error retrieving file: '$file' $output");
} }
exit $rc; exit $rc;
} }
@ -1362,6 +1418,220 @@ sub check_collections () {
} }
} }
################################################################################
# Check for remote commands defined.
################################################################################
sub prepare_remote_commands {
if ($YAML == 0) {
log_message(
'error',
'Cannot use commands without YAML dependency, please install it.'
);
return;
}
foreach my $ref (keys %{$Conf{'commands'}}) {
my $file_content;
my $download = 0;
my $rcmd_file = $ConfDir.'/commands/'.$ref.'.rcmd';
# Check for local .rcmd.done files
if (-e $Conf{'temporal'}.'/'.$ref.'.rcmd.done') {
# Ignore.
delete $Conf{'commands'}->{$ref};
next;
}
# Search for local .rcmd file
if (-e $rcmd_file) {
my $remote_md5_file = $Conf{'temporal'}.'/'.$ref.'.md5';
$file_content = read_file($rcmd_file);
if (recv_file($ref.'.md5', $remote_md5_file) != 0) {
# Remote file could not be retrieved, skip.
delete $Conf{'commands'}->{$ref};
next;
}
my $local_md5 = md5($file_content);
my $remote_md5 = md5(read_file($remote_md5_file));
if ($local_md5 ne $remote_md5) {
# Must be downloaded again.
$download = 1;
}
} else {
$download = 1;
}
# Search for remote .rcmd file
if ($download == 1) {
# Download .rcmd file
if (recv_file($ref.'.rcmd') != 0) {
# Remote file could not be retrieved, skip.
delete $Conf{'commands'}->{$ref};
next;
} else {
# Success
move($Conf{'temporal'}.'/'.$ref.'.rcmd', $rcmd_file);
}
}
# Parse and prepare in memory skel.
eval {
$Conf{'commands'}->{$ref} = YAML::Tiny->read($rcmd_file);
};
if ($@) {
# Failed.
log_message('error', 'Failed to decode command. ' . "\n".$@);
delete $Conf{'commands'}->{$ref};
next;
}
}
}
################################################################################
# Command report.
################################################################################
sub report_command {
my ($ref, $err_level) = @_;
# Retrieve content from .stdout and .stderr
my $stdout_file = $Conf{'temporal'}.'/'.$ref.'.stdout';
my $stderr_file = $Conf{'temporal'}.'/'.$ref.'.stderr';
my $return;
eval {
$return = {
'error_level' => $err_level,
'stdout' => read_file($stdout_file),
'stderr' => read_file($stderr_file),
};
$return->{'name'} = $Conf{'commands'}->{$ref}->[0]->{'name'};
};
if ($@) {
log_message('error', 'Failed to report command output. ' . $@);
}
# Cleanup
unlink($stdout_file) if (-e $stdout_file);
unlink($stderr_file) if (-e $stderr_file);
# Mark command as done.
open (my $R_FILE, '> '.$ConfDir.'/commands/'.$ref.'.rcmd.done');
print $R_FILE $err_level;
close($R_FILE);
$return->{'stdout'} = '' unless defined ($return->{'stdout'});
$return->{'stderr'} = '' unless defined ($return->{'stderr'});
return $return;
}
################################################################################
# Executes a command using defined timeout.
################################################################################
sub execute_command_timeout {
my ($command, $timeout) = @_;
if (!looks_like_number($timeout)) {
`$command`;
} else {
`$command`;
}
return $?>>8;
}
################################################################################
# Executes a block of commands, returns error level, leaves output in
# redirection set by $std_files. E.g:
# $std_files = ' >> /tmp/stdout 2>> /tmp/stderr
################################################################################
sub execute_command_block {
my ($commands, $std_files, $timeout) = @_;
return 0 unless defined($commands);
my $err_level = 0;
$std_files = '' unless defined ($std_files);
if (ref($commands) ne "ARRAY") {
return 0 if $commands eq '';
$err_level = execute_command_timeout(
"($commands) $std_files",
$timeout
);
} else {
foreach my $comm (@{$commands}) {
next unless defined($comm);
$err_level = execute_command_timeout(
"($comm) $std_files",
$timeout
);
last unless ($err_level == 0);
}
}
return $err_level;
}
################################################################################
# Evalate given command.
################################################################################
sub evaluate_command {
my ($ref) = @_;
# Not found.
return unless defined $Conf{'commands'}->{$ref};
# Already completed.
return if (-e $ConfDir.'/commands/'.$ref.'.rcmd.done');
# [0] because how library works.
my $cmd = $Conf{'commands'}->{$ref}->[0];
my $std_files = ' >> '.$Conf{'temporal'}.'/'.$ref.'.stdout ';
$std_files .= ' 2>> '.$Conf{'temporal'}.'/'.$ref.'.stderr ';
# Check preconditions
my $err_level;
$err_level = execute_command_block(
$cmd->{'preconditions'},
$std_files,
$cmd->{'timeout'}
);
# Precondition not satisfied.
return report_command($ref, $err_level) unless ($err_level == 0);
# Main run.
$err_level = execute_command_block(
$cmd->{'script'},
$std_files,
$cmd->{'timeout'}
);
# Script not success.
return report_command($ref, $err_level) unless ($err_level == 0);
# Check postconditions
$err_level = execute_command_block(
$cmd->{'postconditions'},
$std_files,
$cmd->{'timeout'}
);
# Return results.
return report_command($ref, $err_level);
}
################################################################################ ################################################################################
# Sleep function # Sleep function
################################################################################ ################################################################################
@ -2985,6 +3255,8 @@ my $iter_base_time = time();
$LogFileIdx = -1; $LogFileIdx = -1;
# Loop # Loop
while (1) { while (1) {
load_libraries();
if (-e $Conf{'logfile'} && (stat($Conf{'logfile'}))[7] > $Conf{'logsize'}) { if (-e $Conf{'logfile'} && (stat($Conf{'logfile'}))[7] > $Conf{'logsize'}) {
rotate_log(); rotate_log();
} }
@ -2999,6 +3271,25 @@ while (1) {
# Check file collections # Check file collections
check_collections () unless ($Conf{'debug'} eq '1'); check_collections () unless ($Conf{'debug'} eq '1');
if ($Conf{'debug'} ne '1') {
# Check remote commands
prepare_remote_commands ();
# Cleanup old .rcmd.done files.
my %registered = map { $_.'.rcmd.done' => 1 } keys %{$Conf{'commands'}};
if(opendir(my $dir, $ConfDir.'/commands/')) {
while (my $item = readdir($dir)) {
# Skip other files.
next if ($item !~ /\.rcmd\.done$/);
# Clean .rcmd.done file if its command is not referenced in conf.
if (!defined($registered{$item})) {
unlink ($item);
}
}
}
}
# Launch broker agents # Launch broker agents
@BrokerPid = (); @BrokerPid = ();
my @broker_agents = read_config ('broker_agent'); my @broker_agents = read_config ('broker_agent');
@ -3128,6 +3419,24 @@ while (1) {
} }
} }
if (ref ($Conf{'commands'}) eq "HASH") {
foreach my $command (keys %{$Conf{'commands'}}) {
my $result = evaluate_command($command);
if (ref($result) eq "HASH") {
# Process command result.
$Xml .= "<cmd_report>\n";
$Xml .= " <cmd_response>\n";
$Xml .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n";
$Xml .= " <cmd_key><![CDATA[".$command."]]></cmd_key>\n";
$Xml .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
$Xml .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
$Xml .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
$Xml .= " </cmd_response>\n";
$Xml .= "</cmd_report>\n";
}
}
}
# Wait for all the threads # Wait for all the threads
$ThreadSem->down ($Conf{'agent_threads'}) if (defined ($ThreadSem) && $Conf{'agent_threads'} > 1); $ThreadSem->down ($Conf{'agent_threads'}) if (defined ($ThreadSem) && $Conf{'agent_threads'} > 1);
$ThreadSem->up ($Conf{'agent_threads'}) if (defined ($ThreadSem) && $Conf{'agent_threads'} > 1); $ThreadSem->up ($Conf{'agent_threads'}) if (defined ($ThreadSem) && $Conf{'agent_threads'} > 1);

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.740 %define version 7.0NG.740
%define release 191108 %define release 191113
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}
@ -99,6 +99,11 @@ if [ ! -e /etc/pandora/collections ]; then
ln -s /usr/share/pandora_agent/collections /etc/pandora ln -s /usr/share/pandora_agent/collections /etc/pandora
fi fi
if [ ! -e /etc/pandora/commands ]; then
mkdir -p /usr/share/pandora_agent/commands
ln -s /usr/share/pandora_agent/commands /etc/pandora
fi
mkdir -p /var/spool/pandora/data_out mkdir -p /var/spool/pandora/data_out
if [ ! -d /var/log/pandora ]; then if [ ! -d /var/log/pandora ]; then
mkdir -p /var/log/pandora mkdir -p /var/log/pandora

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.740 %define version 7.0NG.740
%define release 191108 %define release 191113
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}
@ -90,6 +90,11 @@ fi
if [ ! -e /etc/pandora/collections ]; then if [ ! -e /etc/pandora/collections ]; then
mkdir /etc/pandora/collections mkdir /etc/pandora/collections
fi fi
if [ ! -e /etc/pandora/commands ]; then
mkdir /etc/pandora/commands
fi
cp -aRf /usr/share/pandora_agent/pandora_agent_logrotate /etc/logrotate.d/pandora_agent cp -aRf /usr/share/pandora_agent/pandora_agent_logrotate /etc/logrotate.d/pandora_agent
# Enable the service on SystemD # Enable the service on SystemD

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.740" PI_VERSION="7.0NG.740"
PI_BUILD="191108" PI_BUILD="191113"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0
@ -401,6 +401,11 @@ install () {
chmod -R 700 $PANDORA_BASE$PANDORA_HOME/collections chmod -R 700 $PANDORA_BASE$PANDORA_HOME/collections
ln -s $PANDORA_BASE_REAL$PANDORA_HOME/collections $PANDORA_BASE$PANDORA_CFG ln -s $PANDORA_BASE_REAL$PANDORA_HOME/collections $PANDORA_BASE$PANDORA_CFG
echo "Creating the commands directory in $PANDORA_BASE$PANDORA_HOME/commands..."
mkdir -p $PANDORA_BASE$PANDORA_HOME/commands
chmod -R 700 $PANDORA_BASE$PANDORA_HOME/commands
ln -s $PANDORA_BASE_REAL$PANDORA_HOME/commands $PANDORA_BASE$PANDORA_CFG
if [ $WITHOUT_TENTACLE_SERVER -eq 0 ] if [ $WITHOUT_TENTACLE_SERVER -eq 0 ]
then then
echo "Copying tentacle server to $PANDORA_BASE$TENTACLE_SERVER" echo "Copying tentacle server to $PANDORA_BASE$TENTACLE_SERVER"

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{191108} {191113}
ViewReadme ViewReadme
{Yes} {Yes}

View File

@ -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.740(Build 191108)") #define PANDORA_VERSION ("7.0NG.740(Build 191113)")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

@ -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.740(Build 191108))" VALUE "ProductVersion", "(7.0NG.740(Build 191113))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.740-191108 Version: 7.0NG.740-191113
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -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.740-191108" pandora_version="7.0NG.740-191113"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -13,7 +13,264 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
// Begin.
/**
* Extra JS.
*
* @return void
*/
function agents_modules_load_js()
{
$ignored_params['refresh'] = '';
?>
<style type='text/css'>
.rotate_text_module {
-ms-transform: rotate(270deg);
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
-o-transform: rotate(270deg);
writing-mode: lr-tb;
white-space: nowrap;
}
</style>
<script type='text/javascript'>
$(document).ready(function () {
//Get max width of name of modules
max_width = 0;
$.each($('.th_class_module_r'), function (i, elem) {
id = $(elem).attr('id').replace('th_module_r_', '');
width = $("#div_module_r_" + id).width();
if (max_width < width) {
max_width = width;
}
});
$.each($('.th_class_module_r'), function (i, elem) {
id = $(elem).attr('id').replace('th_module_r_', '');
$("#th_module_r_" + id).height(($("#div_module_r_" + id).width() + 10) + 'px');
$("#div_module_r_" + id).css('margin-top', (max_width - 20) + 'px');
$("#div_module_r_" + id).show();
});
var refr = '<?php echo get_parameter('refresh', 0); ?>';
var pure = '<?php echo get_parameter('pure', 0); ?>';
var href =' <?php echo ui_get_url_refresh($ignored_params); ?>';
if (pure) {
var startCountDown = function (duration, cb) {
$('div.vc-countdown').countdown('destroy');
if (!duration) return;
var t = new Date();
t.setTime(t.getTime() + duration * 1000);
$('div.vc-countdown').countdown({
until: t,
format: 'MS',
layout: '(%M%nn%M:%S%nn%S <?php echo __('Until next'); ?>) ',
alwaysExpire: true,
onExpiry: function () {
$('div.vc-countdown').countdown('destroy');
url = js_html_entity_decode( href ) + duration;
$(document).attr ("location", url);
}
});
}
if(refr>0){
startCountDown(refr, false);
}
var controls = document.getElementById('vc-controls');
autoHideElement(controls, 1000);
$('select#refresh').change(function (event) {
refr = Number.parseInt(event.target.value, 10);
startCountDown(refr, false);
});
}
else {
var agentes_id = $("#id_agents2").val();
var id_agentes = getQueryParam("full_agents_id");
if (agentes_id === null && id_agentes !== null) {
id_agentes = id_agentes.split(";")
id_agentes.forEach(function(element) {
$("#id_agents2 option[value="+ element +"]").attr("selected",true);
});
selection_agent_module();
}
$('#refresh').change(function () {
$('#hidden-vc_refr').val($('#refresh option:selected').val());
});
}
$("#group_id").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_agents_group_json" : 1,
"id_group" : this.value,
"privilege" : "AW",
"keys_prefix" : "_",
"recursion" : $('#checkbox-recursion').is(':checked')
},
function (data, status) {
$("#id_agents2").html('');
$("#module").html('');
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
id = id.substring(1);
option = $("<option></option>")
.attr ("value", value["id_agente"])
.html (value["alias"]);
$("#id_agents").append (option);
$("#id_agents2").append (option);
});
},
"json"
);
});
$("#checkbox-recursion").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_agents_group_json" : 1,
"id_group" : $("#group_id").val(),
"privilege" : "AW",
"keys_prefix" : "_",
"recursion" : $('#checkbox-recursion').is(':checked')
},
function (data, status) {
$("#id_agents2").html('');
$("#module").html('');
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
id = id.substring(1);
option = $("<option></option>")
.attr ("value", value["id_agente"])
.html (value["alias"]);
$("#id_agents").append (option);
$("#id_agents2").append (option);
});
},
"json"
);
});
$("#modulegroup").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_modules_group_json" : 1,
"id_module_group" : this.value,
"id_agents" : $("#id_agents2").val(),
"selection" : $("#selection_agent_module").val()
},
function (data, status) {
$("#module").html('');
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
$("#module").append (option);
});
}
},
"json"
);
});
$("#id_agents2").click (function(){
selection_agent_module();
});
$("#selection_agent_module").change(function() {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_modules_group_json" : 1,
"id_module_group" : $("#modulegroup").val(),
"id_agents" : $("#id_agents2").val(),
"selection" : $("#selection_agent_module").val()
},
function (data, status) {
$("#module").html('');
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
$("#module").append (option);
});
}
},
"json"
);
});
});
function selection_agent_module() {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_modules_group_json" : 1,
"id_module_group" : $("#modulegroup").val(),
"id_agents" : $("#id_agents2").val(),
"selection" : $("#selection_agent_module").val()
},
function (data, status) {
$("#module").html('');
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
$("#module").append (option);
});
var id_modules = getQueryParam("full_modules_selected");
if(id_modules !== null) {
id_modules = id_modules.split(";");
id_modules.forEach(function(element) {
$("#module option[value="+ element +"]").attr("selected",true);
});
}
}
},
"json"
);
}
function getQueryParam (key) {
key = key.replace(/[[]/, '[');
key = key.replace(/[]]/, ']');
var pattern = "[?&]" + key + "=([^&#]*)";
var regex = new RegExp(pattern);
var url = unescape(window.location.href);
var results = regex.exec(url);
if (results === null) {
return null;
} else {
return results[1];
}
}
</script>
<?php
}
/**
* Main method.
*
* @return void
*/
function mainAgentsModules() function mainAgentsModules()
{ {
global $config; global $config;
@ -36,6 +293,9 @@ function mainAgentsModules()
exit; exit;
} }
// JS.
agents_modules_load_js();
// Update network modules for this group // Update network modules for this group
// Check for Network FLAG change request // Check for Network FLAG change request
// Made it a subquery, much faster on both the database and server side. // Made it a subquery, much faster on both the database and server side.
@ -617,243 +877,3 @@ function mainAgentsModules()
extensions_add_operation_menu_option(__('Agents/Modules view'), 'estado', 'agents_modules/icon_menu.png', 'v1r1', 'view'); extensions_add_operation_menu_option(__('Agents/Modules view'), 'estado', 'agents_modules/icon_menu.png', 'v1r1', 'view');
extensions_add_main_function('mainAgentsModules'); extensions_add_main_function('mainAgentsModules');
$ignored_params['refresh'] = '';
?>
<style type='text/css'>
.rotate_text_module {
-ms-transform: rotate(270deg);
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
-o-transform: rotate(270deg);
writing-mode: lr-tb;
white-space: nowrap;
}
</style>
<script type='text/javascript'>
$(document).ready(function () {
//Get max width of name of modules
max_width = 0;
$.each($('.th_class_module_r'), function (i, elem) {
id = $(elem).attr('id').replace('th_module_r_', '');
width = $("#div_module_r_" + id).width();
if (max_width < width) {
max_width = width;
}
});
$.each($('.th_class_module_r'), function (i, elem) {
id = $(elem).attr('id').replace('th_module_r_', '');
$("#th_module_r_" + id).height(($("#div_module_r_" + id).width() + 10) + 'px');
$("#div_module_r_" + id).css('margin-top', (max_width - 20) + 'px');
$("#div_module_r_" + id).show();
});
var refr = '<?php echo get_parameter('refresh', 0); ?>';
var pure = '<?php echo get_parameter('pure', 0); ?>';
var href =' <?php echo ui_get_url_refresh($ignored_params); ?>';
if (pure) {
var startCountDown = function (duration, cb) {
$('div.vc-countdown').countdown('destroy');
if (!duration) return;
var t = new Date();
t.setTime(t.getTime() + duration * 1000);
$('div.vc-countdown').countdown({
until: t,
format: 'MS',
layout: '(%M%nn%M:%S%nn%S <?php echo __('Until next'); ?>) ',
alwaysExpire: true,
onExpiry: function () {
$('div.vc-countdown').countdown('destroy');
url = js_html_entity_decode( href ) + duration;
$(document).attr ("location", url);
}
});
}
if(refr>0){
startCountDown(refr, false);
}
var controls = document.getElementById('vc-controls');
autoHideElement(controls, 1000);
$('select#refresh').change(function (event) {
refr = Number.parseInt(event.target.value, 10);
startCountDown(refr, false);
});
}
else {
var agentes_id = $("#id_agents2").val();
var id_agentes = getQueryParam("full_agents_id");
if (agentes_id === null && id_agentes !== null) {
id_agentes = id_agentes.split(";")
id_agentes.forEach(function(element) {
$("#id_agents2 option[value="+ element +"]").attr("selected",true);
});
selection_agent_module();
}
$('#refresh').change(function () {
$('#hidden-vc_refr').val($('#refresh option:selected').val());
});
}
$("#group_id").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_agents_group_json" : 1,
"id_group" : this.value,
"privilege" : "AW",
"keys_prefix" : "_",
"recursion" : $('#checkbox-recursion').is(':checked')
},
function (data, status) {
$("#id_agents2").html('');
$("#module").html('');
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
id = id.substring(1);
option = $("<option></option>")
.attr ("value", value["id_agente"])
.html (value["alias"]);
$("#id_agents").append (option);
$("#id_agents2").append (option);
});
},
"json"
);
});
$("#checkbox-recursion").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_agents_group_json" : 1,
"id_group" : $("#group_id").val(),
"privilege" : "AW",
"keys_prefix" : "_",
"recursion" : $('#checkbox-recursion').is(':checked')
},
function (data, status) {
$("#id_agents2").html('');
$("#module").html('');
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
id = id.substring(1);
option = $("<option></option>")
.attr ("value", value["id_agente"])
.html (value["alias"]);
$("#id_agents").append (option);
$("#id_agents2").append (option);
});
},
"json"
);
});
$("#modulegroup").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_modules_group_json" : 1,
"id_module_group" : this.value,
"id_agents" : $("#id_agents2").val(),
"selection" : $("#selection_agent_module").val()
},
function (data, status) {
$("#module").html('');
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
$("#module").append (option);
});
}
},
"json"
);
});
$("#id_agents2").click (function(){
selection_agent_module();
});
$("#selection_agent_module").change(function() {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_modules_group_json" : 1,
"id_module_group" : $("#modulegroup").val(),
"id_agents" : $("#id_agents2").val(),
"selection" : $("#selection_agent_module").val()
},
function (data, status) {
$("#module").html('');
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
$("#module").append (option);
});
}
},
"json"
);
});
});
function selection_agent_module() {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
"get_modules_group_json" : 1,
"id_module_group" : $("#modulegroup").val(),
"id_agents" : $("#id_agents2").val(),
"selection" : $("#selection_agent_module").val()
},
function (data, status) {
$("#module").html('');
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
$("#module").append (option);
});
var id_modules = getQueryParam("full_modules_selected");
if(id_modules !== null) {
id_modules = id_modules.split(";");
id_modules.forEach(function(element) {
$("#module option[value="+ element +"]").attr("selected",true);
});
}
}
},
"json"
);
}
function getQueryParam (key) {
key = key.replace(/[[]/, '[');
key = key.replace(/[]]/, ']');
var pattern = "[?&]" + key + "=([^&#]*)";
var regex = new RegExp(pattern);
var url = unescape(window.location.href);
var results = regex.exec(url);
if (results === null) {
return null;
} else {
return results[1];
}
}
</script>

View File

@ -23,12 +23,12 @@ function pluginreg_extension_main()
return; return;
} }
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
ui_print_page_header(__('Plugin registration'), 'images/extensions.png', false, '', true, ''); ui_print_page_header(__('Plugin registration'), 'images/extensions.png', false, '', true, '');
echo '<div class="new_task"> echo '<div class="new_task">
<div class="image_task">'; <div class="image_task">';
echo html_print_image('images/firts_task/icono_grande_import.png', true, ['title' => __('Plugin Registration') ]); echo html_print_image('images/first_task/icono_grande_import.png', true, ['title' => __('Plugin Registration') ]);
echo '</div>'; echo '</div>';
echo '<div class="text_task">'; echo '<div class="text_task">';
echo '<h3>'.__('Plugin registration').'</h3>'; echo '<h3>'.__('Plugin registration').'</h3>';

View File

@ -333,12 +333,12 @@ function quickShellSettings()
$gotty_user = get_parameter( $gotty_user = get_parameter(
'gotty_user', 'gotty_user',
$config['gotty_user'] ''
); );
$gotty_pass = get_parameter( $gotty_pass = get_parameter(
'gotty_pass', 'gotty_pass',
io_output_password($config['gotty_pass']) ''
); );
$gotty_pass = io_input_password($gotty_pass); $gotty_pass = io_input_password($gotty_pass);
@ -373,6 +373,7 @@ function quickShellSettings()
} }
if ($config['gotty_pass'] != $gotty_pass) { if ($config['gotty_pass'] != $gotty_pass) {
$gotty_pass = io_input_password($gotty_pass);
config_update_value('gotty_pass', $gotty_pass); config_update_value('gotty_pass', $gotty_pass);
$changes++; $changes++;
$critical++; $critical++;

View File

@ -12,4 +12,30 @@ ALTER TABLE `tevent_rule` ADD COLUMN `log_content` TEXT;
ALTER TABLE `tevent_rule` ADD COLUMN `log_source` TEXT; ALTER TABLE `tevent_rule` ADD COLUMN `log_source` TEXT;
ALTER TABLE `tevent_rule` ADD COLUMN `log_agent` TEXT; ALTER TABLE `tevent_rule` ADD COLUMN `log_agent` TEXT;
CREATE TABLE `tremote_command` (
`id` SERIAL,
`name` varchar(150) NOT NULL,
`timeout` int(10) unsigned NOT NULL default 30,
`retries` int(10) unsigned NOT NULL default 3,
`preconditions` text,
`script` text,
`postconditions` text,
`utimestamp` int(20) unsigned NOT NULL default 0,
`id_group` int(10) unsigned NOT NULL default 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tremote_command_target` (
`id` SERIAL,
`rcmd_id` bigint unsigned NOT NULL,
`id_agent` int(10) unsigned NOT NULL,
`utimestamp` int(20) unsigned NOT NULL default 0,
`stdout` text,
`stderr` text,
`errorlevel` int(10) unsigned NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`rcmd_id`) REFERENCES `tremote_command`(`id`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
COMMIT; COMMIT;

View File

@ -1250,13 +1250,13 @@ ALTER TABLE titem MODIFY `source_data` int(10) unsigned;
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 32); INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 33);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager'; UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise'; DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '739'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '741');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
UPDATE `tconfig` SET `value` = 'mini_severity,evento,id_agente,estado,timestamp' WHERE `token` LIKE 'event_fields'; UPDATE `tconfig` SET `value` = 'mini_severity,evento,id_agente,estado,timestamp' WHERE `token` LIKE 'event_fields';
DELETE FROM `tconfig` WHERE `token` LIKE 'integria_api_password'; DELETE FROM `tconfig` WHERE `token` LIKE 'integria_api_password';
@ -2303,3 +2303,44 @@ CREATE TABLE `tdeployment_hosts` (
ON UPDATE CASCADE ON DELETE SET NULL ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------------------------------------------------
-- Table `tremote_command`
-- ----------------------------------------------------------------------
CREATE TABLE `tremote_command` (
`id` SERIAL,
`name` varchar(150) NOT NULL,
`timeout` int(10) unsigned NOT NULL default 30,
`retries` int(10) unsigned NOT NULL default 3,
`preconditions` text,
`script` text,
`postconditions` text,
`utimestamp` int(20) unsigned NOT NULL default 0,
`id_group` int(10) unsigned NOT NULL default 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------------------------------------------------
-- Table `tremote_command_target`
-- ----------------------------------------------------------------------
CREATE TABLE `tremote_command_target` (
`id` SERIAL,
`rcmd_id` bigint unsigned NOT NULL,
`id_agent` int(10) unsigned NOT NULL,
`utimestamp` int(20) unsigned NOT NULL default 0,
`stdout` text,
`stderr` text,
`errorlevel` int(10) unsigned NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`rcmd_id`) REFERENCES `tremote_command`(`id`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Extra tnetwork_component
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (786,'N.&#x20;total&#x20;processes','Number&#x20;of&#x20;running&#x20;processes&#x20;in&#x20;a&#x20;Windows&#x20;system.',11,34,0,0,300,0,'tasklist&#x20;/NH&#x20;|&#x20;findstr&#x20;/c&#x20;/v&#x20;&quot;&quot;','','','',6,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','windows','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (787,'Free&#x20;space&#x20;in&#x20;C:','Free&#x20;space&#x20;available&#x20;in&#x20;C:',11,34,0,0,300,0,'powershell&#x20;$obj=&#40;Get-WmiObject&#x20;-class&#x20;&quot;Win32_LogicalDisk&quot;&#x20;-namespace&#x20;&quot;root&#92;CIMV2&quot;&#41;&#x20;;&#x20;$obj.FreeSpace&#x20;*&#x20;100&#x20;/$obj.Size','','','',4,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','windows','',0,0,0.000000000000000,'%','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (788,'Linux&#x20;uptime','System&#x20;uptime',43,36,0,0,300,0,'uptime&#x20;|sed&#x20;s/us&#92;.*$//g&#x20;|&#x20;sed&#x20;s/,&#92;.*$//g','','','',4,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (789,'Linux&#x20;processes','Running&#x20;processes',43,34,0,0,300,0,'ps&#x20;elf&#x20;|&#x20;wc&#x20;-l','','','',6,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (790,'Linux&#x20;system&#x20;load','Current&#x20;load&#x20;&#40;5&#x20;min&#41;',43,34,0,0,300,0,'uptime&#x20;|&#x20;awk&#x20;&#039;{print&#x20;$&#40;NF-1&#41;}&#039;&#x20;|&#x20;tr&#x20;-d&#x20;&#039;,&#039;','','','',6,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (791,'Linux&#x20;available&#x20;memory&#x20;percent','Available&#x20;memory&#x20;%',43,34,0,0,300,0,'free&#x20;|&#x20;grep&#x20;Mem&#x20;|&#x20;awk&#x20;&#039;{print&#x20;$NF/$2&#x20;*&#x20;100}&#039;','','','',4,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'%','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (792,'Linux&#x20;available&#x20;disk&#x20;/','Available&#x20;free&#x20;space&#x20;in&#x20;mountpoint&#x20;/',43,34,0,0,300,0,'df&#x20;/&#x20;|&#x20;tail&#x20;-n&#x20;+2&#x20;|&#x20;awk&#x20;&#039;{print&#x20;$&#40;NF-1&#41;}&#039;&#x20;|&#x20;tr&#x20;-d&#x20;&#039;%&#039;','','','',4,2,0,'','','',0,0,1,0.00,0.00,'0.00',0.00,0.00,'',0,'','inherited','',0,0,0.000000000000000,'','nowizard','','nowizard','0','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);

View File

@ -105,7 +105,7 @@ if (check_login()) {
echo __( echo __(
"This is the online help for %s console. This help is -in best cases- just a brief contextual help, not intented to teach you how to use %s. Official documentation of %s is about 900 pages, and you probably don't need to read it entirely, but sure, you should download it and take a look.<br><br> "This is the online help for %s console. This help is -in best cases- just a brief contextual help, not intented to teach you how to use %s. Official documentation of %s is about 900 pages, and you probably don't need to read it entirely, but sure, you should download it and take a look.<br><br>
<a href='%s' target='_blanck' style='color: #82b92e; font-size: 10pt; text-decoration: underline;'>Download the official documentation</a>", <a href='%s' target='_blanck' class='pandora_green_text' style='font-size: 10pt; text-decoration: underline;'>Download the official documentation</a>",
get_product_name(), get_product_name(),
get_product_name(), get_product_name(),
get_product_name(), get_product_name(),

View File

@ -33,13 +33,13 @@ if (! check_acl($config['id_user'], 0, 'PM')) {
exit; exit;
} }
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clusters defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clusters defined yet.') ]);
?> ?>
<div class="new_task_cluster"> <div class="new_task_cluster">
<div class="image_task_cluster"> <div class="image_task_cluster">
<?php echo html_print_image('images/firts_task/slave-mode.png', true, ['title' => __('Clusters')]); ?> <?php echo html_print_image('images/first_task/slave-mode.png', true, ['title' => __('Clusters')]); ?>
</div> </div>
<div class="text_task_cluster"> <div class="text_task_cluster">
<h3> <?php echo __('PANDORA FMS DB CLUSTER'); ?></h3> <h3> <?php echo __('PANDORA FMS DB CLUSTER'); ?></h3>

View File

@ -24,7 +24,7 @@ if (! check_acl($config['id_user'], 0, 'AR') && ! check_acl($config['id_user'],
return; return;
} }
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php <?php
ui_print_info_message(['no_close' => true, 'message' => __('There are no clusters defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no clusters defined yet.') ]);
@ -32,7 +32,7 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no cluster
<div class="new_task_cluster"> <div class="new_task_cluster">
<div class="image_task_cluster"> <div class="image_task_cluster">
<?php echo html_print_image('images/firts_task/icono-cluster-activo.png', true, ['title' => __('Clusters')]); ?> <?php echo html_print_image('images/first_task/icono-cluster-activo.png', true, ['title' => __('Clusters')]); ?>
</div> </div>
<div class="text_task_cluster"> <div class="text_task_cluster">
<h3> <?php echo __('Create Cluster'); ?></h3> <h3> <?php echo __('Create Cluster'); ?></h3>

View File

@ -13,7 +13,7 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no collections defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no collections defined yet.') ]); ?>

View File

@ -13,7 +13,7 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php <?php
ui_print_info_message(['no_close' => true, 'message' => __('There are no custom fields defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no custom fields defined yet.') ]);
@ -21,7 +21,7 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no custom
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_reconserver.png', true, ['title' => __('Custom Fields')]); ?> <?php echo html_print_image('images/first_task/icono_grande_reconserver.png', true, ['title' => __('Custom Fields')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Custom Fields'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Custom Fields'); ?></h3><p id="description_task">

View File

@ -13,7 +13,7 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php <?php
ui_print_info_message(['no_close' => true, 'message' => __('There are no custom graphs defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no custom graphs defined yet.') ]);
@ -21,7 +21,7 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no custom
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_custom_reporting.png', true, ['title' => __('Custom Graphs')]); ?> <?php echo html_print_image('images/first_task/icono_grande_custom_reporting.png', true, ['title' => __('Custom Graphs')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Custom Graph'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Custom Graph'); ?></h3><p id="description_task">

View File

@ -13,13 +13,13 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no custom fields defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no custom fields defined yet.') ]); ?>
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_reconserver.png', true, ['title' => __('Fields Manager')]); ?> <?php echo html_print_image('images/first_task/icono_grande_reconserver.png', true, ['title' => __('Fields Manager')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Fields Manager'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Fields Manager'); ?></h3><p id="description_task">

View File

@ -15,7 +15,7 @@ global $config;
global $incident_w; global $incident_w;
global $incident_m; global $incident_m;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php <?php
ui_print_info_message(['no_close' => true, 'message' => __('There are no incidents defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no incidents defined yet.') ]);
@ -25,7 +25,7 @@ if ($incident_w || $incident_m) {
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_incidencia.png', true, ['title' => __('Incidents')]); ?> <?php echo html_print_image('images/first_task/icono_grande_incidencia.png', true, ['title' => __('Incidents')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Incidents'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Incidents'); ?></h3><p id="description_task">

View File

@ -15,7 +15,7 @@ global $config;
global $vconsoles_write; global $vconsoles_write;
global $vconsoles_manage; global $vconsoles_manage;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
ui_print_info_message( ui_print_info_message(
[ [
@ -28,7 +28,7 @@ if ($vconsoles_write || $vconsoles_manage) {
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_visualconsole.png', true, ['title' => __('Visual Console')]); ?> <?php echo html_print_image('images/first_task/icono_grande_visualconsole.png', true, ['title' => __('Visual Console')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Visual Console'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Visual Console'); ?></h3><p id="description_task">

View File

@ -13,7 +13,7 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php <?php
ui_print_info_message(['no_close' => true, 'message' => __('There are no network map defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no network map defined yet.') ]);
@ -23,7 +23,7 @@ $networkmap_types = networkmap_get_types($strict_user);
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_reconserver.png', true, ['title' => __('Network Map')]); ?> <?php echo html_print_image('images/first_task/icono_grande_reconserver.png', true, ['title' => __('Network Map')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Network Map'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Network Map'); ?></h3><p id="description_task">

View File

@ -0,0 +1,56 @@
<?php
/**
* Omnishell first task.
*
* @category Omnishell
* @package Pandora FMS
* @subpackage Enterprise
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2007-2019 Artica Soluciones Tecnologicas, http://www.artica.es
* This code is NOT free software. This code is NOT licenced under GPL2 licence
* You cannnot redistribute it without written permission of copyright holder.
* ============================================================================
*/
global $config;
check_login();
ui_require_css_file('first_task');
?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There is no command defined yet.') ]); ?>
<div class="new_task">
<div class="image_task">
<?php echo html_print_image('images/first_task/omnishell.png', true, ['title' => __('Omnishell')]); ?>
</div>
<div class="text_task">
<h3> <?php echo __('Omnishell'); ?></h3><p id="description_task">
<?php
echo '<p>'.__(
'Omnishell is an enterprise feature which allows you to execute a structured command along any agent in your %s. The only requirement is to have remote configuration enabled in your agent.',
io_safe_output(get_product_name())
).'</p>';
echo '<p>'.__(
'You can execute any command on as many agents you need, and check the execution on all of them using the Omnishell Command View'
).'</p>';
?>
</p>
<?php
if (enterprise_installed()) {
?>
<form action="index.php?sec=gextensions&sec2=enterprise/tools/omnishell&page=1" method="post">
<input type="submit" class="button_task" value="<?php echo __('Define a command'); ?>" />
</form>
<?php
}
?>
</div>
</div>

View File

@ -13,13 +13,13 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no planned downtime defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no planned downtime defined yet.') ]); ?>
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_visualconsole.png', true, ['title' => __('Planned Downtime')]); ?> <?php echo html_print_image('images/first_task/icono_grande_visualconsole.png', true, ['title' => __('Planned Downtime')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Planned Downtime'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Planned Downtime'); ?></h3><p id="description_task">

View File

@ -13,13 +13,13 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no discovery tasks defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no discovery tasks defined yet.') ]); ?>
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_reconserver.png', true, ['title' => __('Discovery server')]); ?> <?php echo html_print_image('images/first_task/icono_grande_reconserver.png', true, ['title' => __('Discovery server')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Discovery Task'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Discovery Task'); ?></h3><p id="description_task">

View File

@ -15,14 +15,14 @@ global $config;
global $agent_w; global $agent_w;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no services defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no services defined yet.') ]); ?>
<?php if ($agent_w) { ?> <?php if ($agent_w) { ?>
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_servicios.png', true, ['title' => __('Services')]); ?> <?php echo html_print_image('images/first_task/icono_grande_servicios.png', true, ['title' => __('Services')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Services'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Services'); ?></h3><p id="description_task">

View File

@ -13,13 +13,13 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no SNMP filter defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no SNMP filter defined yet.') ]); ?>
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_reconserver.png', true, ['title' => __('SNMP Filter')]); ?> <?php echo html_print_image('images/first_task/icono_grande_reconserver.png', true, ['title' => __('SNMP Filter')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create SNMP Filter'); ?></h3><p id="description_task"> <h3> <?php echo __('Create SNMP Filter'); ?></h3><p id="description_task">

View File

@ -13,13 +13,13 @@
// GNU General Public License for more details. // GNU General Public License for more details.
global $config; global $config;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php ui_print_info_message(['no_close' => true, 'message' => __('There are no tags defined yet.') ]); ?> <?php ui_print_info_message(['no_close' => true, 'message' => __('There are no tags defined yet.') ]); ?>
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_gestiondetags.png', true, ['title' => __('Tags')]); ?> <?php echo html_print_image('images/first_task/icono_grande_gestiondetags.png', true, ['title' => __('Tags')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Tags'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Tags'); ?></h3><p id="description_task">

View File

@ -15,7 +15,7 @@ global $config;
global $networkmaps_write; global $networkmaps_write;
global $networkmaps_manage; global $networkmaps_manage;
check_login(); check_login();
ui_require_css_file('firts_task'); ui_require_css_file('first_task');
?> ?>
<?php <?php
ui_print_info_message(['no_close' => true, 'message' => __('There are no transactions defined yet.') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no transactions defined yet.') ]);
@ -25,7 +25,7 @@ if ($networkmaps_write || $networkmaps_manage) {
<div class="new_task"> <div class="new_task">
<div class="image_task"> <div class="image_task">
<?php echo html_print_image('images/firts_task/icono_grande_topology.png', true, ['title' => __('Transactions')]); ?> <?php echo html_print_image('images/first_task/icono_grande_topology.png', true, ['title' => __('Transactions')]); ?>
</div> </div>
<div class="text_task"> <div class="text_task">
<h3> <?php echo __('Create Transactions'); ?></h3><p id="description_task"> <h3> <?php echo __('Create Transactions'); ?></h3><p id="description_task">

View File

@ -348,7 +348,7 @@ if ($config['menu_type'] == 'classic') {
// Support. // Support.
if (defined('PANDORA_ENTERPRISE')) { if (enterprise_installed()) {
$header_support_link = $config['custom_support_url']; $header_support_link = $config['custom_support_url'];
} else { } else {
$header_support_link = 'https://pandorafms.com/forums/'; $header_support_link = 'https://pandorafms.com/forums/';
@ -635,12 +635,6 @@ if ($config['menu_type'] == 'classic') {
* Loads modal from AJAX to add feedback. * Loads modal from AJAX to add feedback.
*/ */
function show_feedback() { function show_feedback() {
<?php
// Require specific CSS and JS.
ui_require_css_file('wizard');
ui_require_css_file('discovery');
ui_require_css_file('diagnostics');
?>
var btn_ok_text = '<?php echo __('Send'); ?>'; var btn_ok_text = '<?php echo __('Send'); ?>';
var btn_cancel_text = '<?php echo __('Cancel'); ?>'; var btn_cancel_text = '<?php echo __('Cancel'); ?>';
var title = '<?php echo __('Report an issue'); ?>'; var title = '<?php echo __('Report an issue'); ?>';
@ -719,13 +713,15 @@ if ($config['menu_type'] == 'classic') {
$("#agent_access").css("display",""); $("#agent_access").css("display","");
}); });
// Feedback. <?php if (enterprise_installed()) { ?>
$("#feedback-header").click(function () { // Feedback.
// Clean DOM. $("#feedback-header").click(function () {
$("#feedback-header").empty(); // Clean DOM.
// Function charge Modal. $("#feedback-header").empty();
show_feedback(); // Function charge Modal.
}); show_feedback();
});
<?php } ?>
function blinkpubli(){ function blinkpubli(){
$(".publienterprise").delay(100).fadeTo(300,0.2).delay(100).fadeTo(300,1, blinkpubli); $(".publienterprise").delay(100).fadeTo(300,0.2).delay(100).fadeTo(300,1, blinkpubli);

View File

@ -88,6 +88,24 @@ if (!empty($config['login_background'])) {
$login_body_style = "style=\"background:linear-gradient(74deg, #02020255 36%, transparent 36%), url('".$background_url."');\""; $login_body_style = "style=\"background:linear-gradient(74deg, #02020255 36%, transparent 36%), url('".$background_url."');\"";
} }
// Get alternative custom in case of db fail.
$custom_fields = [
'custom_logo_login',
'custom_splash_login',
'custom_title1_login',
'custom_title2_login',
'rb_product_name',
];
foreach ($custom_fields as $field) {
if (!isset($config[$field])) {
if (isset($config[$field.'_alt'])) {
$config[$field] = $config[$field.'_alt'];
$custom_conf_enabled = true;
}
}
}
// Get the custom icons. // Get the custom icons.
$docs_logo = ui_get_docs_logo(); $docs_logo = ui_get_docs_logo();
$support_logo = ui_get_support_logo(); $support_logo = ui_get_support_logo();
@ -96,16 +114,16 @@ echo '<div id="header_login">';
echo '<div id="list_icon_docs_support"><ul>'; echo '<div id="list_icon_docs_support"><ul>';
if ($docs_logo !== false) { if ($docs_logo !== false) {
echo '<li><a href="'.ui_get_full_external_url($config['custom_docs_url']).'" target="_blank"><img src="'.$docs_logo.'" alt="docs"></a></li>'; echo '<li><a href="'.$config['custom_docs_url'].'" target="_blank"><img src="'.$docs_logo.'" alt="docs"></a></li>';
} }
echo '<li><a href="'.ui_get_full_external_url($config['custom_docs_url']).'" target="_blank">'.__('Docs').'</li>'; echo '<li><a href="'.$config['custom_docs_url'].'" target="_blank">'.__('Docs').'</li>';
if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php')) { if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php')) {
if ($support_logo !== false) { if ($support_logo !== false) {
echo '<li id="li_margin_left"><a href="'.ui_get_full_external_url($config['custom_docs_url']).'" target="_blank"><img src="'.$support_logo.'" alt="support"></a></li>'; echo '<li id="li_margin_left"><a href="'.$config['custom_docs_url'].'" target="_blank"><img src="'.$support_logo.'" alt="support"></a></li>';
} }
echo '<li><a href="'.ui_get_full_external_url($config['custom_support_url']).'" target="_blank">'.__('Support').'</li>'; echo '<li><a href="'.$config['custom_support_url'].'" target="_blank">'.__('Support').'</li>';
} else { } else {
echo '<li id="li_margin_left"><a href="https://pandorafms.com/monitoring-services/support/" target="_blank"><img src="'.$support_logo.'" alt="support"></a></li>'; echo '<li id="li_margin_left"><a href="https://pandorafms.com/monitoring-services/support/" target="_blank"><img src="'.$support_logo.'" alt="support"></a></li>';
echo '<li>'.__('Support').'</li>'; echo '<li>'.__('Support').'</li>';
@ -133,7 +151,7 @@ if (defined('METACONSOLE')) {
html_print_image('enterprise/images/custom_logo_login/'.$config['custom_logo_login'], false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true); html_print_image('enterprise/images/custom_logo_login/'.$config['custom_logo_login'], false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true);
} }
} else { } else {
if (!isset($config['custom_logo_login']) || $config['custom_logo_login'] == 0) { if (!isset($config['custom_logo_login']) || $config['custom_logo_login'] === 0) {
html_print_image('images/custom_logo_login/pandora_logo.png', false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true); html_print_image('images/custom_logo_login/pandora_logo.png', false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true);
} else { } else {
html_print_image('images/custom_logo_login/'.$config['custom_logo_login'], false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true); html_print_image('images/custom_logo_login/'.$config['custom_logo_login'], false, ['class' => 'login_logo', 'alt' => 'logo', 'border' => 0, 'title' => $logo_title], false, true);
@ -423,9 +441,14 @@ if ($login_screen == 'logout') {
} }
switch ($login_screen) { switch ($login_screen) {
case 'error_authconfig':
case 'error_dbconfig': case 'error_dbconfig':
$title = __('Problem with %s database', get_product_name()); case 'error_authconfig':
if (!isset($config['rb_product_name_alt'])) {
$title = __('Problem with %s database', get_product_name());
} else {
$title = __('Problem with %s database', $config['rb_product_name_alt']);
}
$message = __( $message = __(
'Cannot connect to the database, please check your database setup in the <b>include/config.php</b> file.<i><br/><br/> 'Cannot connect to the database, please check your database setup in the <b>include/config.php</b> file.<i><br/><br/>
Probably your database, hostname, user or password values are incorrect or Probably your database, hostname, user or password values are incorrect or

View File

@ -83,7 +83,6 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
</style> </style>
</head> </head>
<body> <body>
<div id="alert_messages_na"> <div id="alert_messages_na">
<div class='modalheade'> <div class='modalheade'>
@ -100,10 +99,29 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
?> ?>
</div> </div>
</div> </div>
<a href='https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration' target='_blank'> <?php
<div class='modalwikibutto cerrar'> $custom_conf_enabled = false;
<span class='modalwikibuttontex'> <?php echo __('Documentation'); ?></span> foreach ($config as $key => $value) {
</div> if (preg_match('/._alt/i', $key)) {
$custom_conf_enabled = true;
break;
}
}
if (!$custom_conf_enabled) {
echo '
<a href="https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration" target="_blank">
<div class="modalwikibutto cerrar">
<span class="modalwikibuttontex">'.__('Documentation').'
</span>
</div>
</a>
';
}
?>
</a> </a>
</div> </div>

View File

@ -275,7 +275,7 @@ if ($new_agent) {
$table_alias = '<div class="label_select"><p class="input_label">'.__('Alias').': '.ui_print_help_tip(__('Characters /,\,|,%,#,&,$ will be ignored'), true).'</p>'; $table_alias = '<div class="label_select"><p class="input_label">'.__('Alias').': '.ui_print_help_tip(__('Characters /,\,|,%,#,&,$ will be ignored'), true).'</p>';
$table_alias .= '<div class='.$label_select_parent.'>'; $table_alias .= '<div class='.$label_select_parent.'>';
$table_alias .= '<div class='.$label_select_child_left.'>'.html_print_input_text('alias', $alias, '', 50, 100, true).'</div>'; $table_alias .= '<div class='.$label_select_child_left.'>'.html_print_input_text('alias', $alias, '', 50, 100, true, false, true).'</div>';
if ($new_agent) { if ($new_agent) {
$table_alias .= '<div class="label_select_child_right">'.html_print_checkbox_switch('alias_as_name', 1, $config['alias_as_name'], true).__('Use alias as name').'</div>'; $table_alias .= '<div class="label_select_child_right">'.html_print_checkbox_switch('alias_as_name', 1, $config['alias_as_name'], true).__('Use alias as name').'</div>';
} }

View File

@ -126,7 +126,7 @@ if ($fields) {
$table->size[3] = '8%'; $table->size[3] = '8%';
$table->data = []; $table->data = [];
} else { } else {
include_once $config['homedir'].'/general/firts_task/fields_manager.php'; include_once $config['homedir'].'/general/first_task/fields_manager.php';
return; return;
} }

View File

@ -352,7 +352,7 @@ if (!empty($groups)) {
// No downtimes cause the user has not anyone. // No downtimes cause the user has not anyone.
if (!$downtimes && !$filter_performed) { if (!$downtimes && !$filter_performed) {
include_once $config['homedir'].'/general/firts_task/planned_downtime.php'; include_once $config['homedir'].'/general/first_task/planned_downtime.php';
} }
// No downtimes cause the user performed a search. // No downtimes cause the user performed a search.
else if (!$downtimes) { else if (!$downtimes) {

View File

@ -184,9 +184,11 @@ if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
} }
ui_require_css_file('cluetip', 'include/styles/js/'); ui_require_css_file('cluetip', 'include/styles/js/');
ui_require_jquery_file('validate');
ui_require_jquery_file('cluetip'); ui_require_jquery_file('cluetip');
ui_require_jquery_file('pandora.controls'); ui_require_jquery_file('pandora.controls');
ui_require_jquery_file('bgiframe'); ui_require_jquery_file('bgiframe');
?> ?>
<script type="text/javascript"> <script type="text/javascript">
/* <![CDATA[ */ /* <![CDATA[ */
@ -202,6 +204,24 @@ $(document).ready (function () {
}); });
<?php endif; ?> <?php endif; ?>
// Rule.
$.validator.addMethod(
"valueNotEquals",
function(value, element, arg) {
return arg != value;
},
"Value must not equal arg."
);
// configure your validation
$("form.add_alert_form").validate({
rules: {
id_agent_module: { valueNotEquals: "0" }
},
messages: {
id_agent_module: { valueNotEquals: "Please select an item!" }
}
});
$("select#template").change (function () { $("select#template").change (function () {
id = this.value; id = this.value;
$a = $(this).siblings ("a.template_details"); $a = $(this).siblings ("a.template_details");

View File

@ -346,6 +346,8 @@ if (check_acl($config['id_user'], 0, 'PM') || check_acl($config['id_user'], 0, '
$sub['godmode/setup/links']['id'] = 'Links'; $sub['godmode/setup/links']['id'] = 'Links';
$sub['tools/diagnostics']['text'] = __('Diagnostic info'); $sub['tools/diagnostics']['text'] = __('Diagnostic info');
$sub['tools/diagnostics']['id'] = 'Diagnostic info'; $sub['tools/diagnostics']['id'] = 'Diagnostic info';
enterprise_hook('omnishell');
$sub['godmode/setup/news']['text'] = __('Site news'); $sub['godmode/setup/news']['text'] = __('Site news');
$sub['godmode/setup/news']['id'] = 'Site news'; $sub['godmode/setup/news']['id'] = 'Site news';
$sub['godmode/setup/file_manager']['text'] = __('File manager'); $sub['godmode/setup/file_manager']['text'] = __('File manager');

View File

@ -290,7 +290,7 @@ $table_aux = new stdClass();
foreach ($result_graphs as $graph) { foreach ($result_graphs as $graph) {
$data = []; $data = [];
$data[0] = '<a href="index.php?sec=reporting&sec2=operation/reporting/graph_viewer&view_graph=1&id='.$graph['id_graph'].'">'.ui_print_truncate_text($graph['name'], 70).'</a>'; $data[0] = '<a href="index.php?sec=reporting&sec2=operation/reporting/graph_viewer&view_graph=1&id='.$graph['id_graph'].'">'.ui_print_truncate_text(io_safe_output($graph['name']), 70).'</a>';
$data[1] = ui_print_truncate_text($graph['description'], 70); $data[1] = ui_print_truncate_text($graph['description'], 70);
@ -337,7 +337,7 @@ $table_aux = new stdClass();
echo '</div>'; echo '</div>';
} else { } else {
include_once $config['homedir'].'/general/firts_task/custom_graphs.php'; include_once $config['homedir'].'/general/first_task/custom_graphs.php';
} }
?> ?>

View File

@ -395,7 +395,7 @@ if ($own_info['is_admin'] || $vconsoles_read) {
if (!$maps && !is_metaconsole()) { if (!$maps && !is_metaconsole()) {
$total = count(visual_map_get_user_layouts($config['id_user'], false, false, false)); $total = count(visual_map_get_user_layouts($config['id_user'], false, false, false));
if (!$total) { if (!$total) {
include_once $config['homedir'].'/general/firts_task/map_builder.php'; include_once $config['homedir'].'/general/first_task/map_builder.php';
} else { } else {
ui_print_info_message( ui_print_info_message(
[ [

View File

@ -154,7 +154,7 @@ foreach ($servers as $server) {
if ($server['type'] == 'recon') { if ($server['type'] == 'recon') {
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist').'">'; $data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist').'">';
$data[8] .= html_print_image( $data[8] .= html_print_image(
'images/firts_task/icono_grande_reconserver.png', 'images/first_task/icono_grande_reconserver.png',
true, true,
[ [
'title' => __('Manage Discovery tasks'), 'title' => __('Manage Discovery tasks'),

View File

@ -557,7 +557,7 @@ $row++;
// For 5.1 Autohidden menu feature // For 5.1 Autohidden menu feature
$table_styles->data['autohidden'][0] = __('Autohidden menu'); $table_styles->data['autohidden'][0] = __('Automatically hide submenu');
$table_styles->data['autohidden'][1] = html_print_checkbox_switch( $table_styles->data['autohidden'][1] = html_print_checkbox_switch(
'autohidden_menu', 'autohidden_menu',
1, 1,
@ -1032,6 +1032,12 @@ $row++;
); );
$row++; $row++;
$table_other->data[$row][0] = __('Font size for items reports');
$table_other->data[$row][1] = "<input type ='number' value=".$config['font_size_item_report']." size='1' name='font_size_item_report' min='1' max='9' step='0.1'>";
$row++;
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
$dirItems = scandir($config['homedir'].'/images/custom_logo'); $dirItems = scandir($config['homedir'].'/images/custom_logo');
foreach ($dirItems as $entryDir) { foreach ($dirItems as $entryDir) {

View File

@ -304,7 +304,7 @@ if (!empty($result)) {
} else if ($filter_performed) { } else if ($filter_performed) {
echo $filter_form; echo $filter_form;
} else { } else {
include $config['homedir'].'/general/firts_task/tags.php'; include $config['homedir'].'/general/first_task/tags.php';
return; return;
} }
} }

View File

@ -145,7 +145,7 @@ class DiscoveryTaskList extends Wizard
$ret2 = $this->showList(); $ret2 = $this->showList();
if ($ret === false && $ret2 === false) { if ($ret === false && $ret2 === false) {
include_once $config['homedir'].'/general/firts_task/recon_view.php'; include_once $config['homedir'].'/general/first_task/recon_view.php';
} else { } else {
$form = [ $form = [
'form' => [ 'form' => [

View File

@ -436,11 +436,15 @@ class Wizard
* *
* @param array $input Definition of target block to be printed. * @param array $input Definition of target block to be printed.
* @param boolean $return Return as string or direct output. * @param boolean $return Return as string or direct output.
* @param boolean $direct Avoid encapsulation if input print is direct.
* *
* @return string HTML content. * @return string HTML content.
*/ */
public function printBlock(array $input, bool $return=false, bool $not_direct=false) public function printBlock(
{ array $input,
bool $return=false,
bool $direct=false
) {
$output = ''; $output = '';
if ($input['hidden'] == 1) { if ($input['hidden'] == 1) {
$class = ' hidden'; $class = ' hidden';
@ -453,7 +457,7 @@ class Wizard
} }
if (is_array($input['block_content']) === true) { if (is_array($input['block_content']) === true) {
$not_direct = (bool) $input['direct']; $direct = (bool) $input['direct'];
// Print independent block of inputs. // Print independent block of inputs.
$output .= '<li id="li-'.$input['block_id'].'" class="'.$class.'">'; $output .= '<li id="li-'.$input['block_id'].'" class="'.$class.'">';
@ -462,17 +466,21 @@ class Wizard
$output .= '<'.$input['wrapper'].' id="'.$input['block_id'].'" class="'.$class.'">'; $output .= '<'.$input['wrapper'].' id="'.$input['block_id'].'" class="'.$class.'">';
} }
if (!$not_direct) { if (!$direct) {
// Avoid encapsulation if input is direct => 1. // Avoid encapsulation if input is direct => 1.
$output .= '<ul class="wizard '.$input['block_class'].'">'; $output .= '<ul class="wizard '.$input['block_class'].'">';
} }
foreach ($input['block_content'] as $input) { foreach ($input['block_content'] as $input) {
$output .= $this->printBlock($input, $return, (bool) $not_direct); $output .= $this->printBlock(
$input,
$return,
(bool) $direct
);
} }
// Close block. // Close block.
if (!$not_direct) { if (!$direct) {
$output .= '</ul>'; $output .= '</ul>';
} }
@ -483,7 +491,7 @@ class Wizard
$output .= '</li>'; $output .= '</li>';
} else { } else {
if ($input['arguments']['type'] != 'hidden') { if ($input['arguments']['type'] != 'hidden') {
if (!$not_direct) { if (!$direct) {
$output .= '<li id="'.$input['id'].'" class="'.$class.'">'; $output .= '<li id="'.$input['id'].'" class="'.$class.'">';
} }
@ -491,7 +499,7 @@ class Wizard
$output .= $this->printInput($input['arguments']); $output .= $this->printInput($input['arguments']);
// Allow dynamic content. // Allow dynamic content.
$output .= $input['extra']; $output .= $input['extra'];
if (!$not_direct) { if (!$direct) {
$output .= '</li>'; $output .= '</li>';
} }
} else { } else {
@ -806,8 +814,11 @@ class Wizard
$padding_left = isset($column['padding-left']) ? 'padding-left: '.$column['padding-left'].';' : 'padding-left: 0;'; $padding_left = isset($column['padding-left']) ? 'padding-left: '.$column['padding-left'].';' : 'padding-left: 0;';
$padding_right = isset($column['padding-right']) ? 'padding-right: '.$column['padding-right'].';' : 'padding-right: 0;'; $padding_right = isset($column['padding-right']) ? 'padding-right: '.$column['padding-right'].';' : 'padding-right: 0;';
$extra_styles = isset($column['style']) ? $column['style'] : ''; $extra_styles = isset($column['style']) ? $column['style'] : '';
$class = isset($column['class']) ? $column['class'] : '';
$output .= '<div style="'.$width.$padding_left.$padding_right.$extra_styles.'">'; $output .= '<div class="'.$class.'" ';
$output .= ' style="'.$width.$padding_left.$padding_right;
$output .= $extra_styles.'">';
foreach ($column['inputs'] as $input) { foreach ($column['inputs'] as $input) {
if (is_array($input)) { if (is_array($input)) {

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 387 B

After

Width:  |  Height:  |  Size: 387 B

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

View File

@ -706,18 +706,34 @@ class Diagnostics extends Wizard
$bytes = 1048576; $bytes = 1048576;
$mega = 1024; $mega = 1024;
switch ($item['Variable_name']) { switch ($item['Variable_name']) {
case 'sql_mode': case 'innodb_buffer_pool_size':
$name = __('Sql mode'); $name = __('InnoDB buffer pool size');
$value = ($item['Value']); $value = ($item['Value'] / $bytes);
$status = (empty($item['Value']) === true) ? 1 : 0; $status = (($item['Value'] / $bytes) >= 250) ? 1 : 0;
$message = __('Must be empty'); $message = __(
'It has to be 40% of the server memory not recommended to be greater or less'
);
break; break;
case 'innodb_log_file_size': case 'innodb_file_per_table':
$name = __('InnoDB log file size'); $name = __('InnoDB file per table');
$value = ($item['Value'] / $bytes); $value = $item['Value'];
$status = (($item['Value'] / $bytes) >= 64) ? 1 : 0; $status = ($item['Value'] === 'ON') ? 1 : 0;
$message = __('Min. Recommended Value').' 64M'; $message = __('Recommended ON');
break;
case 'innodb_flush_log_at_trx_commit':
$name = __('InnoDB flush log at trx-commit');
$value = $item['Value'];
$status = ($item['Value'] == 2) ? 1 : 0;
$message = __('Recommended Value').' 2';
break;
case 'innodb_lock_wait_timeout':
$name = __('InnoDB lock wait timeout');
$value = $item['Value'];
$status = ($item['Value'] >= 90) ? 1 : 0;
$message = __('Min. Recommended Value').' 90s';
break; break;
case 'innodb_log_buffer_size': case 'innodb_log_buffer_size':
@ -727,13 +743,29 @@ class Diagnostics extends Wizard
$message = __('Min. Recommended Value').' 16M'; $message = __('Min. Recommended Value').' 16M';
break; break;
case 'innodb_flush_log_at_trx_commit': case 'innodb_log_file_size':
$name = __('InnoDB flush log at trx-commit'); $name = __('InnoDB log file size');
$value = $item['Value']; $value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 0) ? 1 : 0; $status = (($item['Value'] / $bytes) >= 64) ? 1 : 0;
$message = __('Min. Recommended Value').' 0'; $message = __('Min. Recommended Value').' 64M';
break; break;
/*
case 'join_buffer_size':
$name = __('Join buffer size');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 265) ? 1 : 0;
$message = __('Min. Recommended Value 265');
break;
case 'key_buffer_size':
$name = __('Key buffer size');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 256) ? 1 : 0;
$message = __('Min. Recommended Value').' 256';
break;
*/
case 'max_allowed_packet': case 'max_allowed_packet':
$name = __('Maximun allowed packet'); $name = __('Maximun allowed packet');
$value = ($item['Value'] / $bytes); $value = ($item['Value'] / $bytes);
@ -741,27 +773,34 @@ class Diagnostics extends Wizard
$message = __('Min. Recommended Value').' 32M'; $message = __('Min. Recommended Value').' 32M';
break; break;
case 'innodb_buffer_pool_size': case 'max_connections':
$name = __('InnoDB buffer pool size'); $name = __('Maximun connections');
$value = ($item['Value'] / $mega); $value = $item['Value'];
$status = (($item['Value'] / $mega) >= 250) ? 1 : 0; $status = (($item['Value']) >= 90) ? 1 : 0;
$message = __( $message = __('Min. Recommended Value');
'It has to be 40% of the server memory not recommended to be greater or less' $message .= ' 90 ';
); $message .= __('conections');
break; break;
case 'sort_buffer_size': case 'query_cache_limit':
$name = __('Sort buffer size'); $name = __('Query cache limit');
$value = number_format(($item['Value'] / $mega), 2); $value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 8) ? 1 : 0;
$message = __('Min. Recommended Value').' 8M';
break;
case 'query_cache_min_res_unit':
$name = __('Query cache min-res-unit');
$value = ($item['Value'] / $mega);
$status = (($item['Value'] / $mega) >= 2) ? 1 : 0;
$message = __('Min. Recommended Value').' 2M';
break;
case 'query_cache_size':
$name = __('Query cache size');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 32) ? 1 : 0; $status = (($item['Value'] / $bytes) >= 32) ? 1 : 0;
$message = __('Min. Recommended Value').' 32'; $message = __('Min. Recommended Value').' 32M';
break;
case 'join_buffer_size':
$name = __('Join buffer size');
$value = ($item['Value'] / $mega);
$status = (($item['Value'] / $bytes) >= 265) ? 1 : 0;
$message = __('Min. Recommended Value 265');
break; break;
case 'query_cache_type': case 'query_cache_type':
@ -771,83 +810,48 @@ class Diagnostics extends Wizard
$message = __('Recommended ON'); $message = __('Recommended ON');
break; break;
case 'query_cache_size': case 'read_buffer_size':
$name = __('Query cache size'); $name = __('Read buffer size');
$value = ($item['Value'] / $bytes); $value = ($item['Value'] / $mega);
$status = (($item['Value'] / $bytes) >= 32) ? 1 : 0; $status = (($item['Value'] / $mega) >= 32) ? 1 : 0;
$message = __('Min. Recommended Value').' 32MB'; $message = __('Min. Recommended Value').' 32K';
break; break;
case 'query_cache_limit': case 'read_rnd_buffer_size':
$name = __('Query cache limit'); $name = __('Read rnd-buffer size');
$value = ($item['Value'] / $bytes); $value = ($item['Value'] / $mega);
$status = (($item['Value'] / $bytes) >= 256) ? 1 : 0; $status = (($item['Value'] / $mega) >= 32) ? 1 : 0;
$message = __('Min. Recommended Value').' 256K'; $message = __('Min. Recommended Value').' 32K';
break; break;
case 'innodb_lock_wait_timeout': case 'sort_buffer_size':
$name = __('InnoDB lock wait timeout'); $name = __('Sort buffer size');
$value = $item['Value']; $value = ($item['Value'] / $mega);
$status = (($item['Value'] / $bytes) >= 90) ? 1 : 0; $status = (($item['Value'] / $mega) >= 32) ? 1 : 0;
$message = __('Min. Recommended Value').' 90s'; $message = __('Min. Recommended Value').' 32K';
break;
case 'sql_mode':
$name = __('Sql mode');
$value = ($item['Value']);
$status = (empty($item['Value']) === true) ? 1 : 0;
$message = __('Must be empty');
break; break;
case 'thread_cache_size': case 'thread_cache_size':
$name = __('Thread cache size'); $name = __('Thread cache size');
$value = $item['Value']; $value = $item['Value'];
$status = (($item['Value'] / $bytes) >= 8) ? 1 : 0; $status = ($item['Value'] >= 8) ? 1 : 0;
$message = __('Min. Recommended Value').' 8'; $message = __('Min. Recommended Value').' 8';
break; break;
case 'thread_stack': case 'thread_stack':
$name = __('Thread stack'); $name = __('Thread stack');
$value = ($item['Value'] / $bytes); $value = ($item['Value'] / $mega);
$status = (($item['Value'] / $bytes) >= 256) ? 1 : 0; $status = (($item['Value'] / $mega) >= 256) ? 1 : 0;
$message = __('Min. Recommended Value').' 256K';
break;
case 'max_connections':
$name = __('Maximun connections');
$value = $item['Value'];
$status = (($item['Value'] / $bytes) >= 90) ? 1 : 0;
$message = __('Min. Recommended Value').' 90';
break;
case 'key_buffer_size':
$name = __('Key buffer size');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 256) ? 1 : 0;
$message = __('Min. Recommended Value').' 256'; $message = __('Min. Recommended Value').' 256';
break; break;
case 'read_buffer_size':
$name = __('Read buffer size');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 32) ? 1 : 0;
$message = __('Min. Recommended Value').' 32';
break;
case 'read_rnd_buffer_size':
$name = __('Read rnd-buffer size');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 32) ? 1 : 0;
$message = __('Min. Recommended Value').' 32';
break;
case 'query_cache_min_res_unit':
$name = __('Query cache min-res-unit');
$value = ($item['Value'] / $bytes);
$status = (($item['Value'] / $bytes) >= 2) ? 1 : 0;
$message = __('Min. Recommended Value').' 2k';
break;
case 'innodb_file_per_table':
$name = __('InnoDB file per table');
$value = $item['Value'];
$status = ($item['Value'] === 'ON') ? 1 : 0;
$message = __('Recommended ON');
break;
default: default:
$name = ''; $name = '';
$value = 0; $value = 0;

View File

@ -211,7 +211,13 @@ class WelcomeWindow extends Wizard
$this->step = $config['welcome_state']; $this->step = $config['welcome_state'];
// Get step available. // Get step available.
if (empty($config['welcome_id_agent']) === true) { if (empty($config['welcome_mail_configured']) === true
&& get_parameter('sec2') == 'godmode/setup/setup'
&& get_parameter('section', '') == 'general'
&& get_parameter('update_config', false) !== false
) {
$this->step = W_CONFIGURE_MAIL;
} else if (empty($config['welcome_id_agent']) === true) {
$this->step = W_CREATE_AGENT; $this->step = W_CREATE_AGENT;
} else if (empty($config['welcome_module']) === true) { } else if (empty($config['welcome_module']) === true) {
$this->step = W_CREATE_MODULE; $this->step = W_CREATE_MODULE;
@ -219,8 +225,6 @@ class WelcomeWindow extends Wizard
$this->step = W_CREATE_ALERT; $this->step = W_CREATE_ALERT;
} else if (empty($config['welcome_task']) === true) { } else if (empty($config['welcome_task']) === true) {
$this->step = W_CREATE_TASK; $this->step = W_CREATE_TASK;
} else if (empty($config['welcome_mail_configured']) === true) {
$this->step = W_CONFIGURE_MAIL;
} }
return $this->step; return $this->step;
@ -338,11 +342,11 @@ class WelcomeWindow extends Wizard
$btn_create_alert_class = ''; $btn_create_alert_class = '';
$btn_create_discovery_class = 'pending'; $btn_create_discovery_class = 'pending';
$li_configure_mail_class = 'green'; $li_configure_mail_class = 'row_green';
$li_create_agent_class = 'green'; $li_create_agent_class = 'row_green';
$li_create_module_class = 'grey'; $li_create_module_class = 'row_grey';
$li_create_alert_class = 'grey'; $li_create_alert_class = 'row_grey';
$li_create_discovery_class = 'green'; $li_create_discovery_class = 'row_green';
if (empty($config['welcome_mail_configured']) === false) { if (empty($config['welcome_mail_configured']) === false) {
$btn_configure_mail_class = ' completed'; $btn_configure_mail_class = ' completed';
@ -351,18 +355,18 @@ class WelcomeWindow extends Wizard
if (empty($config['welcome_id_agent']) === false) { if (empty($config['welcome_id_agent']) === false) {
$btn_create_agent_class = ' completed'; $btn_create_agent_class = ' completed';
$btn_create_module_class = ' pending'; $btn_create_module_class = ' pending';
$li_create_module_class = 'green'; $li_create_module_class = 'row_green';
} }
if (empty($config['welcome_module']) === false) { if (empty($config['welcome_module']) === false) {
$btn_create_module_class = ' completed'; $btn_create_module_class = ' completed';
$btn_create_alert_class = ' pending'; $btn_create_alert_class = ' pending';
$li_create_module_class = 'green'; $li_create_module_class = 'row_green';
} }
if (empty($config['welcome_alert']) === false) { if (empty($config['welcome_alert']) === false) {
$btn_create_alert_class = ' completed'; $btn_create_alert_class = ' completed';
$li_create_alert_class = 'green'; $li_create_alert_class = 'row_green';
} }
if (empty($config['welcome_task']) === false) { if (empty($config['welcome_task']) === false) {
@ -376,8 +380,8 @@ class WelcomeWindow extends Wizard
$btn_create_module_class = ' completed'; $btn_create_module_class = ' completed';
$btn_create_alert_class = ' completed'; $btn_create_alert_class = ' completed';
$btn_create_discovery_class = ' completed'; $btn_create_discovery_class = ' completed';
$li_create_module_class = 'green'; $li_create_module_class = 'row_green';
$li_create_alert_class = 'green'; $li_create_alert_class = 'row_green';
} }
$form = [ $form = [
@ -543,7 +547,10 @@ class WelcomeWindow extends Wizard
], ],
], ],
], ],
[ ];
if (enterprise_installed()) {
$inputs[] = [
'wrapper' => 'div', 'wrapper' => 'div',
'block_id' => 'div_not_working', 'block_id' => 'div_not_working',
'class' => 'hole flex-row w100p', 'class' => 'hole flex-row w100p',
@ -569,8 +576,8 @@ class WelcomeWindow extends Wizard
], ],
], ],
], ];
]; }
$output = $this->printForm( $output = $this->printForm(
[ [
@ -785,6 +792,9 @@ class WelcomeWindow extends Wizard
// Finished! do not show. // Finished! do not show.
$this->setStep(WELCOME_FINISHED); $this->setStep(WELCOME_FINISHED);
return false; return false;
} else if (empty($sec2) === true) {
// Pending tasks.
return true;
} }
if ($this->step === WELCOME_FINISHED) { if ($this->step === WELCOME_FINISHED) {

View File

@ -20,7 +20,7 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC191108'; $build_version = 'PC191113';
$pandora_version = 'v7.0NG.740'; $pandora_version = 'v7.0NG.740';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.
@ -148,8 +148,6 @@ if (!isset($config['homeurl_static'])) {
} }
} }
db_select_engine();
$config['dbconnection'] = db_connect();
if (! defined('EXTENSIONS_DIR')) { if (! defined('EXTENSIONS_DIR')) {
@ -160,6 +158,9 @@ if (! defined('ENTERPRISE_DIR')) {
define('ENTERPRISE_DIR', 'enterprise'); define('ENTERPRISE_DIR', 'enterprise');
} }
db_select_engine();
$config['dbconnection'] = db_connect();
require_once $ownDir.'functions_config.php'; require_once $ownDir.'functions_config.php';
date_default_timezone_set('Europe/Madrid'); date_default_timezone_set('Europe/Madrid');

View File

@ -1281,6 +1281,10 @@ function config_update_config()
} }
// Juanma (06/05/2014) New feature: Custom front page for reports. // Juanma (06/05/2014) New feature: Custom front page for reports.
if (!config_update_value('font_size_item_report', get_parameter('font_size_item_report', 2))) {
$error_update[] = __('Font size for items reports');
}
if (!config_update_value('custom_report_front', get_parameter('custom_report_front'))) { if (!config_update_value('custom_report_front', get_parameter('custom_report_front'))) {
$error_update[] = __('Custom report front'); $error_update[] = __('Custom report front');
} }
@ -2809,6 +2813,10 @@ function config_process_config()
config_update_value('custom_report_front', 0); config_update_value('custom_report_front', 0);
} }
if (!isset($config['font_size_item_report'])) {
config_update_value('font_size_item_report', 2);
}
if (!isset($config['custom_report_front_font'])) { if (!isset($config['custom_report_front_font'])) {
config_update_value('custom_report_front_font', 'FreeSans.ttf'); config_update_value('custom_report_front_font', 'FreeSans.ttf');
} }

View File

@ -447,7 +447,7 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
if ($mini) { if ($mini) {
$font_size = '1.5'; $font_size = '1.5';
} else { } else {
$font_size = '3'; $font_size = $config['font_size_item_report'];
} }
$metaconsole_on = is_metaconsole(); $metaconsole_on = is_metaconsole();
@ -2493,7 +2493,7 @@ function reporting_html_monitor_report($table, $item, $mini, $pdf=0)
if ($mini) { if ($mini) {
$font_size = '1.5'; $font_size = '1.5';
} else { } else {
$font_size = '3'; $font_size = $config['font_size_item_report'];
} }
$table->colspan['module']['cell'] = 3; $table->colspan['module']['cell'] = 3;
@ -2735,10 +2735,12 @@ function reporting_html_min_value(&$table, $item, $mini)
function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_empty=false) function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_empty=false)
{ {
global $config;
if ($mini) { if ($mini) {
$font_size = '1.5'; $font_size = '1.5';
} else { } else {
$font_size = '3'; $font_size = $config['font_size_item_report'];
} }
if (isset($item['visual_format']) && $item['visual_format'] != 0 if (isset($item['visual_format']) && $item['visual_format'] != 0

View File

@ -2911,6 +2911,130 @@ function ui_progress(
} }
/**
* Generates a progress bar CSS based.
* Requires css progress.css
*
* @param array $progress Progress.
* @param string $width Width.
* @param integer $height Height in 'em'.
* @param array $color status color.
* @param boolean $return Return or paint (if false).
* @param boolean $text Text to be displayed,by default progress %.
* @param array $ajax Ajax: [ 'page' => 'page', 'data' => 'data' ] Sample:
* [
* 'page' => 'operation/agentes/ver_agente', Target page.
* 'interval' => 100 / $agent["intervalo"], Ask every interval seconds.
* 'data' => [ Data to be sent to target page.
* 'id_agente' => $id_agente,
* 'refresh_contact' => 1,
* ],
* ].
*
* @return string HTML code.
*/
function ui_progress_extend(
$progress,
$width='100%',
$height='2.5',
$color='#82b92e',
$return=true,
$text='',
$ajax=false
) {
if (!$progress['total']) {
$progress = 0;
}
$totalW = ($progress['total'] * 100);
if ($totalW > 100) {
$totalW = 100;
}
if ($totalW < 0) {
$totalW = 0;
}
if (empty($text)) {
$text = $totalW.'%';
}
$badW = (($progress['bad'] * 100 ) / $progress['total']);
$goodW = (($progress['good'] * 100 ) / $progress['total']);
$unknownW = (($progress['unknown'] * 100 ) / $progress['total']);
ui_require_css_file('progress');
$output .= '<div class="progress_main" data-label="total"';
$output .= '" style="width: '.$totalW.'%;display:flex; height: '.$height.'em;">';
$output .= '<div id="unknow_div" onmouseover="Mouseover()" class="progress_main text_over" data-label="Pending"';
$output .= '" style="width: '.$unknownW.'%; height: '.$height.'em; background-color: '.COL_UNKNOWN.'; "></div>';
$output .= '<div class="progress_main" data-label="Success"';
$output .= '" style="width: '.$goodW.'%; height: '.$height.'em; background-color: '.COL_NORMAL.';"></div>';
$output .= '<div class="progress_main" data-label="Error"';
$output .= '" style="width: '.$badW.'%; height: '.$height.'em; background-color: '.COL_CRITICAL.';"></div>';
$output .= '</div>';
if ($ajax !== false && is_array($ajax)) {
$output .= '<script type="text/javascript">
$(document).ready(function() {
function
document.getElementById("#unknow_div").onmouseover = function() {
document.getElementById("#unknow_div").append( $( "<span> ***</span>" ) );
}
}
setInterval(() => {
last = $(".progress_main").attr("data-label").split(" ")[0]*1;
width = $(".progress").width() / $(".progress").parent().width() * 100;
width_interval = '.$ajax['interval'].';
if (last % 10 == 0) {
$.post({
url: "'.ui_get_full_url('ajax.php', false, false, false).'",
data: {';
if (is_array($ajax['data'])) {
foreach ($ajax['data'] as $token => $value) {
$output .= '
'.$token.':"'.$value.'",';
}
}
$output .= '
page: "'.$ajax['page'].'"
},
success: function(data) {
try {
val = JSON.parse(data);
$(".progress_main").attr("data-label", val["last_contact"]+" s");
$(".progress").width(val["progress"]+"%");
} catch (e) {
console.error(e);
$(".progress_text").attr("data-label", (last -1) + " s");
if (width < 100) {
$(".progress").width((width+width_interval) + "%");
}
}
}
});
} else {
$(".progress_main").attr("data-label", (last -1) + " s");
if (width < 100) {
$(".progress").width((width+width_interval) + "%");
}
}
}, 1000);
});
</script>';
}
if (!$return) {
echo $output;
}
return $output;
}
/** /**
* Generate needed code to print a datatables jquery plugin. * Generate needed code to print a datatables jquery plugin.
* *
@ -3169,6 +3293,9 @@ function ui_print_datatable(array $parameters)
); );
} }
// Languages.
$processing = __('Processing');
// Extra html. // Extra html.
$extra = ''; $extra = '';
if (isset($parameters['extra_html']) && !empty($parameters['extra_html'])) { if (isset($parameters['extra_html']) && !empty($parameters['extra_html'])) {
@ -3233,6 +3360,9 @@ function ui_print_datatable(array $parameters)
searching: false, searching: false,
responsive: true, responsive: true,
dom: "plfrtiBp", dom: "plfrtiBp",
language: {
processing:"'.$processing.'"
},
buttons: [ buttons: [
{ {
extend: "csv", extend: "csv",

File diff suppressed because one or more lines are too long

View File

@ -1885,12 +1885,35 @@ function load_modal(settings) {
} }
data.append("page", settings.onshow.page); data.append("page", settings.onshow.page);
data.append("method", settings.onshow.method); data.append("method", settings.onshow.method);
if (settings.onshow.extradata != undefined) {
data.append("extradata", JSON.stringify(settings.onshow.extradata));
}
if (settings.target == undefined) {
var uniq = uniqId();
var div = document.createElement("div");
div.id = "div-modal-" + uniq;
div.style.display = "none";
document.getElementById("main").append(div);
var id_modal_target = "#div-modal-" + uniq;
settings.target = $(id_modal_target);
}
var width = 630; var width = 630;
if (settings.onshow.width) { if (settings.onshow.width) {
width = settings.onshow.width; width = settings.onshow.width;
} }
if (settings.modal.overlay == undefined) {
settings.modal.overlay = {
opacity: 0.5,
background: "black"
};
}
settings.target.html("Loading modal..."); settings.target.html("Loading modal...");
settings.target settings.target
.dialog({ .dialog({
@ -2081,14 +2104,16 @@ function load_modal(settings) {
modal: true, modal: true,
title: settings.modal.title, title: settings.modal.title,
width: width, width: width,
overlay: { overlay: settings.modal.overlay,
opacity: 0.5,
background: "black"
},
buttons: required_buttons, buttons: required_buttons,
closeOnEscape: false, closeOnEscape: false,
open: function() { open: function() {
$(".ui-dialog-titlebar-close").hide(); $(".ui-dialog-titlebar-close").hide();
},
close: function() {
if (id_modal_target != undefined) {
$(id_modal_target).remove();
}
} }
}); });
}, },
@ -2100,13 +2125,7 @@ function load_modal(settings) {
//Function that shows a dialog box to confirm closures of generic manners. The modal id is random //Function that shows a dialog box to confirm closures of generic manners. The modal id is random
function confirmDialog(settings) { function confirmDialog(settings) {
var randomStr = var randomStr = uniqId();
Math.random()
.toString(36)
.substring(2, 15) +
Math.random()
.toString(36)
.substring(2, 15);
$("body").append( $("body").append(
'<div id="confirm_' + randomStr + '">' + settings.message + "</div>" '<div id="confirm_' + randomStr + '">' + settings.message + "</div>"
@ -2142,6 +2161,18 @@ function confirmDialog(settings) {
.show(); .show();
} }
function uniqId() {
var randomStr =
Math.random()
.toString(36)
.substring(2, 15) +
Math.random()
.toString(36)
.substring(2, 15);
return randomStr;
}
/** /**
* Function to show modal with message Validation. * Function to show modal with message Validation.
* *

View File

@ -17,6 +17,10 @@
text-align: justify; text-align: justify;
} }
.dataTables_wrapper {
min-height: 150px;
}
.datatables-td-title { .datatables-td-title {
width: 25% !important; width: 25% !important;
font-weight: bolder; font-weight: bolder;

View File

@ -31,7 +31,7 @@ li.discovery > a label {
} }
div.data_container > label { div.data_container > label {
font-family: "lato-bolder", "Open Sans", sans-serif; font-family: "lato", "Open Sans", sans-serif;
font-weight: lighter; font-weight: lighter;
} }

View File

@ -1,5 +1,11 @@
.new_task p,
.new_task div {
font-family: "lato-lighter", "Open Sans", sans-serif;
font-weight: lighter;
}
.new_task { .new_task {
margin-top: 30px; margin-top: 30px;
min-width: 600px;
left: 20px; left: 20px;
width: 60%; width: 60%;
height: 300px; height: 300px;
@ -30,6 +36,7 @@ div.new_task_cluster > div {
.image_task { .image_task {
width: 20%; width: 20%;
min-width: 175px;
height: 100%; height: 100%;
float: left; float: left;
} }
@ -47,7 +54,7 @@ div.new_task_cluster > div {
.text_task { .text_task {
width: 70%; width: 70%;
float: right; float: left;
height: 100%; height: 100%;
padding-right: 25px; padding-right: 25px;
} }

View File

@ -6,15 +6,8 @@
overflow: hidden; overflow: hidden;
} }
#welcome_modal_window { #welcome_modal_window * {
/* font-size: 10pt;
max-height: 100%;
height: 100%;
border-left: 1em solid #82b92f;
margin-bottom: -59px;
padding-bottom: 100px;
margin-left: -1px;
*/
} }
#welcome_form ul.wizard > li { #welcome_form ul.wizard > li {
@ -60,7 +53,7 @@
} }
.completed { .completed {
background-image: url(../../images/input_tick.png); background-image: url(../../images/input_tick_badge.png);
} }
.centered_full { .centered_full {
@ -86,7 +79,7 @@
border-left: 4px solid #79a930; border-left: 4px solid #79a930;
} }
#welcome_form li:not(.centered_full):not(.white_box).grey { #welcome_form li:not(.centered_full):not(.white_box).row_grey {
border-left: 4px solid #d6d6d6; border-left: 4px solid #d6d6d6;
} }

View File

@ -0,0 +1,477 @@
.edit_yaml {
margin-left: 39px;
margin-top: 10px;
margin-bottom: 10px;
}
.margin_button {
margin-right: 5px;
}
.container-target {
display: flex;
flex-flow: row wrap;
}
.element-target {
width: 20px;
margin: 2px;
height: 20px;
}
.status-normal {
background-color: #add570;
}
.status-critical {
background-color: #e3485e;
}
.status-notinit {
background-color: #8bbbdd;
}
.container-msg-target-modal {
max-height: 400px;
overflow: initial;
padding-right: 20px;
padding-left: 20px;
}
.container-msg-target-modal p {
font-family: "lato-lighter", "Open Sans", sans-serif;
margin-bottom: 20px;
font-size: 10pt;
}
span.failed {
color: #fb4444;
font-weight: bolder;
}
span.success {
color: #82b92f;
font-weight: bolder;
}
.container-msg-target-modal pre {
font-family: monospace;
padding: 1em;
white-space: pre-wrap;
background-color: #efefef;
color: #565656;
font-size: 1.2em;
border: 2px solid #ddd;
border-radius: 5px;
}
.container-msg-target-modal p img {
margin-right: 0.3em;
height: 1.3em;
}
ul.wizard li > textarea {
height: 5em;
}
.label_select {
font-family: "lato-lighter", "Open Sans", sans-serif;
font-weight: bolder;
}
.divided select {
width: 100%;
}
.inline {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-content: center;
align-items: center;
}
.inline label:first-child {
width: 250px;
vertical-align: top;
display: inline-block;
}
.inline label:nth-child(3) {
margin-right: 1em;
margin-left: 1em;
}
.inline select {
margin-right: 1em;
}
.middle {
align-self: center;
}
.edit_discovery_info {
padding-top: 0;
}
ul.wizard {
width: 100%;
}
.filter_column {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
align-content: center;
}
.filter_column .edit_discovery_input {
flex-grow: 1;
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-content: baseline;
margin-left: 2em;
}
.filter_column .edit_discovery_input .label_select {
display: inline;
margin: 0;
}
.filter_column .edit_discovery_input select {
flex-grow: 1;
margin-left: 2em;
}
.wizard li {
display: flex;
}
/*
* Discovery css global
*/
ul.bigbuttonlist {
min-height: 200px;
}
li.discovery {
display: inline-block;
float: left;
width: 250px;
margin: 15px;
padding-bottom: 50px;
}
li.discovery > a {
text-decoration: none;
color: #333;
}
li.discovery > a:hover {
color: #000;
}
li.discovery img {
height: 90px;
}
li.discovery > a label {
cursor: pointer;
}
div.data_container > label {
font-family: "lato", "Open Sans", sans-serif;
font-weight: lighter;
}
div.data_container {
width: 100%;
height: 100%;
text-align: center;
padding-top: 30px;
padding-bottom: 30px;
}
div.data_container:hover {
box-shadow: 2px 2px 10px #ddd;
}
/*
* TODO: This may be at hostdevices.css
*/
.texto {
height: auto;
text-align: center;
}
h1.wizard {
padding: 0;
margin: 0;
}
h1.wizard a {
margin-left: -20px;
}
h1.wizard a:hover {
color: #fff;
}
#text_wizard {
font-weight: bolder;
text-decoration: none;
font-size: 24px;
}
div.arrow_box {
display: inline-block;
position: relative;
color: #888;
padding: 1.3em;
margin-left: 20px;
margin-bottom: 10px;
padding-left: 3em;
}
.arrow_box.selected {
background: #424242;
color: #ccc;
}
.arrow_box:after {
left: 0%;
border-left-color: white;
border-width: 20px;
margin-top: -20px;
}
div.arrow_box:before {
left: 100%;
border-left-color: #ccc;
border-width: 20px;
margin-top: -20px;
}
.arrow_box.selected:before {
border-left-color: #424242;
}
.arrow_box.selected:hover {
color: #fff;
}
.arrow_box:hover {
color: #000;
}
/*
* Breadcrum
*/
#menu_tab_frame_view_bc {
display: flex;
justify-content: space-between;
border-bottom: 2px solid #82b92e;
max-height: 70px;
min-height: 55px;
width: 100%;
padding-right: 0px;
margin-left: 0px;
margin-bottom: 20px;
height: 55px;
box-sizing: border-box;
background-color: #fafafa;
border-top-right-radius: 7px;
border-top-left-radius: 7px;
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1);
}
#menu_tab_frame_view_bc .breadcrumbs_container {
align-self: flex-start;
}
.breadcrumbs_container {
padding-top: 4px;
text-indent: 0.25em;
padding-left: 2.5em;
}
.breadcrumb_link {
color: #848484;
font-size: 10pt;
font-family: "lato-bolder", "Open Sans", sans-serif;
text-decoration: none;
}
span.breadcrumb_link {
color: #d0d0d0;
font-size: 12pt;
}
.breadcrumb_link.selected {
color: #95b750;
}
.breadcrumb_link.selected:hover {
color: #95b750;
}
.breadcrumb_link:hover {
color: #95b750;
}
/*
* Discovery forms structure
*/
form.discovery * {
font-size: 10pt;
}
form.discovery .label_select b {
font-family: "lato", "Open Sans", sans-serif;
font-weight: bolder;
}
.edit_discovery_info {
display: flex;
align-items: flex-start;
padding-top: 25px;
}
.edit_discovery_input {
align-items: center;
margin-bottom: 25px;
}
/*
* Discovery text inputs
*/
.discovery_label_hint {
display: flex;
}
label {
color: #343434;
font-weight: bold;
}
.discovery_full_width_input {
width: 100%;
}
li > input[type="text"],
li > input[type="email"],
li > input[type="password"],
li > input[type="email"],
.discovery_text_input > input[type="password"],
.discovery_text_input > input[type="text"],
#interval_manual > input[type="text"] {
background-color: transparent;
border: none;
border-radius: 0;
border-bottom: 1px solid #ccc;
font-family: "lato-bolder", "Open Sans", sans-serif;
font-weight: lighter;
padding: 0px 0px 2px 0px;
box-sizing: border-box;
margin-bottom: 4px;
}
#interval_manual > input[type="text"] {
width: 50px;
margin-left: 10px;
margin-right: 10px;
}
.discovery_list_input {
width: 100%;
border: 1px solid #cbcbcb;
overflow-y: auto;
}
.discovery_list_input option {
text-align: left;
}
.discovery_list_input option:checked {
background: #1aab8e -webkit-linear-gradient(bottom, #7db742 0%, #7db742 100%);
color: #fff;
}
.discovery_textarea_input {
background-color: #fbfbfb;
padding-left: 10px;
width: 100%;
height: 100px;
max-height: 100px;
max-width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
resize: none;
}
a.tip {
margin-left: 8px;
}
.inline_switch > label {
float: right;
}
.discovery_interval_select_width {
width: 90%;
}
a.ext_link {
margin-left: 1em;
font-size: 8pt;
}
div.ui-tooltip.ui-corner-all.ui-widget-shadow.ui-widget.ui-widget-content.uitooltip {
background: grey;
opacity: 0.9;
border-radius: 4px;
box-shadow: 6px 5px 9px -9px black;
padding: 6px;
}
.ui-tooltip-content {
background: transparent;
color: #fff;
font-weight: bold;
font-family: "lato-lighter", "Open Sans", sans-serif;
letter-spacing: 0.03pt;
font-size: 8pt;
}
.arrow {
width: 70px;
height: 16px;
overflow: hidden;
position: absolute;
left: 50%;
margin-left: -35px;
bottom: -16px;
}
.arrow.top {
top: -16px;
bottom: auto;
}
.arrow.left {
left: 50%;
}
.arrow:after {
background: grey;
content: "";
position: absolute;
left: 20px;
top: -20px;
width: 25px;
height: 25px;
box-shadow: 6px 5px 9px -9px black;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.arrow.top:after {
bottom: -20px;
top: auto;
}

View File

@ -5710,7 +5710,7 @@ div#status_pie {
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
padding: 1em; padding: 1em;
min-width: fit-content; min-width: 100%;
} }
.white_table_graph_content { .white_table_graph_content {
@ -5929,6 +5929,47 @@ table.table_modal_alternate tr td:first-child {
width: 101%; width: 101%;
} }
/*Font header feedback*/
form#modal_form_feedback {
padding: 10px;
}
form#modal_form_feedback label {
margin-bottom: 10px;
color: #343434;
font-weight: bold;
font-size: 10pt;
}
form#modal_form_feedback input[type="email"] {
background-color: transparent;
border: none;
border-radius: 0;
border-bottom: 1px solid #ccc;
font-family: "lato-bolder", "Open Sans", sans-serif;
font-weight: lighter;
padding: 0px 0px 2px 0px;
box-sizing: border-box;
margin-bottom: 4px;
}
form#modal_form_feedback ul.wizard li {
padding-bottom: 10px;
padding-top: 10px;
}
form#modal_form_feedback ul.wizard li > label:not(.p-switch) {
width: 250px;
vertical-align: top;
display: inline-block;
}
form#modal_form_feedback ul.wizard li > textarea {
width: 600px;
height: 15em;
display: inline-block;
font-family: monospace;
}
/* /*
* --------------------------------------------------------------------- * ---------------------------------------------------------------------
* - FONT SIZES IN AGENT VIEW. This changes the font size of the agent * - FONT SIZES IN AGENT VIEW. This changes the font size of the agent
@ -5940,3 +5981,12 @@ table.table_modal_alternate tr td:first-child {
font-size: 14px; font-size: 14px;
font-weight: bold; font-weight: bold;
} }
/* Generic classes to reuse and facilitate the creation of custom themes */
.pandora_green_text {
color: #82b92e;
}
.pandora_green_bg {
background-color: #82b92e;
}

View File

@ -129,7 +129,7 @@
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.740'; $version = '7.0NG.740';
$build = '191108'; $build = '191113';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);
@ -872,7 +872,16 @@ function install_step4()
$config["dbuser"]="pandora"; // DB User $config["dbuser"]="pandora"; // DB User
$config["dbpass"]="'.$random_password.'"; // DB Password $config["dbpass"]="'.$random_password.'"; // DB Password
$config["dbhost"]="'.$dbhost.'"; // DB Host $config["dbhost"]="'.$dbhost.'"; // DB Host
$config["homedir"]="'.$path.'"; // Config homedir $config["homedir"]="'.$path.'"; // Config homedir
// ----------Rebranding--------------------
// Uncomment this lines and add your customs text and paths.
// $config["custom_logo_login_alt"] ="login_logo.png";
// $config["custom_splash_login_alt"] = "splash_image_default.png";
// $config["custom_title1_login_alt"] = "WELCOME TO Pandora FMS";
// $config["custom_title2_login_alt"] = "NEXT GENERATION";
// $config["rb_product_name_alt"] = "Pandora FMS";
/* /*
----------Attention-------------------- ----------Attention--------------------
Please note that in certain installations: Please note that in certain installations:
@ -974,7 +983,15 @@ function install_step4()
$config["dbuser"]="pandora"; // DB User $config["dbuser"]="pandora"; // DB User
$config["dbpass"]="'.$random_password.'"; // DB Password $config["dbpass"]="'.$random_password.'"; // DB Password
$config["dbhost"]="'.$dbhost.'"; // DB Host $config["dbhost"]="'.$dbhost.'"; // DB Host
$config["homedir"]="'.$path.'"; // Config homedir $config["homedir"]="'.$path.'"; // Config homedir
// ----------Rebranding--------------------
// Uncomment this lines and add your customs text and paths.
// $config["custom_logo_login_alt"] ="login_logo.png";
// $config["custom_splash_login_alt"] = "splash_image_default.png";
// $config["custom_title1_login_alt"] = "WELCOME TO Pandora FMS";
// $config["custom_title2_login_alt"] = "NEXT GENERATION";
// $config["rb_product_name_alt"] = "Pandora FMS";
/* /*
----------Attention-------------------- ----------Attention--------------------
Please note that in certain installations: Please note that in certain installations:

View File

@ -432,7 +432,7 @@ if (!empty($addresses)) {
// $data_opcional = []; // $data_opcional = [];
$data_opcional[] = '<b>'.__('Other IP addresses').'</b>'; $data_opcional[] = '<b>'.__('Other IP addresses').'</b>';
if (!empty($addresses)) { if (!empty($addresses)) {
$data_opcional[] = '<div style="overflow-y: scroll;">'.implode('<br>', $addresses).'</div>'; $data_opcional[] = '<div style="overflow-y: scroll; max-height:50px;">'.implode('<br>', $addresses).'</div>';
} }
} }

View File

@ -372,7 +372,7 @@ if ($count_total >= 1) {
} }
if ($count_total < 1) { if ($count_total < 1) {
include_once $config['homedir'].'/general/firts_task/incidents.php'; include_once $config['homedir'].'/general/first_task/incidents.php';
} else { } else {
// TOTAL incidents // TOTAL incidents
$url = 'index.php?sec=workspace&amp;sec2=operation/incidents/incident'; $url = 'index.php?sec=workspace&amp;sec2=operation/incidents/incident';

View File

@ -36,7 +36,7 @@ if ($servers === false) {
$recon_task = db_get_all_rows_sql('SELECT * FROM trecon_task'); $recon_task = db_get_all_rows_sql('SELECT * FROM trecon_task');
if ($recon_task === false) { if ($recon_task === false) {
ui_print_page_header(__('Recon View'), 'images/op_recon.png', false, '', false); ui_print_page_header(__('Recon View'), 'images/op_recon.png', false, '', false);
include_once $config['homedir'].'/general/firts_task/recon_view.php'; include_once $config['homedir'].'/general/first_task/recon_view.php';
return; return;
} else { } else {
include_once $config['homedir'].'/include/functions_graph.php'; include_once $config['homedir'].'/include/functions_graph.php';

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.740 %define version 7.0NG.740
%define release 191108 %define release 191113
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.740 %define version 7.0NG.740
%define release 191108 %define release 191113
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.740 %define version 7.0NG.740
%define release 191108 %define release 191113
%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

View File

@ -3661,3 +3661,35 @@ CREATE TABLE `tdeployment_hosts` (
FOREIGN KEY (`target_agent_version_id`) REFERENCES `tagent_repository`(`id`) FOREIGN KEY (`target_agent_version_id`) REFERENCES `tagent_repository`(`id`)
ON UPDATE CASCADE ON DELETE SET NULL ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------------------------------------------------
-- Table `tremote_command`
-- ----------------------------------------------------------------------
CREATE TABLE `tremote_command` (
`id` SERIAL,
`name` varchar(150) NOT NULL,
`timeout` int(10) unsigned NOT NULL default 30,
`retries` int(10) unsigned NOT NULL default 3,
`preconditions` text,
`script` text,
`postconditions` text,
`utimestamp` int(20) unsigned NOT NULL default 0,
`id_group` int(10) unsigned NOT NULL default 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------------------------------------------------
-- Table `tremote_command_target`
-- ----------------------------------------------------------------------
CREATE TABLE `tremote_command_target` (
`id` SERIAL,
`rcmd_id` bigint unsigned NOT NULL,
`id_agent` int(10) unsigned NOT NULL,
`utimestamp` int(20) unsigned NOT NULL default 0,
`stdout` text,
`stderr` text,
`errorlevel` int(10) unsigned NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`rcmd_id`) REFERENCES `tremote_command`(`id`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -109,10 +109,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('custom_report_front_logo', 'images/pandora_logo_white.jpg'), ('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
('custom_report_front_header', ''), ('custom_report_front_header', ''),
('custom_report_front_footer', ''), ('custom_report_front_footer', ''),
('MR', 32), ('MR', 33),
('identification_reminder', 1), ('identification_reminder', 1),
('identification_reminder_timestamp', 0), ('identification_reminder_timestamp', 0),
('current_package_enterprise', '740'), ('current_package_enterprise', '741'),
('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'), ('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'),
('custom_docs_logo', 'default_docs.png'), ('custom_docs_logo', 'default_docs.png'),
('custom_support_logo', 'default_support.png'), ('custom_support_logo', 'default_support.png'),
@ -982,6 +982,13 @@ INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `t
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `history_data`, `min_warning`, `max_warning`, `str_warning`, `min_critical`, `max_critical`, `str_critical`, `min_ff_event`, `custom_string_1`, `custom_string_2`, `custom_string_3`, `custom_integer_1`, `custom_integer_2`, `post_process`, `wizard_level`, `critical_instructions`, `warning_instructions`, `unknown_instructions`, `tags`, `disabled_types_event`, `module_macros`) VALUES (783,'Check&#x20;Informix&#x20;Port','',19,9,0,0,300,1526,'','','public','',2,2,0,'','','',0,1,0.00,0.00,'',0.00,0.00,'',0,'','','',0,0,0.0000000000000,'basic','','','','','',''); INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `history_data`, `min_warning`, `max_warning`, `str_warning`, `min_critical`, `max_critical`, `str_critical`, `min_ff_event`, `custom_string_1`, `custom_string_2`, `custom_string_3`, `custom_integer_1`, `custom_integer_2`, `post_process`, `wizard_level`, `critical_instructions`, `warning_instructions`, `unknown_instructions`, `tags`, `disabled_types_event`, `module_macros`) VALUES (783,'Check&#x20;Informix&#x20;Port','',19,9,0,0,300,1526,'','','public','',2,2,0,'','','',0,1,0.00,0.00,'',0.00,0.00,'',0,'','','',0,0,0.0000000000000,'basic','','','','','','');
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `history_data`, `min_warning`, `max_warning`, `str_warning`, `min_critical`, `max_critical`, `str_critical`, `min_ff_event`, `custom_string_1`, `custom_string_2`, `custom_string_3`, `custom_integer_1`, `custom_integer_2`, `post_process`, `wizard_level`, `critical_instructions`, `warning_instructions`, `unknown_instructions`, `tags`, `disabled_types_event`, `module_macros`) VALUES (784,'Check&#x20;port&#x20;DB2','',49,9,0,0,300,50000,'','','public','',2,2,0,'','','',0,1,0.00,0.00,'',0.00,0.00,'',0,'','','',0,0,0.0000000000000,'basic','','','','','',''); INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `history_data`, `min_warning`, `max_warning`, `str_warning`, `min_critical`, `max_critical`, `str_critical`, `min_ff_event`, `custom_string_1`, `custom_string_2`, `custom_string_3`, `custom_integer_1`, `custom_integer_2`, `post_process`, `wizard_level`, `critical_instructions`, `warning_instructions`, `unknown_instructions`, `tags`, `disabled_types_event`, `module_macros`) VALUES (784,'Check&#x20;port&#x20;DB2','',49,9,0,0,300,50000,'','','public','',2,2,0,'','','',0,1,0.00,0.00,'',0.00,0.00,'',0,'','','',0,0,0.0000000000000,'basic','','','','','','');
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `str_warning`, `min_critical`, `max_critical`, `str_critical`, `min_ff_event`, `custom_string_1`, `custom_string_2`, `custom_string_3`, `custom_integer_1`, `custom_integer_2`, `post_process`, `unit`, `wizard_level`, `macros`, `critical_instructions`, `warning_instructions`, `unknown_instructions`, `critical_inverse`, `warning_inverse`, `id_category`, `tags`, `disabled_types_event`, `module_macros`, `min_ff_event_normal`, `min_ff_event_warning`, `min_ff_event_critical`, `each_ff`) VALUES (785,'Packet&#x20;Loss','Measure&#x20;packet&#x20;loss&#x20;in&#x20;the&#x20;network,&#x20;using&#x20;a&#x20;flood&#x20;ping&#x20;&#40;50&#x20;ping&#x20;in&#x20;8&#x20;secons&#41;&#x20;and&#x20;counting&#x20;back&#x20;missing&#x20;packets.&#x20;It&#x20;should&#x20;be&#x20;zero&#x20;on&#x20;most&#x20;cases.&#x20;',10,1,0,0,300,0,'','','','',2,4,9,'','','',0,0,1,10.00,0.00,'',30.00,0.00,'',0,'','','',0,0,0.00000,'%','nowizard','{\"1\":{\"macro\":\"_field1_\",\"desc\":\"Test&#x20;time\",\"help\":\"\",\"value\":\"8\",\"hide\":\"\"},\"2\":{\"macro\":\"_field2_\",\"desc\":\"Target&#x20;IP\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"}}','You&#x20;should&#x20;check&#x20;manually&#x20;the&#x20;packet&#x20;loss&#x20;of&#x20;the&#x20;network&#x20;with&#x20;a&#x20;flood&#x20;ping&#x20;on&#x20;targeted&#x20;host&#x20;&#40;ping&#x20;-c&#x20;100&#x20;-f&#x20;xxxx&#41;.&#x20;Aditionally,&#x20;and&#x20;due&#x20;the&#x20;major&#x20;packet&#x20;loss,&#x20;probably&#x20;you&#x20;can&#x20;see&#x20;a&#x20;simple&#x20;ping&#x20;failing&#x20;here.&#x20;Check&#x20;your&#x20;network&#x20;equipment.','You&#x20;should&#x20;check&#x20;manually&#x20;the&#x20;packet&#x20;loss&#x20;of&#x20;the&#x20;network&#x20;with&#x20;a&#x20;flood&#x20;ping&#x20;on&#x20;targeted&#x20;host&#x20;&#40;ping&#x20;-c&#x20;100&#x20;-f&#x20;xxxx&#41;','',0,0,0,'','{\"going_unknown\":0}','',0,0,0,0); INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `str_warning`, `min_critical`, `max_critical`, `str_critical`, `min_ff_event`, `custom_string_1`, `custom_string_2`, `custom_string_3`, `custom_integer_1`, `custom_integer_2`, `post_process`, `unit`, `wizard_level`, `macros`, `critical_instructions`, `warning_instructions`, `unknown_instructions`, `critical_inverse`, `warning_inverse`, `id_category`, `tags`, `disabled_types_event`, `module_macros`, `min_ff_event_normal`, `min_ff_event_warning`, `min_ff_event_critical`, `each_ff`) VALUES (785,'Packet&#x20;Loss','Measure&#x20;packet&#x20;loss&#x20;in&#x20;the&#x20;network,&#x20;using&#x20;a&#x20;flood&#x20;ping&#x20;&#40;50&#x20;ping&#x20;in&#x20;8&#x20;secons&#41;&#x20;and&#x20;counting&#x20;back&#x20;missing&#x20;packets.&#x20;It&#x20;should&#x20;be&#x20;zero&#x20;on&#x20;most&#x20;cases.&#x20;',10,1,0,0,300,0,'','','','',2,4,9,'','','',0,0,1,10.00,0.00,'',30.00,0.00,'',0,'','','',0,0,0.00000,'%','nowizard','{\"1\":{\"macro\":\"_field1_\",\"desc\":\"Test&#x20;time\",\"help\":\"\",\"value\":\"8\",\"hide\":\"\"},\"2\":{\"macro\":\"_field2_\",\"desc\":\"Target&#x20;IP\",\"help\":\"\",\"value\":\"\",\"hide\":\"\"}}','You&#x20;should&#x20;check&#x20;manually&#x20;the&#x20;packet&#x20;loss&#x20;of&#x20;the&#x20;network&#x20;with&#x20;a&#x20;flood&#x20;ping&#x20;on&#x20;targeted&#x20;host&#x20;&#40;ping&#x20;-c&#x20;100&#x20;-f&#x20;xxxx&#41;.&#x20;Aditionally,&#x20;and&#x20;due&#x20;the&#x20;major&#x20;packet&#x20;loss,&#x20;probably&#x20;you&#x20;can&#x20;see&#x20;a&#x20;simple&#x20;ping&#x20;failing&#x20;here.&#x20;Check&#x20;your&#x20;network&#x20;equipment.','You&#x20;should&#x20;check&#x20;manually&#x20;the&#x20;packet&#x20;loss&#x20;of&#x20;the&#x20;network&#x20;with&#x20;a&#x20;flood&#x20;ping&#x20;on&#x20;targeted&#x20;host&#x20;&#40;ping&#x20;-c&#x20;100&#x20;-f&#x20;xxxx&#41;','',0,0,0,'','{\"going_unknown\":0}','',0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (786,'N.&#x20;total&#x20;processes','Number&#x20;of&#x20;running&#x20;processes&#x20;in&#x20;a&#x20;Windows&#x20;system.',11,34,0,0,300,0,'tasklist&#x20;/NH&#x20;|&#x20;findstr&#x20;/c&#x20;/v&#x20;&quot;&quot;','','','',6,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','windows','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (787,'Free&#x20;space&#x20;in&#x20;C:','Free&#x20;space&#x20;available&#x20;in&#x20;C:',11,34,0,0,300,0,'powershell&#x20;$obj=&#40;Get-WmiObject&#x20;-class&#x20;&quot;Win32_LogicalDisk&quot;&#x20;-namespace&#x20;&quot;root&#92;CIMV2&quot;&#41;&#x20;;&#x20;$obj.FreeSpace&#x20;*&#x20;100&#x20;/$obj.Size','','','',4,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','windows','',0,0,0.000000000000000,'%','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (788,'Linux&#x20;uptime','System&#x20;uptime',43,36,0,0,300,0,'uptime&#x20;|sed&#x20;s/us&#92;.*$//g&#x20;|&#x20;sed&#x20;s/,&#92;.*$//g','','','',4,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (789,'Linux&#x20;processes','Running&#x20;processes',43,34,0,0,300,0,'ps&#x20;elf&#x20;|&#x20;wc&#x20;-l','','','',6,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (790,'Linux&#x20;system&#x20;load','Current&#x20;load&#x20;&#40;5&#x20;min&#41;',43,34,0,0,300,0,'uptime&#x20;|&#x20;awk&#x20;&#039;{print&#x20;$&#40;NF-1&#41;}&#039;&#x20;|&#x20;tr&#x20;-d&#x20;&#039;,&#039;','','','',6,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (791,'Linux&#x20;available&#x20;memory&#x20;percent','Available&#x20;memory&#x20;%',43,34,0,0,300,0,'free&#x20;|&#x20;grep&#x20;Mem&#x20;|&#x20;awk&#x20;&#039;{print&#x20;$NF/$2&#x20;*&#x20;100}&#039;','','','',4,2,0,'','','',0,0,1,0.00,0.00,'',0.00,0.00,'',0,'','linux','',0,0,0.000000000000000,'%','nowizard','','','','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
INSERT INTO `tnetwork_component` (`id_nc`, `name`, `description`, `id_group`, `type`, `max`, `min`, `module_interval`, `tcp_port`, `tcp_send`, `tcp_rcv`, `snmp_community`, `snmp_oid`, `id_module_group`, `id_modulo`, `id_plugin`, `plugin_user`, `plugin_pass`, `plugin_parameter`, `max_timeout`, `max_retries`, `history_data`, `min_warning`, `max_warning`, `max_critical`, `str_warning`, `min_ff_event`, `min_critical`, `custom_string_2`, `str_critical`, `custom_integer_1`, `custom_string_1`, `post_process`, `custom_string_3`, `wizard_level`, `custom_integer_2`, `critical_instructions`, `unit`, `unknown_instructions`, `macros`, `warning_inverse`, `warning_instructions`, `tags`, `critical_inverse`, `module_macros`, `id_category`, `min_ff_event_warning`, `disabled_types_event`, `ff_type`, `min_ff_event_normal`, `dynamic_interval`, `min_ff_event_critical`, `dynamic_min`, `each_ff`, `dynamic_two_tailed`, `dynamic_max`, `dynamic_next`) VALUES (792,'Linux&#x20;available&#x20;disk&#x20;/','Available&#x20;free&#x20;space&#x20;in&#x20;mountpoint&#x20;/',43,34,0,0,300,0,'df&#x20;/&#x20;|&#x20;tail&#x20;-n&#x20;+2&#x20;|&#x20;awk&#x20;&#039;{print&#x20;$&#40;NF-1&#41;}&#039;&#x20;|&#x20;tr&#x20;-d&#x20;&#039;%&#039;','','','',4,2,0,'','','',0,0,1,0.00,0.00,'0.00',0.00,0.00,'',0,'','inherited','',0,0,0.000000000000000,'','nowizard','','nowizard','0','',0,0,0,'','{\"going_unknown\":1}','',0,0,0,0,0,0,0,0,0,0);
-- --

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.740-191108 Version: 7.0NG.740-191113
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -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.740-191108" pandora_version="7.0NG.740-191113"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1
@ -80,7 +80,9 @@ then
mkdir -p temp_package/var/spool/pandora/data_in/netflow mkdir -p temp_package/var/spool/pandora/data_in/netflow
chmod 770 temp_package/var/spool/pandora/data_in/netflow chmod 770 temp_package/var/spool/pandora/data_in/netflow
mkdir -p temp_package/var/spool/pandora/data_in/trans mkdir -p temp_package/var/spool/pandora/data_in/trans
chmod 770 temp_package/var/spool/pandora/data_in/trans chmod 770 temp_package/var/spool/pandora/data_in/trans
mkdir -p temp_package/var/spool/pandora/data_in/commands
chmod 770 temp_package/var/spool/pandora/data_in/commands
mkdir -p temp_package/var/log/pandora/ mkdir -p temp_package/var/log/pandora/
chmod 754 temp_package/var/log/pandora/ chmod 754 temp_package/var/log/pandora/
mkdir -p temp_package/usr/share/pandora_server/conf/ mkdir -p temp_package/usr/share/pandora_server/conf/

View File

@ -156,6 +156,10 @@ wmiserver 1
network_timeout 4 network_timeout 4
# Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY).
rcmd_timeout 30
# Server keepalive (in seconds) # Server keepalive (in seconds)
server_keepalive 45 server_keepalive 45

View File

@ -21,7 +21,7 @@ daemon 1
# insecure 0 # insecure 0
# Filters (regexp:dir;regexp:dir...) # Filters (regexp:dir;regexp:dir...)
filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
# [-m] Maximum file size allowed by the server in bytes # [-m] Maximum file size allowed by the server in bytes
#max_size 2000000 #max_size 2000000

View File

@ -45,7 +45,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.740"; my $pandora_version = "7.0NG.740";
my $pandora_build = "191108"; my $pandora_build = "191113";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -602,8 +602,12 @@ sub process_xml_data ($$$$$) {
# Process events # Process events
process_events_dataserver($pa_config, $data, $agent_id, $group_id, $dbh); process_events_dataserver($pa_config, $data, $agent_id, $group_id, $dbh);
# Process disovery modules # Process discovery modules
enterprise_hook('process_discovery_data', [$pa_config, $data, $server_id, $dbh]); enterprise_hook('process_discovery_data', [$pa_config, $data, $server_id, $dbh]);
# Process command responses
enterprise_hook('process_rcmd_report', [$pa_config, $data, $server_id, $dbh, $agent_id, $timestamp]);
} }
########################################################################## ##########################################################################

View File

@ -32,7 +32,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.740"; my $pandora_version = "7.0NG.740";
my $pandora_build = "191108"; my $pandora_build = "191113";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );

Some files were not shown because too many files have changed in this diff Show More