Group
Extension

Armadito-Prelude/lib/Armadito/Prelude/HTTP/Client/ArmaditoAV/Event/StatusEvent.pm

package Armadito::Prelude::HTTP::Client::ArmaditoAV::Event::StatusEvent;

use strict;
use warnings;
use base 'Armadito::Prelude::HTTP::Client::ArmaditoAV::Event';
use JSON;
use Data::Dumper;
use Armadito::Prelude::IDMEF qw( setAnalyzer setClassification setTarget setAssessment setAdditionalData );
use Armadito::Prelude::Tools::Time qw ( FormatTimestamp );

sub new {
	my ( $class, %params ) = @_;

	my $self = $class->SUPER::new(%params);

	$self->{idmef} = Armadito::Prelude::IDMEF->new();

	return $self;
}

sub _sendToPrelude {
	my ( $self, $message ) = @_;

	$self->{prelude_client}->{client}->sendIDMEF( $self->{idmef}->{obj} );

	return $self;
}

sub _setIDMEF {
	my ( $self, $message ) = @_;

	$self->{idmef}->setAnalyzer();

	if ( $self->{jobj}->{global_status} eq "up-to-date" ) {
		$self->{idmef}->setClassification( text => "Armadito Antivirus is up-to-date" );
		$self->{idmef}->setAssessment( impact_severity => "info" );
	}
	else {
		$self->{idmef}->setClassification( info => "Armadito Antivirus must be updated" );
		$self->{idmef}->setAssessment( impact_severity => "high" );
	}

	$self->{idmef}->setAssessment(
		impact_type        => "other",
		impact_completion  => "succeeded",
		impact_description => "Status for Armadito antivirus"
	);

	$self->{idmef}->setAdditionalData(
		i       => 0,
		type    => "string",
		meaning => "Antivirus status",
		data    => $self->{jobj}->{global_status}
	);

	$self->{idmef}->setAdditionalData(
		i       => 1,
		type    => "string",
		meaning => "Last update state",
		data    => FormatTimestamp( $self->{jobj}->{global_update_timestamp} )
	);

	return $self;
}

sub run {
	my ( $self, %params ) = @_;

	$self->_setIDMEF();
	$self->_sendToPrelude();
	$self->{end_polling} = 1;

	return $self;
}
1;

__END__

=head1 NAME

Armadito::Prelude::HTTP::Client::ArmaditoAV::Event::StatusEvent - ArmaditoAV StatusEvent class

=head1 DESCRIPTION

This is the class dedicated to StatusEvent of ArmaditoAV api.

=head1 FUNCTIONS

=head2 run ( $self, %params )

Run event related stuff. Send ArmaditoAV status to Armadito Plugin for GLPI.

=head2 new ( $class, %params )

Instanciate this class.


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.