diff options
| author | fukachan <fukachan> | 2001-10-14 22:25:31 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-10-14 22:25:31 +0000 |
| commit | 66aeaa26052779e1e5e654fee750e3075e5ee3c3 (patch) | |
| tree | 6b52871d3efcad7f43f5af411cd30b320faefaed | |
| parent | 739dc94e5f38ba2307acc982b7291e863df5cdfe (diff) | |
| download | fml8-66aeaa26052779e1e5e654fee750e3075e5ee3c3.tar.gz fml8-66aeaa26052779e1e5e654fee750e3075e5ee3c3.tar.bz2 fml8-66aeaa26052779e1e5e654fee750e3075e5ee3c3.zip | |
define @default_rules and use it if rules not specified
rules() method to overwrite filtering rules
| -rw-r--r-- | fml/lib/FML/Filter/BodyCheck.pm | 37 | ||||
| -rw-r--r-- | fml/lib/FML/Filter/HeaderCheck.pm | 35 |
2 files changed, 57 insertions, 15 deletions
diff --git a/fml/lib/FML/Filter/BodyCheck.pm b/fml/lib/FML/Filter/BodyCheck.pm index 5974c66b..9fd5d228 100644 --- a/fml/lib/FML/Filter/BodyCheck.pm +++ b/fml/lib/FML/Filter/BodyCheck.pm @@ -4,7 +4,7 @@ # All rights reserved. This program is free software; you can # redistribute it and/or modify it under the same terms as Perl itself. # -# $FML: BodyCheck.pm,v 1.6 2001/09/23 11:34:42 fukachan Exp $ +# $FML: BodyCheck.pm,v 1.7 2001/09/23 14:30:35 fukachan Exp $ # package FML::Filter::BodyCheck; @@ -35,16 +35,41 @@ usual constructor. my $debug = $ENV{'debug'} ? 1 : 0; +# default rules to apply +my (@default_rules) = qw(reject_not_iso2022jp_japanese_string + reject_null_mail_body + reject_one_line_message + reject_old_fml_command_syntax + reject_invalid_fml_command_syntax + reject_japanese_command_syntax + reject_ms_guid); + sub new { my ($self) = @_; my ($type) = ref($self) || $self; my $me = {}; + + # apply default rules + $me->{ _rules } = \@default_rules; + return bless $me, $type; } +=head2 C<rules( $rules )> + +overwrite rules by specified C<@$rules> ($rules is HASH ARRAY). + +=cut + +sub rules +{ + my ($self, $rarray) = @_; + $self->{ _rules } = $rarray; +} + =head2 C<body_check($msg, $args)> @@ -95,14 +120,8 @@ sub body_check ## $self->_clean_up_buffer($m); ## 6. main fules - for my $rule (qw(reject_not_iso2022jp_japanese_string - reject_null_mail_body - reject_one_line_message - reject_old_fml_command_syntax - reject_invalid_fml_command_syntax - reject_japanese_command_syntax - reject_ms_guid - )) { + my $rules = $self->{ _rules }; + for my $rule (@$rules) { if ($self->can($rule)) { eval q{ $self->$rule($msg, $args, $m); diff --git a/fml/lib/FML/Filter/HeaderCheck.pm b/fml/lib/FML/Filter/HeaderCheck.pm index 0a6b08fb..af513e8b 100644 --- a/fml/lib/FML/Filter/HeaderCheck.pm +++ b/fml/lib/FML/Filter/HeaderCheck.pm @@ -4,7 +4,7 @@ # All rights reserved. This program is free software; you can # redistribute it and/or modify it under the same terms as Perl itself. # -# $FML: HeaderCheck.pm,v 1.4 2001/08/05 14:07:08 fukachan Exp $ +# $FML: HeaderCheck.pm,v 1.5 2001/09/23 09:30:28 fukachan Exp $ # package FML::Filter::HeaderCheck; @@ -36,16 +36,36 @@ usual constructor. my $debug = $ENV{'debug'} ? 1 : 0; +my (@default_rules) = qw(is_valid_message_id); + + sub new { my ($self) = @_; my ($type) = ref($self) || $self; my $me = {}; + + # apply default rules + $me->{ _rules } = \@default_rules; + return bless $me, $type; } +=head2 C<rules( $rules )> + +overwrite rules by specified C<@$rules> ($rules is HASH ARRAY). + +=cut + +sub rules +{ + my ($self, $rarray) = @_; + $self->{ _rules } = $rarray; +} + + =head2 C<header_check($msg, $args)> C<$msg> is C<Mail::Message> object. @@ -68,13 +88,16 @@ sub header_check { my ($self, $msg, $args) = @_; my $h = $msg->rfc822_message_header(); + my $rules = $self->{ _rules }; - eval q{ - $self->is_valid_message_id($h, $args); - }; + for my $rule (@$rules) { + eval q{ + $self->$rule($h, $args); + }; - if ($@) { - $self->error_set($@); + if ($@) { + $self->error_set($@); + } } } |
