#-*- perl -*- # # Copyright (C) 2006 Ken'ichi Fukamachi # All rights reserved. This program is free software; you can # redistribute it and/or modify it under the same terms as Perl itself. # # $FML: Envelope.pm,v 1.2 2006/07/09 12:11:12 fukachan Exp $ # package FML::Envelope; use strict; use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); use Carp; =head1 NAME FML::Envelope - provide envelope based operations. =head1 SYNOPSIS =head1 DESCRIPTION =head1 METHODS =head2 new() constructor. =cut # Descriptions: constructor # Arguments: OBJ($self) OBJ($curproc) # Side Effects: none # Return Value: OBJ sub new { my ($self, $curproc) = @_; my ($type) = ref($self) || $self; my $me = { _curproc => $curproc }; return bless $me, $type; } =head2 check_envelope_sender() check if the envelope sender is not our maintainer. =cut # Descriptions: check if the envelope sender is not our maintainer. # Arguments: OBJ($self) # Side Effects: none # Return Value: NUM(1 or 0) sub check_envelope_sender { my ($self) = @_; my $curproc = $self->{ _curproc }; my $message = $curproc->incoming_message(); my $config = $curproc->config(); # ASSERT: null envelope sender is invalid. my $envelope_sender = $message->envelope_sender() || ''; unless ($envelope_sender) { return 0; } # compare the envelope sender with our maintainer. my $maintainer = $config->{ maintainer } || ''; if ($maintainer) { use FML::Credential; my $cred = new FML::Credential $curproc; if ($cred->is_same_address($maintainer, $envelope_sender, 128)) { $curproc->logerror("envelope sender == maintainer"); return 1; } else { return 0; } } return 0; } =head1 ACCESS METHODS =head2 set_checksum_type($type) set checksum method type. =head2 get_checksum_type() get checksum method type. return 'md5' by default. =cut my $gloval_default_checksum_type = 'md5'; # Descriptions: set checksum method type. # Arguments: OBJ($self) STR($type) # Side Effects: update $self # Return Value: none sub set_checksum_type { my ($self, $type) = @_; if ($type eq 'md5') { $self->{ _type } = $type; } else { my $curproc = $self->{ _curproc }; $curproc->logerror("unsupported checksum: $type"); } } # Descriptions: return checksum method type. # Arguments: OBJ($self) # Side Effects: none # Return Value: STR sub get_checksum_type { my ($self) = @_; return( $self->{ _type } || $gloval_default_checksum_type ); } =head1 CODING STYLE See C on fml coding style guide. =head1 AUTHOR Ken'ichi Fukamachi =head1 COPYRIGHT Copyright (C) 2006 Ken'ichi Fukamachi All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 HISTORY FML::Envelope appeared in fml8 mailing list driver package. See C for more details. =cut 1;