summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-10-14 22:25:31 +0000
committerfukachan <fukachan>2001-10-14 22:25:31 +0000
commit66aeaa26052779e1e5e654fee750e3075e5ee3c3 (patch)
tree6b52871d3efcad7f43f5af411cd30b320faefaed
parent739dc94e5f38ba2307acc982b7291e863df5cdfe (diff)
downloadfml8-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.pm37
-rw-r--r--fml/lib/FML/Filter/HeaderCheck.pm35
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($@);
+ }
}
}