Merge branch 'ent-9509-agregar-mensaje-notificacion-de-omnishell-si-falta-libreria' into 'develop'

Omnishell error xml if YAML::Tiny not installed on agent

See merge request artica/pandorafms!5529
This commit is contained in:
Rafael Ameijeiras 2023-02-14 17:00:13 +00:00
commit f4c94e2a86
2 changed files with 69 additions and 19 deletions

View File

@ -556,30 +556,38 @@ BEGIN {
sub runCommand { sub runCommand {
my ($self, $ref, $output_mode) = @_; my ($self, $ref, $output_mode) = @_;
my $result;
if($self->load_libraries()) { if($self->load_libraries()) {
# Functionality possible. # Functionality possible.
my $command = $self->{'commands'}->{$ref}; my $command = $self->{'commands'}->{$ref};
my $result = $self->evaluate_command($ref); $result = $self->evaluate_command($ref);
if (ref($result) eq "HASH") { } else {
# Process command result. $result = {
if (defined($output_mode) && $output_mode eq 'xml') { 'stderr' => 'Cannot use commands without YAML dependency, please install it.',
my $output = ''; 'name' => 'YAML::Tiny',
$output .= "<cmd_report>\n"; 'error_level' => 2,
$output .= " <cmd_response>\n"; };
$output .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n"; }
$output .= " <cmd_key><![CDATA[".$ref."]]></cmd_key>\n";
$output .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
$output .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
$output .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
$output .= " </cmd_response>\n";
$output .= "</cmd_report>\n";
return $output; if (ref($result) eq "HASH") {
} # Process command result.
return $result; if (defined($output_mode) && $output_mode eq 'xml') {
} else { my $output = '';
$self->set_last_error('Failed to process ['.$ref.']: '.$result); $output .= "<cmd_report>\n";
$output .= " <cmd_response>\n";
$output .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n";
$output .= " <cmd_key><![CDATA[".$ref."]]></cmd_key>\n";
$output .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
$output .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
$output .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
$output .= " </cmd_response>\n";
$output .= "</cmd_report>\n";
return $output;
} }
return $result;
} else {
$self->set_last_error('Failed to process ['.$ref.']: '.$result);
} }
return undef; return undef;

View File

@ -258,6 +258,14 @@ class ConsoleSupervisor
$this->checkSyncQueueStatus(); $this->checkSyncQueueStatus();
} }
/*
* Checkc agent missing libraries.
* NOTIF.AGENT.LIBRARY
*/
if ((bool) enterprise_installed() === true) {
$this->checkLibaryError();
}
} }
@ -518,6 +526,14 @@ class ConsoleSupervisor
$this->checkSyncQueueLength(); $this->checkSyncQueueLength();
$this->checkSyncQueueStatus(); $this->checkSyncQueueStatus();
} }
/*
* Checkc agent missing libraries.
* NOTIF.AGENT.LIBRARY
*/
if ((bool) enterprise_installed() === true) {
$this->checkLibaryError();
}
} }
@ -2806,4 +2822,30 @@ class ConsoleSupervisor
} }
/**
* Chechs if an agent has a dependency eror on omnishell
*
* @return void
*/
public function checkLibaryError()
{
$sql = 'SELECT COUNT(errorlevel) from tremote_command_target WHERE errorlevel = 2';
$error_dependecies = db_get_sql($sql);
if ($error_dependecies > 0) {
$this->notify(
[
'type' => 'NOTIF.AGENT.LIBRARY',
'title' => __('Agent dependency error'),
'message' => __(
'There are omnishell agents with dependency errors',
),
'url' => '__url__/index.php?sec=gextensions&sec2=enterprise/tools/omnishell',
]
);
}
}
} }