ASNMTAP
view release on metacpan or search on metacpan
lib/ASNMTAP/Asnmtap/Plugins/Mail.pm view on Meta::CPAN
print " $label : $self->{_text}->{to} $self->{_mail}->{to}\n" if ($debug);
unless ( $toNotFound ) { $fingerprintFound--; next; }
}
}
if ( $subjectNotFound ) {
if ($msgline =~ /^$self->{_text}->{subject}/) {
print "Subject . : $msgline\n" if ($debug);
$subjectNotFound = ( $msgline !~ /^$self->{_text}->{subject}\s+$self->{_subject_}/ ? 1 : 0 );
my $label = $subjectNotFound ? ' (?)' : '(match)';
print " $label : $self->{_text}->{subject} $self->{_subject_}\n" if ($debug);
unless ( $subjectNotFound ) { $fingerprintFound--; next; }
}
}
}
unless ( $fromNotFound or $toNotFound or $subjectNotFound ) {
print "\n", ref ($self), "::receiving_fingerprint_mails(): BODY\n" if ($debug);
if ( defined $self->{_IMAP4}->{imap4} ) {
use Email::Simple;
my $mail = Email::Simple->new( join ( '', @{ $email->get ( $msgnum ) } ) );
$msgbuffer = $mail->body;
} elsif ( defined $self->{_POP3}->{pop3} ) {
$msgbuffer = $email->Body ( $msgnum );
}
use MIME::Decoder;
unless ( supported MIME::Decoder $head->mime_encoding ) {
print "MIME .... : '". $head->mime_encoding ."' encoding is not supported!\n" if ($debug );
$returnCode = $ERRORS{UNKNOWN};
$$asnmtapInherited->pluginValues ( { stateValue => $returnCode, error => "MIME-Encoding: '". $head->mime_encoding ."' is not supported!" }, $TYPE{APPEND} );
next;
}
# if ( $head->mime_encoding eq 'quoted-printable' or $head->mime_encoding eq '7bit' or $head->mime_encoding eq '8bit' ) {
if ( $head->mime_encoding eq '7bit' ) {
$msgbuffer = MIME::QuotedPrint::decode($msgbuffer);
} else {
use IO::String;
my $ioIN = IO::String->new($msgbuffer);
my $ioOUT = IO::String->new($msgbuffer);
my $decoder = new MIME::Decoder $head->mime_encoding;
$decoder->decode($ioIN, $ioOUT);
$ioIN->close;
$ioOUT->close;
}
if ( $parms{checkFingerprint} ) {
foreach my $msgline ( split (/[\n\r]/, $msgbuffer) ) {
next unless ( $msgline );
last unless ( $self->{_mailType} ? $xmlNotFound : $fingerprintFound );
if ( $self->{_mailType} ) {
if ( $msgline =~ /\Q$fingerprintXML\E/ ) {
$xmlNotFound = 0; $fingerprintFound--;
print "XML ..... : $msgline\n (match) : $msgline\n" if ( $debug );
my ( $returnCode, $xml ) = extract_XML ( asnmtapInherited => $self->{_asnmtapInherited}, resultXML => $msgline, headerXML => HEADER, footerXML => FOOTER, validateDTD => 0, filenameDTD => SYSTEM );
unless ( $returnCode ) {
if ( $xml->{Fingerprint}{From} =~ /^$self->{_mail}->{from}/ and $xml->{Fingerprint}{To} =~ /^$self->{_mail}->{to}/ and $xml->{Fingerprint}{Destination} eq 'ASNMTAP' and $xml->{Fingerprint}{Plugin} eq $$asnmtapInherited->{_programN...
use Date::Calc qw(check_date);
$self->{defaultArguments}->{date} = 0;
$self->{defaultArguments}->{year} = 0;
$self->{defaultArguments}->{month} = 0;
$self->{defaultArguments}->{day} = 0;
$self->{defaultArguments}->{time} = 0;
$self->{defaultArguments}->{hour} = 0;
$self->{defaultArguments}->{min} = 0;
$self->{defaultArguments}->{sec} = 0;
my $currentTimeslot = timelocal ( (localtime)[0,1,2,3,4,5] );
my ($checkEpochtime, $checkDate, $checkTime) = ($xml->{Fingerprint}{Epochtime}, $xml->{Fingerprint}{Date}, $xml->{Fingerprint}{Time});
my ($checkYear, $checkMonth, $checkDay) = split (/\/|-/, $checkDate);
my ($checkHour, $checkMin, $checkSec) = split (/:/, $checkTime);
my $xmlEpochtime = timelocal ( $checkSec, $checkMin, $checkHour, $checkDay, ($checkMonth-1), ($checkYear-1900) );
print "$checkEpochtime, $xmlEpochtime ($checkDate, $checkTime), $currentTimeslot - $checkEpochtime = ". ($currentTimeslot - $checkEpochtime) ." > ". $parms{outOfDate} ."\n" if ( $debug );
unless ( check_date ( $checkYear, $checkMonth, $checkDay) or check_time($checkHour, $checkMin, $checkSec ) ) {
$returnCode = $ERRORS{CRITICAL};
$$asnmtapInherited->pluginValues ( { stateValue => $returnCode, alert => "Date or Time into Fingerprint XML are wrong: $checkDate $checkTime" }, $TYPE{APPEND} );
} elsif ( $checkEpochtime != $xmlEpochtime ) {
$returnCode = $ERRORS{CRITICAL};
$$asnmtapInherited->pluginValues ( { stateValue => $returnCode, alert => "Epochtime difference from Date and Time into Fingerprint XML are wrong: $checkEpochtime != $xmlEpochtime ($checkDate $checkTime)" }, $TYPE{APPEND} );
} elsif ( $currentTimeslot - $checkEpochtime > $parms{outOfDate} * 2 ) {
$returnCode = $ERRORS{CRITICAL};
$$asnmtapInherited->pluginValues ( { stateValue => $returnCode, alert => "Result into Fingerprint XML are out of date: $checkDate $checkTime" }, $TYPE{APPEND} );
} elsif ( $currentTimeslot - $checkEpochtime > $parms{outOfDate} ) {
$returnCode = $ERRORS{WARNING};
$$asnmtapInherited->pluginValues ( { stateValue => $returnCode, alert => "Result into Fingerprint XML are out of date: $checkDate $checkTime" }, $TYPE{APPEND} );
} else {
($self->{defaultArguments}->{date}, $self->{defaultArguments}->{time}) = ($checkDate, $checkTime);
($self->{defaultArguments}->{day}, $self->{defaultArguments}->{month}, $self->{defaultArguments}->{year}) = split(/[\/|-]/, $checkDate);
($self->{defaultArguments}->{hour}, $self->{defaultArguments}->{min}, $self->{defaultArguments}->{sec}) = split(/:/, $checkTime);
}
$statusNotFound = ( $xml->{Fingerprint}{Status} ne $self->{_mail}->{status} );
my $label = $statusNotFound ? ' (?)' : '(match)';
print " $label : $self->{_text}->{status} < $self->{_mail}->{status} >\n" if ( $debug );
unless ( $statusNotFound ) { $fingerprintFound--; last; }
} else {
if ( $debug ) {
my $label = ( $xml->{Fingerprint}{From} =~ /^$self->{_mail}->{from}/ ? '(match)' : ' (?)' );
print " $label : $self->{_text}->{status} < $self->{_mail}->{status} >\n";
$label = ( $xml->{Fingerprint}{From} =~ /^$self->{_mail}->{from}/ ? '(match)' : ' (?)' );
print " $label : From ". $xml->{Fingerprint}{From} ."\n";
$label = ( $xml->{Fingerprint}{To} =~ /^$self->{_mail}->{to}/ ? '(match)' : ' (?)' );
print " $label : To ". $xml->{Fingerprint}{To} ."\n";
$label = ( $xml->{Fingerprint}{Destination} eq 'ASNMTAP' ? '(match)' : ' (?)' );
print " $label : Destination ". $xml->{Fingerprint}{Destination} ."\n";
$label = ( $xml->{Fingerprint}{Plugin} eq $$asnmtapInherited->{_programName} ? '(match)' : ' (?)' );
print " $label : Plugin ". $xml->{Fingerprint}{Plugin} ."\n";
$label = ( $xml->{Fingerprint}{Description} eq $$asnmtapInherited->{_programDescription} ? '(match)' : ' (?)' );
print " $label : Description ". $xml->{Fingerprint}{Description} ."\n";
$label = ( $xml->{Fingerprint}{Environment} =~ /^$self->{_environment_}/i ? '(match)' : ' (?)' );
print " $label : Environment ". $xml->{Fingerprint}{Environment} ."\n";
( run in 0.731 second using v1.01-cache-2.11-cpan-39bf76dae61 )