App-MonM
view release on metacpan or search on metacpan
lib/App/MonM/Channel/File.pm view on Meta::CPAN
=head1 HISTORY
See C<Changes> file
=head1 DEPENDENCIES
L<Compress::Raw::Zlib>
=head1 TO DO
See C<TODO> file
=head1 SEE ALSO
L<Compress::Raw::Zlib>
=head1 AUTHOR
Serż Minus (Sergey Lepenkov) L<https://www.serzik.com> E<lt>abalama@cpan.orgE<gt>
=head1 COPYRIGHT
Copyright (C) 1998-2022 D&D Corporation. All Rights Reserved
=head1 LICENSE
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
See C<LICENSE> file and L<https://dev.perl.org/licenses/>
=cut
use vars qw/$VERSION/;
$VERSION = '1.00';
use File::Spec;
use CTK::ConfGenUtil;
use CTK::Util qw/ dformat date_time2dig date2dig /;
use App::MonM::Util qw/ set2attr /;
use constant {
FILEEXT => "msg",
FILEMASK => "[DATETIME]-[ID].[EXT]",
};
sub sendmsg {
my $self = shift;
return $self->maybe::next::method() unless $self->type eq 'file';
my $message = $self->message;
# Options
my $options = set2attr($self->chconf) || {};
#print App::MonM::Util::explain($options);
# File
my $filemask = value($self->chconf, "filemask") || value($self->chconf, "file") || FILEMASK;
my $filename = dformat($filemask, {
ID => $self->message->msgid,
TO => $self->message->to,
RCPT => $self->message->recipient, RECIPIENT => $self->message->recipient,
EXT => FILEEXT,
TIME => time(), DATETIME=> date_time2dig(), DATE => date2dig(),
});
my $dir = value($self->chconf, "directory") || value($self->chconf, "dir") || File::Spec->tmpdir;
my $file;
if (File::Spec->file_name_is_absolute($filename)) {
$file = $filename;
} else {
unless (-e $dir and -w $dir) {
$self->error(sprintf("Can't use directory: %s", $dir));
return 0;
}
$file = File::Spec->catfile($dir, $filename);
}
# Save
$message->save($file) or do {
$self->error($message->error);
return 0;
};
#printf "Send message %s to %s (%s) via %s\n", $self->message->msgid, $self->message->to, $self->message->recipient, $self->type;
return 1;
}
1;
__END__
( run in 0.485 second using v1.01-cache-2.11-cpan-5735350b133 )