diff options
| -rw-r--r-- | fml/etc/default_config.cf.ja | 9 | ||||
| -rw-r--r-- | fml/etc/defaults/header.cf.ja | 7 | ||||
| -rw-r--r-- | fml/lib/FML/Header.pm | 13 | ||||
| -rw-r--r-- | fml/lib/FML/Process/Distribute.pm | 1 | ||||
| -rw-r--r-- | fml/lib/FML/Process/Flow.pm | 4 | ||||
| -rw-r--r-- | fml/lib/FML/Process/Kernel.pm | 18 |
6 files changed, 37 insertions, 15 deletions
diff --git a/fml/etc/default_config.cf.ja b/fml/etc/default_config.cf.ja index c2eca64f..9fd75d55 100644 --- a/fml/etc/default_config.cf.ja +++ b/fml/etc/default_config.cf.ja @@ -108,10 +108,9 @@ use_header_rewrite = yes use_header_check = yes - -header_check_rules = validate_message_id - verify_unique_x_ml_info - verify_unique_list_post +header_check_rules = verify_message_id_uniqueness + verify_x_ml_info_uniqueness + verify_list_post_uniqueness # もちろん”記事”に対してのものだ(自明?) # article_header_rewrite_rules とかの方がよいか? @@ -168,7 +167,7 @@ use_log = yes # logfile # XXX 特別な使い方として log.%Y%m%d とかくと log.20000101 のように # 展開される。これは、POSIX::strftime() を使っている。 -log_file = $ml_home_dir/log.%Y%m +log_file = $ml_home_dir/log # type of logging # value: file / syslog diff --git a/fml/etc/defaults/header.cf.ja b/fml/etc/defaults/header.cf.ja index 4a4814b7..68f36482 100644 --- a/fml/etc/defaults/header.cf.ja +++ b/fml/etc/defaults/header.cf.ja @@ -4,10 +4,9 @@ use_header_rewrite = yes use_header_check = yes - -header_check_rules = validate_message_id - verify_unique_x_ml_info - verify_unique_list_post +header_check_rules = verify_message_id_uniqueness + verify_x_ml_info_uniqueness + verify_list_post_uniqueness # もちろん”記事”に対してのものだ(自明?) # article_header_rewrite_rules とかの方がよいか? diff --git a/fml/lib/FML/Header.pm b/fml/lib/FML/Header.pm index a8087601..b1c2b742 100644 --- a/fml/lib/FML/Header.pm +++ b/fml/lib/FML/Header.pm @@ -35,7 +35,7 @@ use Mail::Header; use FML::Log qw(Log); require Exporter; -@ISA = qw(Exporter Mail::Header); +@ISA = qw(Mail::Header Exporter); sub new @@ -151,10 +151,13 @@ sub rewrite_subject_tag my ($header, $config, $args) = @_; my $pkg = "FML::Header::Subject"; - eval qq{ require $pkg}; $pkg->import(); - - # subject tag - $pkg->rewrite_subject_tag($header, $config, $args); + eval qq{ require $pkg; $pkg->import();}; + unless ($@) { + $pkg->rewrite_subject_tag($header, $config, $args); + } + else { + Log("Error: cannot load $pkg"); + } } diff --git a/fml/lib/FML/Process/Distribute.pm b/fml/lib/FML/Process/Distribute.pm index 2652386a..c8568544 100644 --- a/fml/lib/FML/Process/Distribute.pm +++ b/fml/lib/FML/Process/Distribute.pm @@ -58,6 +58,7 @@ sub verify_request { my ($curproc, $args) = @_; $curproc->verify_sender_credential(); + $curproc->simple_loop_check(); } diff --git a/fml/lib/FML/Process/Flow.pm b/fml/lib/FML/Process/Flow.pm index e01bddb2..d88d11d0 100644 --- a/fml/lib/FML/Process/Flow.pm +++ b/fml/lib/FML/Process/Flow.pm @@ -69,7 +69,9 @@ sub ProcessStart # e.g. parse the incoming message (e.g. STDIN) $process->prepare($args); - # validate the request e.g. permit post from the sender ... + # validate the request, for example, + # permit post from the sender, + # check the mail loop or not ... $process->verify_request($args); # start main transaction diff --git a/fml/lib/FML/Process/Kernel.pm b/fml/lib/FML/Process/Kernel.pm index 2fe7ded3..83110fde 100644 --- a/fml/lib/FML/Process/Kernel.pm +++ b/fml/lib/FML/Process/Kernel.pm @@ -197,6 +197,24 @@ sub sender_is_member } +sub simple_loop_check +{ + my ($curproc, $args) = @_; + my $config = $curproc->{ config }; + my $r_msg = $curproc->{ incoming_message }; + my $header = $r_msg->{ header }; + + for my $rule (split(/\s+/, $config->{ header_check_rules })) { + if ($header->can($rule)) { + $header->$rule($config, $args); + } + else { + Log("header->${rule}() is undefined"); + } + } +} + + # fml5::init_main() routine sub load_config_files { |
