package Mail::SpamAssassin::Reporter;
use strict;
use warnings;
use bytes;
use POSIX ":sys_wait_h";
use Mail::SpamAssassin::Logger;
use vars qw{
@ISA $VERSION
};
@ISA = qw();
$VERSION = 'bogus';
sub new {
my $class = shift;
$class = ref($class) || $class;
my ($main, $msg, $options) = @_;
my $self = {
'main' => $main,
'msg' => $msg,
'options' => $options,
'conf' => $main->{conf},
};
bless($self, $class);
my $permsgstatus =
Mail::SpamAssassin::PerMsgStatus->new($self->{main}, $msg);
$msg->extract_message_metadata ($permsgstatus);
$permsgstatus->finish();
$self;
}
sub report {
my ($self) = @_;
$self->{report_return} = 0;
$self->{report_available} = 0;
my $text = $self->{main}->remove_spamassassin_markup($self->{msg});
$self->{main}->call_plugins("plugin_report", { report => $self, text => \$text, msg => $self->{msg} });
$self->delete_fulltext_tmpfile();
if ($self->{report_available} == 0) {
warn "reporter: no reporting methods available, so couldn't report\n";
}
return $self->{report_return};
}
sub revoke {
my ($self) = @_;
$self->{revoke_return} = 0;
$self->{revoke_available} = 0;
my $text = $self->{main}->remove_spamassassin_markup($self->{msg});
$self->{main}->call_plugins("plugin_revoke", { revoke => $self, text => \$text, msg => $self->{msg} });
if ($self->{revoke_available} == 0) {
warn "reporter: no revoke methods available, so couldn't revoke\n";
}
return $self->{revoke_return};
}
sub close_pipe_fh {
my ($self, $fh) = @_;
return if close ($fh);
my $exitstatus = $?;
dbg("reporter: raw exit code: $exitstatus");
if (WIFEXITED ($exitstatus) && (WEXITSTATUS ($exitstatus))) {
die "reporter: exited with non-zero exit code " . WEXITSTATUS($exitstatus) . "\n";
}
if (WIFSIGNALED ($exitstatus)) {
die "reporter: exited due to signal " . WTERMSIG($exitstatus) . "\n";
}
}
sub create_fulltext_tmpfile {
Mail::SpamAssassin::PerMsgStatus::create_fulltext_tmpfile(@_);
}
sub delete_fulltext_tmpfile {
Mail::SpamAssassin::PerMsgStatus::delete_fulltext_tmpfile(@_);
}
sub enter_helper_run_mode {
Mail::SpamAssassin::PerMsgStatus::enter_helper_run_mode(@_);
}
sub leave_helper_run_mode {
Mail::SpamAssassin::PerMsgStatus::leave_helper_run_mode(@_);
}
1;